文件格式解析
-IO-Link行规篇-
前言
在工业物联网的体系中,IO-Link 设备的固件更新(FW-Update)是保证设备持续优化和功能扩展的关键环节。为了实现跨厂家、跨工具的标准化操作,规范专门定义了一种统一的文件格式.iolfw。
今天我们就来深度解析规范7.4节,看看这个文件里到底藏着哪些秘密。
01
本质是“打包”:ZIP 存档结构
虽然扩展名是 .iolfw,但它在本质上是一个ZIP压缩包,这种设计方便了多个相关文件的统一传输和管理。一个标准的固件更新包必须包含以下三大件:
1
元数据文件 (Metadata file)
基于XML格式,描述了固件的身份、版本及内部结构。
2
二进制数据文件 (Binary data file)
即实际要烧录到设备里的固件BLO(二进制大对象)。
3
资源文件 (Resource files)
这是可选的,可能包含设备图标、查找表或补充文档等。
⭐️特别注意:所有文件必须直接放在ZIP根目录下,严禁嵌套文件夹。
02
命名要有“户口”:严格的命名规范
为了让上位机软件一眼就能识别出固件的身份,.iolfw文件的命名必须遵循以下公式:
<供应商名称>-<固件描述符>-<创建日期>-IOLFW<架构版本>.iolfw
▪️供应商名称:
通常是设备制造商的名称。
▪️创建日期:
格式为 YYYYMMDD(如 20240920),且必须与元数据中的发布日期一致。
▪️示例:
GoodsensInc-S1432B519-20151009-IOLFW1.0.iolfw
03
灵魂在“元数据”:XML 描述文件
如果说二进制数据是固件的“躯体”,那么XML元数据文件就是固件的“灵魂”,它使用UTF-8编码,包含几个核心板块:
▪️DocumentInfo(文档信息):
记录版本号、发布日期和版权信息。
▪️MetaInfo(元数据信息):
这里的HW_ID_Key至关重要,它是设备硬件与固件包之间的“密钥”,只有两者匹配,更新才能启动,有效防止刷错固件。
此外还包含vendor ID(供应商 ID)和可选的 fwPasswordRequired(是否需要密码)。
▪️Blob(数据对象):
指明二进制固件的文件名。
04
安全是“底线”:32 位 CRC 校验
固件传输过程中的任何数据损坏都可能导致设备“变砖”。因此,.iolfw文件的根元素IOLink FWData包含一个强制性的CRC属性。
这个32位CRC签名覆盖了ZIP包内的所有内容:XML元数据、二进制BLOB以及所有资源文件。
在计算时,CRC属性本身先设置为空字符串,然后按照元数据文件、二进制文件、资源文件的顺序进行连续计算。
写在最后
为什么要标准化文件格式?
通过统一的.iolfw格式,IO-Link社区确保了:
1. 互操作性:任何厂家的更新工具都能解析其他厂家的固件包。
2. 安全性:通过HW_ID_Key和CRC校验,规避了硬件不匹配或数据损坏的风险。
3. 易用性:开发者甚至可以手动创建ZIP包并重命名,只要符合规范即可。
我们可以把.iolfw文件想象成一个“智能快递柜”:
✅快递单 (XML元数据) 贴在柜门上,写明了这件货是谁发的、要给哪种硬件(HW_ID_Key)以及里面装了什么。
✅柜子里面的商品 (Binary BLOB) 就是真正的固件。
✅密封条 (CRC校验) 保证了从出库到投递,柜子没有被非法撬开或因意外损坏。
✅快递编号 (命名规范) 则让分拣系统(更新工具)能迅速识别出它。
<<< END >>>

微信号丨Rasight
官方网站丨www.rasight.cn