# dap-flasher **Repository Path**: michaelhyg/dap-flasher ## Basic Information - **Project Name**: dap-flasher - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-22 - **Last Updated**: 2026-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DAPLink 下载器 + 串口调试助手 这是一个基于 `Qt Widgets` 的 DAPLink 上位机工程,当前实现的是 `P0` 阶段能力,并为后续 `P1/P2` 扩展预留了分层结构。 ## 当前已实现 - DAPLink 设备自动检测 - 多个 DAPLink/CMSIS-DAP 设备枚举与下拉选择,下载时通过 pyOCD UID 锁定目标探针 - 设备列表手动刷新,避免后台频繁调用 `pyocd list` 影响串口接收流畅度 - HEX / BIN / ELF 固件文件选择 - 可编辑的 MCU target 输入/下拉框 - BIN 基地址输入 - 调用 `pyOCD` 的一键下载 - 下载中状态切换与停止 - 日志实时输出 - 下载结果提示 - 基于输出关键字的伪进度显示 - 最近一次固件路径持久化 - 独立“DAP 下载 / 串口调试”页签,下载和串口调试不混在同一个界面 - 串口调试:串口刷新、打开/关闭、波特率/数据位/校验/停止位/流控配置 - 串口调试:文本/HEX 收发、CRLF 追加、接收时间戳、DTR/RTS 控制、RX/TX 计数、接收行数统计 - 串口调试:接收窗口保存支持记住上次保存目录 ## 当前架构 ```text MainWindow ├── DAP 下载页 │ ├── DeviceManager │ └── DownloadManager │ └── IDownloadBackend │ └── PyOcdBackend └── 串口调试页 └── SerialConsoleWidget └── QSerialPort ``` ## 目录结构 ```text src/ main.cpp MainWindow.* SerialConsoleWidget.* DownloadManager.* DeviceManager.* IDownloadBackend.h PyOcdBackend.* AppState.h DownloadTypes.h docs/ DAPLink_Qt上位机产品规划文档.md ``` ## 构建要求 - Qt 5.12+ 或 Qt 6.x - Qt SerialPort 模块,qmake 工程中已加入 `QT += serialport`,CMake 工程中已链接 `Qt::SerialPort` - CMake 3.16+ - 编译器:MSVC / MinGW / Clang 任一可用 - 运行环境中可执行 `pyocd` ## 构建示例 ```powershell cmake -S . -B build cmake --build build ``` 当前环境也可直接使用 Qt 自带的 `qmake`: ```powershell powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\build.ps1 -Rebuild ``` `build.ps1` 会重新生成 qmake 工程并检查 `qmake` / `mingw32-make` 的退出码。Windows 图标资源使用手写 `RC_FILE` 和相对路径,避免中文工程路径被 `windres` 解析成 `dap???` 导致资源编译失败。 如果需要把 Qt 运行库部署到输出目录,可执行: ```powershell C:\Qt\Qt5.12.0\5.12.0\mingw73_64\bin\windeployqt.exe --release --no-translations .\release\DapDownloader.exe ``` ## 使用说明 1. 连接 DAPLink 设备。 2. 启动程序,确认界面显示设备已连接。 3. 如果插入多个 DAPLink/CMSIS-DAP,在 `DAPLink 设备` 下拉框中选择要使用的探针;插拔设备后点击旁边的“刷新”重新枚举。 4. 选择 `.hex / .bin / .elf` 固件。 5. 如有需要,填写 `pyOCD target` 名称。 6. 如果下载的是 `bin`,填写写入基地址,例如 `0x08000000`。 7. 点击“开始下载”。 8. 通过日志窗口查看详细过程。 9. 切换到“串口调试”页签,可以独立打开串口进行日志查看或命令收发。 10. 在串口调试页保存接收窗口时,程序会记住上次保存目录,便于连续导出日志。 ## pyOCD 下载参数 - 下载后端使用 `pyocd flash`,默认连接模式为 `attach`,避免目标板已在运行时被强制 halt/reset 组合影响。 - 默认 SWD 频率为 `1M`,可通过界面选择更高频率;通信不稳定时建议保持 `1M`。 - 可通过环境变量覆盖默认值:`PYOCD_CONNECT_MODE` 支持 `halt / pre-reset / under-reset / attach`,`PYOCD_FREQUENCY` 支持 pyOCD 的频率格式,例如 `1M`、`4M`、`1000kHz`。 - BIN 文件会传入 `--format bin` 和界面填写的基地址;HEX / ELF 文件使用文件内置地址信息。 ## 已知限制 - 多设备选择依赖 `pyocd list -p -H` 返回的探针 UID;后台定时检测复用缓存,插拔 DAPLink 后需要点击“刷新”更新列表。 - 当前只实现 `pyOCD` 后端,后续可增加 DAPLink 盘符复制后端。 - `verify / reset` 等增强能力仍未在 UI 中开放。