feat(flash-gui): 新增 DAPLink 烧录 GUI 并整理固件工具说明

- 新增 FlashTool/ 图形化烧录工具,支持 GD32E230F4/F6/F8/C8
- 支持 DAPLink/CMSIS-DAP、GD-Link、ST-Link、J-Link
- 支持 BIN/HEX/ELF 烧录、整片擦除、读取 Flash、复位、补齐与拼接
- 配置按主机名保存于 FlashTool/config/,自动创建并 gitignore
- README 调整:GUI 使用说明置顶,命令行工具说明保留在下方
This commit is contained in:
2026-08-01 00:09:24 +08:00
parent 49f84396bd
commit e8eb194fb8
5 changed files with 1020 additions and 18 deletions
+67 -17
View File
@@ -1,12 +1,14 @@
# GD32E230 固件工具
Bootloader + Application 固件处理工具,支持合成整片烧录镜像和 Ymodem 升级包补齐。
本仓库提供 GD32E230 系列固件的处理与烧录工具:
> **旧工具** `merge_bin.py` / `fill_bin.py` 仍保留(→ [README_old.md](README_old.md)),本仓库推荐使用新工具。
- **DAPLink Flash GUI(推荐)**:图形界面烧录工具,位于 `FlashTool/`
- **命令行固件工具**:`gd32e230_firmware_tool.py`(合成 + 补齐二合一)
- **旧版脚本**:`merge_bin.py`、`fill_bin.py`(保留兼容)
## Flash 布局
```
```text
0x08000000 ┌──────────────────┐
│ Bootloader │ 8KB
0x08002000 ├──────────────────┤
@@ -24,11 +26,55 @@ Bootloader + Application 固件处理工具,支持合成整片烧录镜像和
- 标志位 `0xEEEE` 告诉 Bootloader:APP 有效,直接跳转
- 校准页当前为预留空间
## 环境要求
## DAPLink Flash GUI(推荐)
- Python 3.x,无第三方依赖
日常烧录优先使用图形界面工具,不需要打开 VSCode,也不需要记忆 OpenOCD 命令。
## 快速开始
### 启动
```bat
双击 FlashTool\start_flash_gui.bat
```
或手动运行:
```bat
python FlashTool\daplink_flash_gui.py
```
### 功能
- 烧录操作:检测设备、整片擦除、烧录固件、读取 Flash、复位芯片、停止
- 固件格式:BIN / HEX / ELF
- BIN:手动填写烧录基地址
- HEX / ELF:自动使用文件内地址
- 芯片型号:GD32E230F4 / F6 / F8 / C8,自动带出 Flash 大小和 target 配置
- 烧录器:DAPLink / CMSIS-DAP、GD-Link、ST-Link、J-Link
- 烧录参数:适配器速度、探针序列号、烧录前擦除、烧录后校验、烧录后复位运行
- 固件处理:补齐(1K / 2K / 4K)、拼接 Bootloader + APP + 有效标志
### 配置
- 配置文件按主机名分开:`FlashTool/config/flash_gui_<主机名>.json`
- 首次打开自动创建 `config` 目录和当前电脑的配置
- 之后打开自动加载;每台电脑互不影响
- `FlashTool/config/` 已加入 `.gitignore`,不会提交
### 使用步骤
1. 连接烧录器(DAPLink / GD-Link 等)到目标板 SWD:SWDIO、SWCLK、GND
2. 启动 GUI,选择芯片型号和烧录器型号
3. 选择固件文件并确认地址:
- 完整镜像(bootloader + app):`0x08000000`
- 单独烧录 APP:`0x08002000`
4. 点击“检测设备”确认连接正常
5. 点击“烧录固件”
> Bootloader 的 Y-Modem 只按 1K 整包接收,OTA 升级包发送前请先用“补齐”功能处理。
## 命令行固件工具
### 快速开始
```bash
# 合成完整镜像(整片烧录用)
@@ -38,9 +84,9 @@ python gd32e230_firmware_tool.py -m app.bin
python gd32e230_firmware_tool.py -f app.bin
```
## 模式说明
### 模式说明
### `-m` / `--merge` — 合成完整镜像
#### `-m` / `--merge` — 合成完整镜像
将 Bootloader + APP + FLAG 合并为一个 Flash 镜像,直接整片烧录。**不补齐**(整片烧录无需考虑页对齐)。
@@ -50,7 +96,7 @@ python gd32e230_firmware_tool.py -m CeramixNano-MB_V1.0.9.bin
输出:`CeramixNano-MB_V1.0.9_BL.bin`
### `-f` / `--fill` — 补齐升级包
#### `-f` / `--fill` — 补齐升级包
将 APP 尾部补 `0xFF` 到 1KB 页边界,供 Bootloader 的 Ymodem 接收端使用。补齐后自动检查是否超过芯片 APP 容量上限。
@@ -60,7 +106,7 @@ python gd32e230_firmware_tool.py -f CeramixNano-MB_V1.0.9.bin
输出:`CeramixNano-MB_V1.0.9_UPDATE.bin`
## 参数
### 参数
| 参数 | 默认值 | 说明 |
|------|--------|------|
@@ -74,7 +120,7 @@ python gd32e230_firmware_tool.py -f CeramixNano-MB_V1.0.9.bin
> **`-m` 和 `-f` 互斥**,每次只能选一种模式。
## 使用示例
### 使用示例
```bash
# F8 合成镜像(默认)
@@ -93,11 +139,11 @@ python gd32e230_firmware_tool.py -f app.bin -s F4
python gd32e230_firmware_tool.py -m app.bin -b my_bootloader.bin -o release.bin
```
## 输出示例
### 输出示例
**merge 模式:**
```
```text
芯片: GD32E230F8 (64KB)
合成完成: CeramixNano-MB_V1.0.9_BL.bin
@@ -112,7 +158,7 @@ python gd32e230_firmware_tool.py -m app.bin -b my_bootloader.bin -o release.bin
**fill 模式:**
```
```text
芯片: GD32E230F8 (64KB)
补齐完成: app_UPDATE.bin
原始大小: 25000B
@@ -124,12 +170,16 @@ python gd32e230_firmware_tool.py -m app.bin -b my_bootloader.bin -o release.bin
**超限拦截:**
```
```text
错误:APP (60000B / 58.6KB) 超过最大容量 (55296B / 54KB)
芯片 64KB: 64KB - 8KB(BL) - 1KB(校准) - 1KB(Flag) = 54KB
```
## 烧录
### 旧版脚本
`merge_bin.py` / `fill_bin.py` 为旧版命令行脚本,功能已合并进 `gd32e230_firmware_tool.py`,历史说明见 [README_old.md](README_old.md)。
### 烧录
```bash
# OpenOCD
@@ -140,7 +190,7 @@ openocd -f interface/cmsis-dap.cfg -f target/gd32e23x.cfg \
JFlash -openprj project.jflash -open merged.bin,0x08000000 -auto -exit
```
## 安全校验
### 安全校验
- Bootloader 体积不超过 APP 起始偏移(8KB)
- APP 大小不超过芯片可用空间