Skip to content

About

功能强大的串口固件下载工具,支持 GUI 界面、命令行调用和 Python 模块导入三种使用方式。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

固件下载工具 (Firmware Downloader)

版本: 1.4 | 作者: GHowe | 日期: 2026-10-14

面向 Windows 的串口固件下载工具,支持图形界面、命令行配置和无界面自动下载。


快速开始

图形界面

双击 GHowe_Downloader.exe,选择固件和串口后开始下载。

也可以从终端启动:

.\GHowe_Downloader.exe

使用参数打开界面

.\GHowe_Downloader.exe `
  --file firmware.bin `
  --port COM3 `
  --baudrate 115200 `
  --wait-packet-ack `
  --packet-ack-check-data `
  --packet-ack-expected-data "0x06" `
  --packet-ack-data-format HEX

无界面自动下载

.\GHowe_Downloader.exe `
  --auto-start `
  --exit-on-complete `
  --file firmware.bin `
  --port COM3 `
  --baudrate 115200

该模式不创建窗口。Python 源码运行时通过标准输出/错误输出报告进度和结果;当前 Windows 图形版 EXE 不提供终端日志,外部调用应等待进程退出并检查退出码。需要终端日志时使用源码入口,见 开发说明。

上面的最简示例未配置 ACK,数据写出后仍会报告结果未知;成功必须有符合设备协议的末包确认,见下方完整自动下载示例。

退出码 含义
0 下载成功
1 串口打开、配置校验或下载未完成,包含取消和结果未知
2 缺少固件文件或串口参数

退出 1 不表示设备没有收到数据。缺少有效完成 ACK、写入后超时/短写/取消,或发送了没有完成确认的结尾命令,都可能是结果未知;不得据此自动重发或重烧。


功能特性

核心功能

  • 串口配置 - 支持波特率、数据位、停止位和校验位配置
  • 文件拖放 - 支持拖放 .bin 文件,也可点击拖放区选择文件
  • 三阶段 ACK 配置 - 开始命令、数据包和末尾数据包可独立配置
  • 无界面自动下载 - 支持外部程序调用,并通过日志和退出码反馈结果
  • 下载设置弹窗 - 下载参数集中配置,主界面保持简洁
  • 一键启停 - 单个按钮切换开始和停止状态
  • 实时输入验证 - 支持 HEX、ASCII、DEC 格式校验和状态提示
  • 转义字符 - 支持 \r、\n、\t、\0、\xHH、\\
  • 可调整布局 - 可拖动分割器调整操作区和日志区高度
  • 日志过滤 - 可选择显示警告、信息和调试日志

协议支持

  • 发送开始命令
  • 数据包大小可配置为 1–4096 字节
  • 支持 CRC16-MODBUS、CRC16-CCITT、CRC16-XMODEM 和 CRC32
  • 支持开始命令、普通数据包和末尾数据包三阶段 ACK 验证
  • 支持下载完成后发送结尾字符串

ACK 验证机制

每个 ACK 阶段支持:

  • 长度判断
  • HEX、ASCII、DEC 数据匹配
  • CRC 校验(仅数据包和末尾数据包)
  • AND、OR 逻辑组合
  • 独立超时时间

获取与运行

从项目的 GitHub Releases 页面下载最新版本 GHowe_Downloader_vX.Y.exe,保存到任意目录后即可运行。

注意事项:

  • 工具仅支持下载 .bin 固件文件
  • 文件大小为 1 字节至 64 MiB,按数据包读取
  • 使用前请确认目标串口没有被其他程序占用
  • 如果 Windows 阻止首次运行,请在文件属性或安全提示中确认文件来源后再打开

使用方式

1. 图形界面

双击 EXE 后按以下步骤操作:

  1. 拖放 .bin 文件到文件区域,或点击该区域选择文件。
  2. 选择串口号、波特率、数据位、校验位和停止位。
  3. 点击「下载设置」,配置数据包大小、CRC 和三阶段 ACK。
  4. 点击绿色「开始下载」。下载过程中可点击红色按钮停止。
  5. 在日志区查看发送进度、ACK 验证和下载结果。

可拖动界面分割器调整操作区与日志区的高度。

2. 命令行配置

默认情况下,命令行参数用于预填充图形界面配置。

基本示例:

.\GHowe_Downloader.exe `
  --file firmware.bin `
  --port COM3 `
  --baudrate 115200

完整配置示例:

.\GHowe_Downloader.exe `
  --file bootloader.bin `
  --port COM3 `
  --baudrate 115200 `
  --packet-size 512 `
  --start-command "START_FLASH\r\n" `
  --add-packet-crc `
  --packet-crc-type CRC16-MODBUS `
  --wait-packet-ack `
  --packet-ack-check-data `
  --packet-ack-expected-data "0x06" `
  --packet-ack-data-format HEX

查看所有参数:

.\GHowe_Downloader.exe --help

详细参数请参考 命令行使用指南。

3. 无界面自动下载

增加 --auto-start 后,工具会跳过图形界面并立即执行下载:

.\GHowe_Downloader.exe `
  --auto-start `
  --exit-on-complete `
  --file firmware.bin `
  --port COM3 `
  --baudrate 115200 `
  --packet-size 512 `
  --wait-packet-ack `
  --packet-ack-check-data `
  --packet-ack-expected-data "0x06" `
  --packet-ack-data-format HEX

该方式适合串口助手、批处理和其他外部程序调用。


转义字符支持

转义序列 说明 实际值
\r 回车符 0x0D
\n 换行符 0x0A
\t 制表符 0x09
\0 空字符 0x00
\xHH 十六进制字符 如 \x1A = 0x1A
\\ 反斜杠 \

示例:

START_FLASH\r\n
OK\r\n
0x06 0xAA
6 170 187

下载流程

1. 打开串口
2. [可选] 发送开始命令
3. [可选] 等待开始命令 ACK
4. 循环发送数据包
   ├─ 读取固件数据
   ├─ [可选] 追加 CRC
   ├─ 发送数据包
   ├─ [可选] 等待数据包 ACK
   └─ 更新进度
5. [可选] 验证末尾数据包 ACK
6. [可选] 发送结尾字符串
7. 关闭串口

ACK 验证逻辑

匹配数据是整帧内容,包含启用的帧末 CRC。长度和数据检查同时启用时,两者帧长度必须一致,与 AND/OR 无关;只检查 CRC 时也须配置帧长度。

AND 模式

所有启用的检查项都必须通过:

✓ 长度检查(期望:3,实际:3)
✓ 数据匹配(整帧内容,包含两字节 CRC)
✓ CRC 校验
→ 结果:通过

OR 模式

任意一个检查项通过即可:

✓ 长度检查(期望:3,实际:3)
✗ 数据匹配(整帧内容不符)
✗ CRC 校验
→ 结果:通过

CRC 类型说明

CRC 类型 长度 说明 常见应用
CRC16-MODBUS 2 字节 初始值 0xFFFF,多项式 0xA001,小端 Modbus RTU
CRC16-CCITT 2 字节 初始值 0xFFFF,多项式 0x1021,大端 XMODEM、Bluetooth
CRC16-XMODEM 2 字节 初始值 0x0000,多项式 0x1021,大端 XMODEM
CRC32 4 字节 标准 CRC32,小端 ZIP、PNG、Ethernet

外部程序集成

外部程序可以启动 EXE 并传入完整下载参数:

.\GHowe_Downloader.exe `
  --auto-start `
  --exit-on-complete `
  --file firmware.bin `
  --port COM3

调用方必须等待进程退出,按前述退出码及结果未知规则处理。需要读取日志时调用 Python 源码入口;当前图形版 EXE 的无控制台构建不承诺标准输出/错误输出。


常见问题

串口打开失败

可能原因:

  • 串口被其他程序占用
  • 串口号不存在
  • 当前用户权限不足

处理方法:关闭其他串口工具,确认设备管理器中的串口号,然后重新运行。

ACK 超时

可能原因:设备未响应、超时时间过短或 ACK 格式配置错误。

处理方法:适当增加超时时间,确认设备实际响应,并检查 ACK 数据格式。

ACK 验证失败

查看日志中的实际接收数据,确认预期数据和格式一致。多个检查条件使用 AND 模式时,所有条件都必须满足。

下载速度慢

可以尝试增大数据包、提高波特率,或在设备协议允许时减少 ACK 等待。


版本历史

V1.4 (2026-10-14) - 下载可靠性改进

待发布,最新正式版本为 v1.3;以下为累计源码变更。

  • 下载核心供串口助手本地下载和远程主控端下载共用,保留既有分包、CRC 和 ACK 协议。
  • 检测串口短写,累计分段到达的 ACK,保留后续帧数据;末包按对应配置等待确认。
  • 改善等待 ACK 时的取消响应,在线程退出时关闭串口。
  • 线程执行/关闭异常保留为可见的失败或未知结果;GUI 等待具体线程退出并完成结算后才允许下一次下载,避免原生退出和迟到回调影响新任务。
  • 校验文件大小和协议参数;缺少有效完成确认时报告结果未知,不自动重发或重烧。
  • 补齐类、构造参数和结果语义说明;修正包内版本号与文档版本不一致。

离线回归入口与验收边界见 开发说明;源码验证不代表新 EXE 或真实设备已经验收。

V1.3 (2026-07-24) - 自动化集成版

  • 新增无界面自动下载模式
  • 支持通过标准输出、标准错误输出和退出码反馈下载结果
  • 支持串口助手和其他外部程序直接调用
  • 新增 Git tag 触发的 GitHub Release 自动构建流程
  • 发布文件自动追加版本号,Release 说明使用 tag 指向提交的完整提交信息
  • 修正 ACK 数据匹配参数示例

V1.2 (2026-07-14) - 交互优化版

  • 下载配置移入独立「下载设置」弹窗
  • 开始和停止合并为单个切换按钮
  • 拖放区支持点击选择文件
  • 文件选择对话框记忆当前路径
  • 窗口最小高度由 750 缩小至 550

V1.1 (2026-01-18) - UI 优化版

  • 支持拖动调整配置区和日志区高度
  • 优化文件拖放区空间占用
  • 禁用配置控件的滚轮响应,防止误操作
  • 添加应用图标
  • 增加完整命令行参数支持

V1.0 (2026-01-14) - 首次发布

  • 支持开始命令、数据包和末尾数据包三阶段 ACK
  • 支持 HEX、ASCII、DEC 实时输入验证
  • 支持转义字符和日志过滤

相关文档


许可证

MIT License


作者: GHowe

联系: 844396800@qq.com

About

功能强大的串口固件下载工具,支持 GUI 界面、命令行调用和 Python 模块导入三种使用方式。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages