Skip to content

TenoDX H503 DFU 刷写工具 ​

应用态一键刷写:打开即申请管理员权限,选择固件后自动让 H503 进入 DFU、 写入固件并校验,完成后提示用户重新插拔设备。

流程 ​

  1. 启动时若没有管理员权限,通过 UAC 自动重新以管理员身份打开。
  2. 点击「浏览…」选择 .bin / .hex / .elf / .srec / .s19 固件; 勾选「选择固件后自动开始刷写」时,选完即开始。
  3. 工具扫描所有串口,用 Magic light info 找到 TenoDX Debug Port。
  4. 通过该串口发送 Magic module=0x00, cmd=0x84, payload=0xA5 进入 DFU。
  5. 等待 0483:DF11 DFU 设备枚举,然后调用 STM32_Programmer_CLI.exe -c port=USB1 -w <固件> [地址] -v -rst 写入、校验并复位(与 tools/pro.py 一致,.bin 默认地址 0x08000000)。
  6. 成功后提示「请拔下设备,重新插上」,重插后设备运行新固件。

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

TenoDX · 内部文档