主题
TenoDX H503 DFU 刷写工具
应用态一键刷写:打开即申请管理员权限,选择固件后自动让 H503 进入 DFU、 写入固件并校验,完成后提示用户重新插拔设备。
流程
- 启动时若没有管理员权限,通过 UAC 自动重新以管理员身份打开。
- 点击「浏览…」选择
.bin/.hex/.elf/.srec/.s19固件; 勾选「选择固件后自动开始刷写」时,选完即开始。 - 工具扫描所有串口,用 Magic
light info找到TenoDX Debug Port。 - 通过该串口发送 Magic
module=0x00, cmd=0x84, payload=0xA5进入 DFU。 - 等待
0483:DF11DFU 设备枚举,然后调用STM32_Programmer_CLI.exe -c port=USB1 -w <固件> [地址] -v -rst写入、校验并复位(与tools/pro.py一致,.bin默认地址0x08000000)。 - 成功后提示「请拔下设备,重新插上」,重插后设备运行新固件。
H503 的 ROM DFU 有时不支持 CLI 的
-rst,会在校验成功后再报Reset command is not available with JTAG/SWD debug interface(退出码非 0)。 只要出现Download verified successfully,工具就判定为刷写成功, 该提示仅说明需要按第 6 步重新插拔设备来启动新固件。
兜底路径
- dfu-util 备用:找不到
STM32_Programmer_CLI.exe时,自动改用随工具打包的dfu-util.exe+libusb-1.0.dll(来自TenoDXConfigurationTool/DFU/vendor)。 也可以勾选「强制使用 dfu-util」。 - ST-Link/SWD 备用:DFU 设备 (15) 秒内没有枚举出来时,工具会询问是否改用
-c port=SWD mode=UR -w ... -v -rst直接刷写;多 ST-Link 时会拒绝自动选择。 - 安装 DFU 驱动:DFU 设备出现了但 dfu-util 列不出来,多半是 WinUSB 驱动没装, 点击「安装 DFU 驱动」调用配置工具里的签名驱动脚本即可。
命令行
powershell
python h503_dfu_flasher.py # 打开 GUI(自动提权)
python h503_dfu_flasher.py --no-elevate # 不提权,便于调试
python h503_dfu_flasher.py --port COM7 # 指定 Debug 串口
python h503_dfu_flasher.py --programmer <path> # 指定 STM32_Programmer_CLI.exe打包
在 tools/h503_dfu_flasher 下执行:
powershell
powershell -ExecutionPolicy Bypass -File .\build.ps1产物为 dist\TenoDXH503DfuFlasher.exe(单文件,已内置 dfu-util)。 需要本机有 py -3.14 与联网安装 PyInstaller;pyserial 为运行时依赖, 打包环境缺失时先执行 py -3.14 -m pip install pyserial。
环境要求
- Windows 10/11
- STM32CubeProgrammer / STM32CubeCLT(提供
STM32_Programmer_CLI.exe), 使用 dfu-util 路径时可不需要 - 设备已烧录带 Magic
0x84进 DFU 命令的当前 H503 应用固件
相关实现
- 固件侧 DFU 跳转:
TenoDXController-H503/App/config/magic_config.c(系统 Bootloader 地址0x0BF87000) - 上位机协议说明:
TenoDXController-H503/docs/UPPER-COMPUTER-FLASH-AND-RECONNECT.md