4c6cdc3bf8b233aabd3937bb8981905e3d10411c
GD32E230 固件工具
本仓库提供 GD32E230 系列固件的处理与烧录工具:
- DAPLink Flash GUI(推荐):图形界面烧录工具,位于
FlashTool/ - 命令行固件工具:
gd32e230_firmware_tool.py(合成 + 补齐二合一) - 旧版脚本:
merge_bin.py、fill_bin.py(保留兼容)
Flash 布局
0x08000000 ┌──────────────────┐
│ Bootloader │ 8KB
0x08002000 ├──────────────────┤
│ │
│ Application │ 最大 54KB (F8) / 22KB (F6) / 6KB (F4)
│ │
0x0800F800 ├──────────────────┤
│ 校准数据 │ 1KB (预留)
0x0800FC00 ├──────────────────┤
│ 0xEEEE 标志 │ 1KB
0x08010000 └──────────────────┘
- 空白区域填充
0xFF(Flash 擦除默认值) - 标志位
0xEEEE告诉 Bootloader:APP 有效,直接跳转 - 校准页当前为预留空间
DAPLink Flash GUI(推荐)
日常烧录优先使用图形界面工具,不需要打开 VSCode,也不需要记忆 OpenOCD 命令。
- 免安装版:到 Gitea Releases
下载
DAPLinkFlash-vX.Y.Z-win64.zip,解压双击DAPLinkFlash.exe即可, 包内自带 OpenOCD 工具链(toolchain/openocd/),目标机器无需任何环境。 - 源码运行:
python FlashTool/src/flash_gui.py或双击FlashTool\start_flash_gui.bat(需 Python 3.10+ 与pip install customtkinter;OpenOCD 默认找D:/toolchain)。
详细说明见 FlashTool/README.md(GUI 截图说明、命令行模式、 构建与发布流程)。下面是旧单文件版说明保留的要点:
功能
- 烧录操作:检测设备、整片擦除、烧录固件、读取 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 + 有效标志
- 工具链自动定位:内置(exe 旁
toolchain/openocd)→ 本机D:/toolchain→ PATH
配置
- 配置文件:
flash_gui_settings.json,保存在程序目录(exe 旁 / FlashTool 根), 自动保存与恢复 - 旧版
config/flash_gui_<主机名>.json在新版首次启动时自动迁移
使用步骤
- 连接烧录器(DAPLink / GD-Link 等)到目标板 SWD:SWDIO、SWCLK、GND
- 启动 GUI,选择芯片型号和烧录器型号
- 选择固件文件并确认地址:
- 完整镜像(bootloader + app):
0x08000000 - 单独烧录 APP:
0x08002000
- 完整镜像(bootloader + app):
- 点击“检测设备”确认连接正常
- 点击“烧录固件”
Bootloader 的 Y-Modem 只按 1K 整包接收,OTA 升级包发送前请先用“补齐”功能处理。
命令行固件工具
快速开始
# 合成完整镜像(整片烧录用)
python gd32e230_firmware_tool.py -m app.bin
# 补齐升级包(Ymodem 升级用)
python gd32e230_firmware_tool.py -f app.bin
模式说明
-m / --merge — 合成完整镜像
将 Bootloader + APP + FLAG 合并为一个 Flash 镜像,直接整片烧录。不补齐(整片烧录无需考虑页对齐)。
python gd32e230_firmware_tool.py -m CeramixNano-MB_V1.0.9.bin
输出:CeramixNano-MB_V1.0.9_BL.bin
-f / --fill — 补齐升级包
将 APP 尾部补 0xFF 到 1KB 页边界,供 Bootloader 的 Ymodem 接收端使用。补齐后自动检查是否超过芯片 APP 容量上限。
python gd32e230_firmware_tool.py -f CeramixNano-MB_V1.0.9.bin
输出:CeramixNano-MB_V1.0.9_UPDATE.bin
参数
| 参数 | 默认值 | 说明 |
|---|---|---|
app |
(必填) | APP 的 .bin 文件 |
-m, --merge |
— | 合成完整 Flash 镜像 |
-f, --fill |
— | 补齐到整页边界 |
-s, --flash-size |
F8 |
芯片型号:F4(16K) F6(32K) F8(64K) |
-b, --bootloader |
gd32e230f8_bootloader_hulk.bin |
Bootloader .bin 路径 |
-o, --output |
自动生成 | 输出文件路径 |
-h, --help |
— | 查看帮助 |
-m和-f互斥,每次只能选一种模式。
使用示例
# F8 合成镜像(默认)
python gd32e230_firmware_tool.py -m CeramixNano-MB_V1.0.9.bin
# F6 合成镜像
python gd32e230_firmware_tool.py -m app.bin -s F6
# F8 补齐升级包(默认)
python gd32e230_firmware_tool.py -f app.bin
# F4 补齐升级包
python gd32e230_firmware_tool.py -f app.bin -s F4
# 自定义 Bootloader 和输出路径
python gd32e230_firmware_tool.py -m app.bin -b my_bootloader.bin -o release.bin
输出示例
merge 模式:
芯片: GD32E230F8 (64KB)
合成完成: CeramixNano-MB_V1.0.9_BL.bin
芯片 : 64KB
Bootloader : 3272B @ 0x08000000
Application: 25600B @ 0x08002000
Flag : 0xEEEE @ 0x0800FFFC
校准预留 : 1KB @ 0x0800F800
APP 剩余 : 29696B
总大小 : 65536B (64KB)
fill 模式:
芯片: GD32E230F8 (64KB)
补齐完成: app_UPDATE.bin
原始大小: 25000B
页大小 : 1024B (1KB)
补齐字节: 600B
输出大小: 25600B
APP 上限: 55296B (54KB) → 剩余 29696B
超限拦截:
错误: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。
烧录
# OpenOCD
openocd -f interface/cmsis-dap.cfg -f target/gd32e23x.cfg \
-c "init; reset halt; flash write_image erase merged.bin 0x08000000; reset; exit"
# J-Link
JFlash -openprj project.jflash -open merged.bin,0x08000000 -auto -exit
安全校验
- Bootloader 体积不超过 APP 起始偏移(8KB)
- APP 大小不超过芯片可用空间
- fill 模式补齐后再次校验容量上限
- 芯片不支持自动检测,需通过
-s手动指定
License
MIT
Releases
4
DAPLinkFlash v2.2.0
Latest
Languages
Python
99.6%
Batchfile
0.4%