Files
wandering1 4a4ad6bc5f chore(全仓): @build/@test 旧文档别名清退为技能调用名
现状口径:/keil-build 与 /serial-boot-test 是 DSH 会话的技能调用名,
不是 shell 命令;「名 + 命令行参数」的命令形态改为可执行体
run_boot_test.py 的真实调用。

- AGENTS.md:别名说明重写为「技能调用名不是 shell 命令」,两条目改
  「编译(/keil-build)」「串口回归(/serial-boot-test)」
- keil-build / serial-boot-test 两 skill 调用名与示例同步;task-worktree
  方案文档去掉 @build/@test 惯例从句;@task 保留(不在点名范围)
- 123 文件现状陈述全改;台架捕获、变更记录/时间线、rename 映射输入
  等 41 行历史证据保留旧名
- gen_memory_svg.py 6 处措辞随改,3 张 SVG 产物同批重跑
- 顺手补并行方案同行漏网计数 51→52 钩子

验证:提交期快钩子对 123 文件实跑全 Passed;check_doc_links --all
rc=0(3038 处、无法判定 0);check_mermaid --all rc=0;YAML 解析 52
钩子不变;skill-size rc=0;py_compile 全过;字节卫生零漂移。
2026-10-30 13:03:12 +08:00

66 lines
3.3 KiB
Markdown
Raw Permalink 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
# 编译(keil-build skill 的 keil_build.py;相对路径,勿用绝对路径)
& '.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`