IronOS DFU打包工具:dfuse-pack.py使用教程

IronOS DFU打包工具:dfuse-pack.py使用教程

【免费下载链接】IronOS Open Source Soldering Iron firmware 【免费下载链接】IronOS 项目地址: https://gitcode.com/gh_mirrors/ir/IronOS

工具概述

dfuse-pack.py是IronOS项目中用于创建DFU(Device Firmware Upgrade)格式固件文件的关键工具,位于source/dfuse-pack.py。该工具支持将二进制文件、Intel HEX文件或S19文件打包成符合DFU规范的固件,适用于TS100、Pinecil等系列焊台设备的固件升级。

DFU是一种USB设备固件升级标准,允许设备通过USB接口更新固件。IronOS通过dfuse-pack.py生成的DFU文件可配合Documentation/Flashing/目录下的设备特定指南完成固件刷写。

安装与依赖

环境要求

  • Python 3.x环境
  • 依赖库:intelhex(处理HEX文件时需要)

安装步骤

# 克隆项目仓库
git clone https://gitcode.com/gh_mirrors/ir/IronOS
cd IronOS

# 安装依赖(如需处理HEX文件)
pip install intelhex

核心功能与使用场景

dfuse-pack.py支持三种主要操作模式,满足不同的固件打包需求:

1. 解析DFU文件

查看现有DFU文件的结构和元数据,验证文件完整性:

python3 source/dfuse-pack.py firmware.dfu

2. 构建DFU文件

支持从多种源文件格式创建DFU固件:

  • 二进制文件(.bin)
  • Intel HEX文件(.hex)
  • S19文件(.s19)

3. 提取DFU内嵌镜像

将DFU文件中的固件镜像提取为独立文件:

python3 source/dfuse-pack.py -d firmware.dfu

详细使用指南

基础命令格式

# 显示帮助信息
python3 source/dfuse-pack.py --help

从二进制文件构建DFU

将二进制文件与地址绑定,生成适用于特定设备的DFU文件:

# 基本用法
python3 source/dfuse-pack.py -b 0x08000000:firmware.bin output.dfu

# 指定设备ID(默认0x0483:0xdf11)
python3 source/dfuse-pack.py -b 0x08000000:firmware.bin -D 0x0483:0xdf11 output.dfu

参数说明:

  • -b ADDRESS:FILE:指定二进制文件及其加载地址
  • -D VENDOR:PRODUCT:设置USB设备ID
  • output.dfu:生成的目标DFU文件

从HEX文件构建DFU

对于Intel HEX格式文件,工具会自动解析地址信息:

python3 source/dfuse-pack.py -i firmware.hex output.dfu

从S19文件构建DFU

支持Motorola S-record格式文件的转换:

python3 source/dfuse-pack.py -s firmware.s19 output.dfu

实战案例:为TS100生成DFU固件

以下是为TS100焊台创建DFU固件的完整流程,结合项目中的Documentation/Flashing/TS100.md指南:

1. 准备工作

确保已构建或获取TS100的二进制固件:

# 假设已通过Makefile构建得到二进制文件
make -C source TS100

2. 生成DFU文件

使用dfuse-pack.py将二进制文件打包:

python3 source/dfuse-pack.py \
  -b 0x08000000:build/TS100.bin \
  -D 0x0483:0xdf11 \
  TS100_IronOS.dfu

3. 验证DFU文件

检查生成的DFU文件结构:

python3 source/dfuse-pack.py TS100_IronOS.dfu

预期输出应包含类似以下的信息:

DfuSe v1, image size: 131072, targets: 1
Target 0, alt setting: 0, name: "ST...", size: 130996, elements: 1
  0, address: 0x08000000, size: 130992
usb: 0483:df11, device: 0x0000, dfu: 0x011a, b'UFD', 16, 0x12345678

4. 刷写固件

使用项目提供的Linux刷写脚本scripts/flash_ts10X_linux.sh完成升级:

# 将DFU转换为HEX格式(TS100原生支持HEX刷写)
dfu-util -d 0483:df11 -a 0 -s 0x08000000 -U TS100_IronOS.hex

# 执行刷写脚本
sudo bash scripts/flash_ts10X_linux.sh TS100_IronOS.hex

高级功能

多镜像打包

支持将多个固件镜像打包到单个DFU文件中,适用于包含引导加载程序和应用程序的场景:

python3 source/dfuse-pack.py \
  -b 0x08000000:bootloader.bin \
  -b 0x08008000:application.bin \
  multi_image.dfu

替代接口指定

为多接口设备指定固件加载的接口:

python3 source/dfuse-pack.py \
  -b 0x08000000@1:firmware.bin \
  -D 0x0483:0xdf11 \
  output.dfu

其中@1表示使用接口1。

常见问题解决

CRC校验错误

若出现CRC错误提示:

CRC ERROR: computed crc32 is 0x12345678

解决方法:

  1. 确认输入文件未损坏
  2. 检查是否使用了正确的设备ID
  3. 尝试重新生成DFU文件

HEX文件处理失败

错误信息:Error: IntelHex python module could not be found 解决方法:安装缺失依赖

pip install intelhex

设备识别问题

在Linux系统中,可使用lsblk命令确认DFU设备:

lsblk -P -p -d --output NAME,MODEL|grep "DFU[ _]Disk"

工具源码解析

核心函数

dfuse-pack.py的主要功能实现位于以下关键函数:

  1. build() - 构建DFU文件

    def build(file, targets, name=DEFAULT_NAME, device=DEFAULT_DEVICE):
        # 构建DFU文件头
        # 添加目标固件数据
        # 计算并添加CRC校验
    
  2. parse() - 解析DFU文件

    def parse(file, dump_images=False):
        # 解析文件头和元数据
        # 验证CRC校验和
        # 可选:提取嵌入式镜像
    
  3. compute_crc() - 计算CRC校验

    def compute_crc(data):
        return 0xFFFFFFFF & -zlib.crc32(data) - 1
    

数据结构

DFU文件格式遵循UM0391规范,主要结构包括:

  • 前缀(Prefix):包含签名、版本和大小信息
  • 目标(Target):设备特定固件数据
  • 元素(Element):单个固件镜像及其地址
  • 后缀(Suffix):包含USB设备信息和CRC校验

相关资源

通过dfuse-pack.py工具,开发者可以轻松创建符合DFU标准的固件文件,结合IronOS提供的刷写指南,实现焊台设备的安全可靠升级。该工具的灵活性使其能够适应不同硬件平台和固件格式需求,是IronOS项目构建流程中的重要组成部分。

【免费下载链接】IronOS Open Source Soldering Iron firmware 【免费下载链接】IronOS 项目地址: https://gitcode.com/gh_mirrors/ir/IronOS

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值