5defabcabb
- 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 通过
68 lines
2.9 KiB
Markdown
68 lines
2.9 KiB
Markdown
# 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`
|