其他
在 Keil MDK 工程已配置调试器时,通过内置…
当工作区存在 .uvprojx/.uvproj 或 Project Profile 标明 build_system: keil,且工程已配置调试器,需要把编译产物烧录到目标板时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 38/100 ×0.15
适用场景
在 Keil MDK 工程已配置调试器时特定
解决思路
- 先阅读 references/usage.md,确认本次操作。
- 准备必要输入:.uvprojx/.uvproj 工程文件路径(或从 Project Profile 获取);可选提供构建目标名称和 UV4.exe 路径。
- 脚本启动即自动复用工程根目录 .em_skill.json 中上次成功的 profile 作为默认参数;显式参数优先,无需先手动传 --resume。
- 仅当需要断言缓存必须存在时使用 --resume;若 .em_skill.json 无缓存,则脚本非零退出。
- 若无缓存或用户明确要求重新探测,脚本自动回退到正常扫描。
- 复用 build-keil 的 UV4.exe 探测逻辑:按配置文件 → 环境变量 → 常见路径 → PATH 顺序探测。
- 解析工程 XML 中的 <DriverSelection> 识别调试器类型(ST-Link、J-Link、CMSIS-DAP、ULINK)。
- 若未指定目标,默认使用工程中的第一个 Target。
- 对于常见场景,直接一次调用完成探测+烧录:python scripts/keil_flasher.py --detect --flash --project <工程文件> --target <目标名>。
- 读取脚本输出的烧录结果报告,关注成功/失败状态、调试器类型和日志证据。
- 将烧录结果写回 Project Profile,并推荐下一步 skill。
- 若失败分类为 environment-missing,检查 Keil MDK 是否安装或 UV4.exe 是否可用。
- 若失败分类为 connection-failure,检查调试器连接(USB 未连接、驱动问题、目标板未上电)。
- 若失败分类为 project-config-error,检查工程文件中的 Flash 配置是否有效、目标名是否存在。
- 在 Windows 上执行 Keil MDK 烧录(Keil MDK 烧录仅支持 Windows)。
- 烧录使用工程中已配置的调试器和 Flash 算法,无需额外配置。
- 烧录日志可能包含 GBK 编码字符,依赖脚本自动处理多种编码。
- 脚本执行完成后,提取并呈现烧录状态(成功/失败)。
- 提取并呈现工程文件和目标名。
- 提取并呈现芯片型号(如 STM32F103RC)。
- 提取并呈现调试器类型(如 ST-Link、J-Link)。
- 提取并呈现烧录固件路径和大小(如 Demo02.axf, 519.6 KB)。
- 提取并呈现烧录完成时间。
- 若失败,提取并呈现失败分类和日志证据。
- 按示例输出格式呈现,例如:烧录成功 ✅ / 工程: Demo02.uvprojx → 目标: Demo02 / 芯片: STM32F103RC | 调试器: ST-Link / 固件: Demo02.axf (519.6 KB) / 状态: Erase Done → Programming Done → Verify OK → Application running。
- 成功后推荐 serial-monitor(查看串口输出)或 debug-gdb-openocd(在线调试)。
- 失败时输出失败分类和日志证据,帮助用户定位问题。
- 从 build-keil 接收编译成功的工程信息。
- 烧录成功后交给 serial-monitor(查看串口输出)或 debug-gdb-openocd(在线调试)。
适用边界 · 注意事项
- 非 Windows 平台不适用,因为 Keil MDK 烧录仅支持 Windows。
- 未安装 Keil MDK、UV4.exe 不可用,或工程未配置调试器/Flash 算法时不适用。
- 不想使用 Keil MDK 内置 Flash Download,或需要 OpenOCD 等外部烧录方式时不适用。