Files
gd32e230f8_firmware_merge_tool/README.md
T

6.5 KiB
Raw Blame History

GD32E230 固件工具

本仓库提供 GD32E230 系列固件的处理与烧录工具:

  • DAPLink Flash GUI(推荐):图形界面烧录工具,位于 FlashTool/
  • 命令行固件工具gd32e230_firmware_tool.py(合成 + 补齐二合一)
  • 旧版脚本merge_bin.pyfill_bin.py(保留兼容)

Flash 布局

0x08000000  ┌──────────────────┐
            │   Bootloader     │  8KB
0x08002000  ├──────────────────┤
            │                  │
            │   Application    │  最大 54KB (F8) / 22KB (F6) / 6KB (F4)
            │                  │
0x0800F800  ├──────────────────┤
            │   校准数据        │  1KB (预留)
0x0800FC00  ├──────────────────┤
            │   0xEEEE 标志     │  1KB
0x08010000  └──────────────────┘
  • 空白区域填充 0xFFFlash 擦除默认值)
  • 标志位 0xEEEE 告诉 BootloaderAPP 有效,直接跳转
  • 校准页当前为预留空间

日常烧录优先使用图形界面工具,不需要打开 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 customtkinterOpenOCD 默认找 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 在新版首次启动时自动迁移

使用步骤

  1. 连接烧录器(DAPLink / GD-Link 等)到目标板 SWDSWDIO、SWCLK、GND
  2. 启动 GUI,选择芯片型号和烧录器型号
  3. 选择固件文件并确认地址:
    • 完整镜像(bootloader + app):0x08000000
    • 单独烧录 APP0x08002000
  4. 点击“检测设备”确认连接正常
  5. 点击“烧录固件”

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