Files
STM32F4-Base/MDK-ARM/README.md
T
wandering1 5defabcabb build: 删除 MDK-ARM/download.bat,烧录收敛到 stlink-flash skill
- test/run_all_suites.py 是唯一执行它的地方:DOWNLOAD_BAT 改为 STLINK_FLASH
  (.dsh/skills/stlink-flash/scripts/stlink_flash.py);直烧改
  [py, STLINK_FLASH, "flash"](原先把 .bat 包给命令行解释器执行);
  --flash-cmd 改由同一常量拼出,不再硬编码 .bat 路径
- 机制变化(须知晓):原 download.bat 走 UV4 -f(CMSIS-DAP),现走
  ST-LINK_CLI -P <hex> -Rst -Run —— 与 .serialtest/config.json 的
  flash_cmd、AGENTS.md 烧录铁律、回读 -CmpFile 要求同源;6.5s/1MB
  也快于 UV4 路径
- AGENTS.md / 环境与部署 3 篇 / ST-LINK_CLI 复位说明(原文写"正式流程仍以
  download.bat 为准",已反转)/ 自动化测试流程 / 串口助手设计说明 /
  链路延迟 / m2_data / README / MDK-ARM/README:引用改指 skill
- .gitignore:download_log.txt 条目保留并注明 legacy(他机残留物不变
  untracked);build 日志注释同步
- 保留 MDK-ARM/reset.bat:其 hard/halt/run 子命令是 skill 没有的
- 刻意未改:docs/问题记录/项目审查与优化建议报告.md 的 P2-15(史实)
- 验证:run_all_suites.py --dry-run 解析出 skill 路径;doc-links 123 通过
2026-10-10 16:28:58 +08:00

68 lines
2.9 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)在此限定**) |
| `reset.bat` | **复位/烧录/回读**(`ST-LINK_CLI` 封装,见下) |
## 构建与烧录
```bash
# 编译(@build = keil-build skill;相对路径,勿用绝对路径)
& '.venv\Scripts\python.exe' .dsh\skills\keil-build\scripts\keil_build.py # 退出码 0 = 0 errors, 0 warnings
# 烧录 + 复位运行(推荐路径)
& "MDK-ARM\reset.bat" flash <文件.hex|.bin>
# 仅复位
& "MDK-ARM\reset.bat"
```
### ⚠️ 烧录铁律
- `reset.bat 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 未接),**只重启不烧录**用 `reset.bat` 无参
## 台架探针与判读脚本
| 脚本 | 作用 |
|---|---|
| `bench_verdict.py` | 台架判读(把运行结果判为 PASS/FAIL) |
| `ftp_freeze_probe.py` | FTP 上传+回读哈希(真实路径冻结探针) |
| `ftp_abort_probe.py` | FTP 中止场景探针(Trap 23) |
| `ftp_retr_abort_probe.py` | FTP RETR 中止探针 |
| `tcp_reconnect_probe.py` | TCP 快速复连探针(Trap 22) |
| `audit_runs.py` / `audit_tcpclient.py` | 运行记录审计 / TCP 客户端审计 |
| `check_crecipe_content.py` | 检查创建配方内容 |
## 子目录
| 目录 | 内容 |
|---|---|
| `RTE/` | Keil Run-Time Environment 配置 |
| `DebugConfig/` | 调试会话配置 |
| `STM32F407-Demo/` | 构建输出(`.o`/`.axf`/`.map` 等,**产物不提交**) |
| `bench_diag/` | 台架诊断数据 |
| `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`