Files
gd32e230f8_firmware_merge_tool/README.md
T

4.1 KiB
Raw Blame History

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  └──────────────────┘
  • 空白区域填充 0xFFFlash 擦除默认值)
  • 标志位 0xEEEE 告诉 BootloaderAPP 有效,直接跳转
  • 校准页当前为预留空间

环境要求

  • 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