afe5512f54177de2d9881c65d8da7e2887e2d19a
GD32E230 固件工具
Bootloader + Application 固件处理工具,支持合成整片烧录镜像和 Ymodem 升级包补齐。
旧工具
merge_bin.py/fill_bin.py仍保留(→ README_old.md),本仓库推荐使用新工具。
Flash 布局
0x08000000 ┌──────────────────┐
│ Bootloader │ 8KB
0x08002000 ├──────────────────┤
│ │
│ Application │ 最大 54KB (F8) / 22KB (F6) / 6KB (F4)
│ │
0x0800F800 ├──────────────────┤
│ 校准数据 │ 1KB (预留)
0x0800FC00 ├──────────────────┤
│ 0xEEEE 标志 │ 1KB
0x08010000 └──────────────────┘
- 空白区域填充
0xFF(Flash 擦除默认值) - 标志位
0xEEEE告诉 Bootloader:APP 有效,直接跳转 - 校准页当前为预留空间
环境要求
- Python 3.x,无第三方依赖
快速开始
# 合成完整镜像(整片烧录用)
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
烧录
# 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%