Files
STM32F4-Base/MDK-ARM/README.md
T
wandering1 23daa3d9ad
CI / L0 静态门禁 (pre-commit) (push) Failing after 2m34s
CI / L0.5 主机侧单测 (MSVC) (push) Successful in 21s
chore(台架): 删零引用的一次性探针、修可信判据工具登录、清理口径落文
两件事一起做:把"没人用又已经失效"的一次性探针清掉,把"台架现场脏"这件事的口径写进文档。

**删除(5 个文件,全库零引用)**:`MDK-ARM/ftp_retr_abort_probe.py`(其职能已被
`test/host/ftp_abort_probe.py` 取代,Trap 记录引用的也是后者)与整个 `MDK-ARM/bench_diag/`
(4 个诊断脚本:abort_gap / pcref / recover / sink_recycle)。删除判据三条同时成立:① 全库
`git grep` 除自身外零引用;② 自 2026-10-11 设备启用 FTP 鉴权起,脚本里写死的匿名登录必然 530
→ 已经跑不动 11 天;③ 都是"跑一次拿现场"的诊断件,价值在结论而结论已沉淀进 Trap 记录。
需要时从 git 历史取回(`test/host/README.md` 与 `MDK-ARM/README.md` 都写明了这一点)。

**刻意保留并修好**:`MDK-ARM/ftp_freeze_probe.py`——它不是一次性件:
`CH395F_Trap_Records.md` 拿它当"177 轮 SHA-256 全匹配"的**可信复现配方**、
`BSD_Socket_API_使用指南.md` 把它列进排障判据、`Drivers/BSP/NET/lftpd/README.md` 也指它。
  删掉它等于删掉文档指定的真值工具。改为 `--user/--password`(默认出厂 admin/admin,模块常量
`FTP_USER`/`FTP_PASS`,两处登录点都读它),实测一轮:`ROUND 1 size=4096 stor=OK retr=OK
hash=MATCH`、`SUMMARY pass=1 fail=0`——修前它连 530 都过不去。

**台架设备清理(不动仓库内容)**:`/` 根目录实测残留 **27 个探针文件 / 262 KB**(`AB000x`、
`A000x`、`R000x`、`SZ2K~64K`、`E12A`、`DIAG_A`、`PP0~PP4`——正是刚删的那批一次性探针留下的)。
逐个 `DELE` 后剩 `LOG` + `CONFIG.INI` + `PROT_SET.BIN` 三条目。**判据:只删显式点名的文件,
绝不 glob**;保留清单必须含 `/config.ini`(网口 + FTP 鉴权)、`/PROT_SET.BIN`(保护定值 blob,
`PROT_SET_BLOB_SZ` = 176 B,删了等于定值清零)、`/log` 目录。清完两步验收:`@test` PASS
(630 ms,定值巡检与配置加载都在这条链上)+ `ftp_list_fill_test.py` PASS(29 行 / 1851 B /
完成回包 226,26 个新文件全列出)。口径写进 `docs/测试说明/存储维护与容量恢复.md` 新 §4.1
(明确它是"动作 D 清文件",与 A 重建 BBT / B 全片擦除 / C 容量恢复区分——那三个会丢卷内容)。

门禁:`py_compile`(freeze 探针)通过;`check_doc_links.py --all --sections-strict` 146
  文档
0 问题(删除的 5 个文件确认无任何文档引用);`check_ids.py --strict` 增量拦截通过(可判定
82.82%);`layer-deps` 通过;4 个改动文件字节卫生 BOM 无 / CR 0 / U+FFFD 0 / 无行尾空格。
本轮无固件改动,未跑 `@build`(设备侧清理后的 `@test` 已跑,镜像仍是上一笔的构建)。未推送。
2026-10-22 22:51:21 +08:00

66 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MDK-ARM/ — Keil MDK-ARM v5 工程与构建/烧录/探针脚本
> **唯一工具链**:Keil MDK-ARM v5(ARMCC,C99)。本目录含工程文件、启动文件、
> 命令行构建/烧录脚本,以及**台架探针与判读脚本**。
## 关键文件
| 文件/目录 | 作用 |
|---|---|
| `STM32F407-Demo.uvprojx` | **Keil 工程文件**(源文件清单、编译选项、目标配置) |
| `STM32F407-Demo.uvoptx` | Keil 用户选项(调试器、断点等) |
| `startup_stm32f407xx.s` | 启动文件(**`Heap_Size EQU 0x200`(512B)在此限定**) |
| `.dsh/skills/stlink-flash/scripts/stlink_flash.py` | **复位/烧录/回读**(`ST-LINK_CLI` 封装,见下;原 `reset.bat` 已于 2026-10-10 删除) |
## 构建与烧录
```bash
# 编译(@build = keil-build skill;相对路径,勿用绝对路径)
& '.venv\Scripts\python.exe' .dsh\skills\keil-build\scripts\keil_build.py # 退出码 0 = 0 errors, 0 warnings
# 烧录 + 复位运行(@download = stlink-flash skill)
& '.venv\Scripts\python.exe' .dsh\skills\stlink-flash\scripts\stlink_flash.py flash <文件.hex|.bin>
# 仅复位
& '.venv\Scripts\python.exe' .dsh\skills\stlink-flash\scripts\stlink_flash.py reset
```
### ⚠️ 烧录铁律
- `stlink_flash.py flash` = `ST-LINK_CLI -c SWD -P <文件> -Rst -Run`——**`-Rst -Run` 不可省略**!
裸 `-P` 会报 `Programming Complete`,但目标核处于异常状态时写入并不落地(芯片内容不变)
- 烧录后**必须回读校验**:`ST-LINK_CLI -c SWD -CmpFile <文件> 0x08000000`(`No difference found` 才算真写入)
- 本机 3 线接线(nRST 未接),**只重启不烧录**用 `stlink_flash.py reset`
## 台架探针与判读脚本
| 脚本 | 作用 |
|---|---|
| `bench_verdict.py` | 台架判读(把运行结果判为 PASS/FAIL) |
| `ftp_freeze_probe.py` | FTP 上传+回读哈希(真实路径冻结探针)——**被 Trap 记录当作可信判据引用,保留**;2026-10-22 起用设备账号登录(设备无匿名通道) |
| `tcp_reconnect_probe.py` | TCP 快速复连探针(TRAP-NET-17) |
| `audit_runs.py` / `audit_tcpclient.py` | 运行记录审计 / TCP 客户端审计 |
| `check_crecipe_content.py` | 检查创建配方内容 |
## 子目录
| 目录 | 内容 |
|---|---|
| `RTE/` | Keil Run-Time Environment 配置 |
| `DebugConfig/` | 调试会话配置 |
| `STM32F407-Demo/` | 构建输出(`.o`/`.axf`/`.map` 等,**产物不提交**) |
| ~~`bench_diag/`~~ | 2026-10-22 删除:4 个一次性台架诊断脚本,全库零引用、且自设备启用 FTP 鉴权起就登录不上(需要时从 git 历史取回) |
| `retracted_bench_20260922/` | 已撤回的台架数据(存证) |
## ⚠️ 注意
- 工具路径经 `DTU_*` 环境变量解析(`DTU_KEIL_UV4` = UV4.exe 完整路径,`DTU_STLINK_CLI` = ST-LINK_CLI.exe 完整路径;换机设变量即可,**无需改脚本**;契约见 `docs/环境与部署/本地工具路径环境变量方案.md`)
- 本目录被 pre-commit 门禁**排除**
- 启动文件的 `Heap_Size = 512B` 是**自研代码禁用 `malloc` 的根因**(见 `AGENTS.md`)
## 相关文档
- 烧录/复位:`docs/测试说明/ST-LINK_CLI_复位使用说明.md`
- 构建与验证:根 `AGENTS.md`「构建与验证」章
- 测试流程:`docs/测试说明/自动化测试流程.md`