feat(ttl): Set fan speed in Script A, archive job logs to USB in C
config.ttl gains FAN_SPEED (30). Script A rebinds the two max31790 controllers (18-0020, 25-0020) and applies the speed with fan-speed-control.sh, answering its confirmation prompt, so a run starts from a known thermal state rather than whatever the last test left. Script A also clears /host/hw-eval/current/jobs before the run, and Script C copies that directory to /mnt/usb/jobs-<date>_<time> so the bgctl job logs leave the DUT with the run they belong to. Fix: 25-0020 was bound twice in a row -- the second bind can only fail, since the driver is already attached. Removed; the two controllers now have a matching unbind/sleep/bind each. Script A -> V1.0.7, history covering the config.ttl and Script C changes as well. Docs: fan control and the job-log archive added to Tech Stack, Key Features and Data Flow; the config.ttl example refreshed with FAN_SPEED and the SWB_UNIT flags. Three risks recorded in Future Extensions -- `rm` without -r cannot clear the job subdirectories that Script C copies with -r, the fan confirmation wait has no timeout and would hang silently if the prompt ever changes, and /mnt/usb is never checked for being mounted. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014RetWKFZFG1ZHcitQAyhwM
This commit is contained in:
+25
-6
@@ -40,7 +40,8 @@ LTC2980 margin 控制器。TTL 只負責「按順序 `sendln` 並把畫面收進
|
||||
| BMC 存取 | host 端 `bmc-manager run "<cmd>"`(不需對 BMC 開 SSH,繞開其 busybox 工具鏈);`bmc-first-enroll` / `bmc-manager version\|status` |
|
||||
| 背景工作管理 | `bgctl run/list/stop --all/reset`(平台工具);長時間 ping 用 `systemd-run --unit=` 掛成 transient unit |
|
||||
| 管理網路 | iproute2(`ip link set` / `ip address replace` / `ip route replace ... metric`)+ `ping -I` |
|
||||
| 測試 session | `hw-test-session start\|log\|status\|finish` |
|
||||
| 測試 session | `hw-test-session start\|log\|status\|finish`;job log 收在 `/host/hw-eval/current/jobs/` |
|
||||
| 風扇控制 | max31790 driver rebind(`/sys/bus/i2c/drivers/max31790/{bind,unbind}`)+ `fan-speed-control.sh <%>` |
|
||||
| 壓力測試 | `mlucas-avx2`(AMD CPU)、`bgctl run` 排程的 `memtester` / `qfx5252-stress-ssd` / `qfx5252-stress-usb` |
|
||||
| 資料面流量 | `bcmcmd`(Broadcom drivshell)VLAN loopback + `tx` burst,switch unit 0 / 1 |
|
||||
| 流量報表 | DUT 上 awk(`blanton_traffic_linespeed report`);離線 `python3 tools/bcm_mibpair_report_V1.1.0.py` |
|
||||
@@ -200,15 +201,20 @@ Blanton_TTL_Script/
|
||||
### 1. `config.ttl` — 全域測試參數(TTL 變數)
|
||||
|
||||
```ini
|
||||
strTestcase = "Margin" ; 測項名,進 log 檔名
|
||||
project_name = "Blanton" ; 專案名,進 log 檔名
|
||||
EN_Margin = 1 ; 1=跑 margin 掃描, 0=跳過
|
||||
strTestcase = "ENV" ; 測項名(ENV/EMC/Margin...),進 log 檔名
|
||||
EN_Margin = 0 ; 1=跑 margin 掃描, 0=跳過
|
||||
EN_log = 1 ; 1=logopen 存檔, 0=不存
|
||||
FAN_SPEED = 30 ; 傳給 fan-speed-control.sh 的風扇轉速 (%)
|
||||
SWB_UNIT0 = 1 ; 這台有 switch unit 0(流量與 wait_init 都依此)
|
||||
SWB_UNIT1 = 1 ; 這台有 switch unit 1
|
||||
prompt_login = "sonic login:"
|
||||
prompt_sonic = "admin@sonic:~$"
|
||||
prompt_sonic_root = "root@sonic:~#"
|
||||
```
|
||||
|
||||
> `SWB_UNIT0` / `SWB_UNIT1` 兩個都是 0 時,`wait_init.ttl` 直接 bypass、A/B/C 的流量段整段跳過。
|
||||
|
||||
Log 檔名規則:`<mdir>\Logs\<project_name>_<strTestcase>_<YYYYmmdd-HHMMSS>.log`
|
||||
|
||||
### 2. `settings/<board>.conf` — 一顆 LTC2980(16 channel)
|
||||
@@ -295,9 +301,9 @@ PROFILE_CHANNELS=( "0:high:8" "1:low:8" ... ) # "channel:operation:change_perc
|
||||
|
||||
| 模組 | 進入點 | 功能 |
|
||||
|------|--------|------|
|
||||
| **Script A(Pre-test)** | `1_Blanton_Script_A.ttl` V1.0.6 | root 登入 → `date -s` 對時 → `hw-test-session start` → **等資料面就緒**(`wait_init.ttl`)→ DUT 清單(boot/version/fwutil/syseeprom/ssdhealth/TPM/NVMe)→ BMC enroll + version/status → source bash 工具 → 清/讀 7 組 PCIe AER + `ras-mc-ctl --summary` → `lspci` → margin → PMON → dmesg → **10G/1G 管理網路 ping** → 100G uplink 設定與狀態 → **一輪流量基線** → `show uptime` |
|
||||
| **Script A(Pre-test)** | `1_Blanton_Script_A.ttl` V1.0.7 | root 登入 → `date -s` 對時 → 清 job log → `hw-test-session start` → **設定風扇轉速** → **等資料面就緒**(`wait_init.ttl`)→ DUT 清單(boot/version/fwutil/syseeprom/ssdhealth/TPM/NVMe)→ BMC enroll + version/status → source bash 工具 → 清/讀 7 組 PCIe AER + `ras-mc-ctl --summary` → `lspci` → margin → PMON → dmesg → **10G/1G 管理網路 ping** → 100G uplink 設定與狀態 → **一輪流量基線** → `show uptime` |
|
||||
| **Script B(Stress)** | `2_Blanton_Script_B.ttl` | `mlucas-avx2 -cpu 0:15` + `bgctl run` 的 `memtester` / SSD / USB 壓力 + BMC DDR(`bmc-manager run memtester`)→ BMC USB net test(探測 cdc_ncm 介面,`systemd-run` 掛 4 小時 ping)→ 啟動 mgmt ping 監控 → `jobs` / `bgctl list` → traffic(依 `SWB_UNIT`)→ `while 1` 每輪完整 PMON + margin |
|
||||
| **Script C(Post-test)** | `3_Blanton_Script_C.ttl` | `kill $(jobs -p)` + `bgctl stop --all` / `reset` + 停 BMC USB unit 與 mgmt ping → PMON + dmesg → 7 組 AER + `ras-mc-ctl` → BMC USB `journalctl` → `ip -s link show eth0/eth1` → `cat` mlucas log → traffic `stop` + `report` → NVMe 健康 → `show reboot-cause` / `uptime` → `hw-test-session finish` |
|
||||
| **Script C(Post-test)** | `3_Blanton_Script_C.ttl` | `kill $(jobs -p)` + `bgctl stop --all` / `reset` + 停 BMC USB unit 與 mgmt ping → PMON + dmesg → 7 組 AER + `ras-mc-ctl` → BMC USB `journalctl` → `ip -s link show eth0/eth1` → `cat` mlucas log → traffic `stop` + `report` → NVMe 健康 → `show reboot-cause` / `uptime` → **job log 複製到 USB(帶時戳)** → `hw-test-session finish` |
|
||||
| **SWB loopback 流量** | `blanton_traffic_linespeed <sub> [-u 0\|1\|all]` | `init`(VLAN 30..137,成對 `cdN`/`cdN+32`)→ `clear` → `start`(`tx 100 length=512`)→ `stop` → `report`(per-pair TX/RX 交叉比對 PASS/FAIL);另有 `ps`(link/speed)與 `run`(一條龍) |
|
||||
| **FPGA 暫存器存取** | `cb_fpga <fn> <addr> [data]`、`fpga_rescan` | pcimem 打 `resource0` + BAR 相對 offset,32-bit word;BDF 於 source 時自動偵測;`pmc/icb/swb0/swb1_fpga` 走 VSPI 窗口 |
|
||||
| **CB I2C / PMBus** | `cb_i2c_init/scan/read/write`、`cb_pmbus_read/write/linear16` | FPGA F3 OpenCores master,**讀用 Repeated START**(SMBus/PMBus 裝置必需) |
|
||||
@@ -322,7 +328,11 @@ PROFILE_CHANNELS=( "0:high:8" "1:low:8" ... ) # "channel:operation:change_perc
|
||||
Script A ── logopen Logs/Blanton_Margin_<ts>.log ──┐ (之後所有畫面都進這個檔)
|
||||
│ │
|
||||
├─ 登入 admin → sudo -i → root@sonic:~# │
|
||||
├─ date -s "<host 時間>" ← 讓 DUT 時戳可對照 │
|
||||
├─ date -s "<host 時間>" ← 讓 DUT 時戳可對照
|
||||
├─ rm /host/hw-eval/current/jobs/* ← 清掉上一輪的 job log
|
||||
├─ hw-test-session start / log / status
|
||||
├─ 風扇:max31790 unbind→sleep→bind(18-0020 與 25-0020 各一次)
|
||||
│ → fan-speed-control.sh <FAN_SPEED> → 回答 y 確認 │
|
||||
├─ source 6 個 bash 工具(函數進 shell) │
|
||||
│ └ 此時 blanton_fpga_pcimem.sh 印出 [INFO] CB FPGA BDF = ...(自動偵測結果)
|
||||
├─ AER 基線:7 組 EP+RP 的 correctable/nonfatal/fatal
|
||||
@@ -363,6 +373,7 @@ Script C
|
||||
├─ nvme smart-log / smartctl -x /dev/nvme0
|
||||
├─ traffic: stop → report ← per-pair TX/RX 交叉比對,PASS/FAIL/NA(exit 2 = 有 FAIL/NA)
|
||||
├─ show reboot-cause / show uptime ← soak 期間有沒有意外重開,一眼看得到
|
||||
├─ cp -r /host/hw-eval/current/jobs/ /mnt/usb/jobs-<YYYYmmdd>_<HHMM>
|
||||
└─ hw-test-session finish
|
||||
▼
|
||||
[messagebox "GOOD JOB! Test Case DONE"] → 人工檢查 log
|
||||
@@ -704,6 +715,14 @@ margin status、全部 VRM 軌的 Vin/Vout/Iout/Temp、CB + ICB 溫感讀值,
|
||||
可在 Script B 起它之前補一行(比照既有的 `chmod +x ~/hammer/tools/amd/mlucas-avx2`),或在 publish 時處理。
|
||||
- **`bmc_monitor.sh` / `bmc_monitor_ddr.sh` 已停用**:B/C 內的呼叫都已註解,改由 `bgctl` +
|
||||
`bmc-manager run memtester` 取代。檔案還留在 repo,待確認不再需要後刪除,或在檔頭標註停用。
|
||||
- **`rm /host/hw-eval/current/jobs/*` 清不掉子目錄**:Script A 用的是不帶 `-r` 的 `rm`,但 Script C
|
||||
是 `cp -r` 那個目錄,代表裡面可能有子目錄。清不乾淨的話,上一輪的 job log 會被當成這輪的一起
|
||||
複製到 USB。要確認 `bgctl` 的產出結構,必要時改成 `rm -rf .../jobs/*`。
|
||||
- **風扇確認提示是無限等待**:`wait "Set all configured fan channels to"` 之後才 `sendln "y"`;
|
||||
若該版 `fan-speed-control.sh` 不再詢問(或字串改了),這個 `wait` 會永遠等下去,Script A 停在那裡
|
||||
且不報錯。加個 `timeout` + 分支會比較保險(記得還原 `timeout = 0`)。
|
||||
- **USB 掛載點未檢查**:Script C 直接 `cp -r ... /mnt/usb/`,`/mnt/usb` 沒掛載時只會失敗一行,
|
||||
整輪測試的 job log 就沒被帶出來。可在複製前先 `mountpoint -q /mnt/usb` 判斷。
|
||||
- **Script C 沒有倒出 `mgmt_ping.log`**:C 會 `stop` 管理網路監控並印 `ip -s link show`,
|
||||
但沒有 `cat ~/Blanton_Script/log/mgmt_ping.log`,所以整個 soak 期間累積的 per-leg `RESULT`
|
||||
留在 DUT 上、沒進 master log。Script A 那輪基線有 `cat`。
|
||||
|
||||
Reference in New Issue
Block a user