leaps_fw_update_start
启动固件更新进程. 应在 leaps_fw_update_xfer 之前调用,可能需要数秒. 如果请求被接受,则返回命令状态: “ok”,然后是第一个数据请求. 数据请求应由 leaps_fw_update_xfer 处理. FW 更新的目标可以是 FW ID 等于 1 的 ELDR(扩展加载器)或 FW ID 等于 2 的主 FW. 并非所有硬件平台都支持 ELDR,请参阅 leaps_dev_info_get 命令了解如何读取设备信息. 在 FW 更新过程中,由于固件无法自行更新,因此需要重新启动进入引导加载程序或 ELDR.
如果更新被拒绝,则不会启动更新. 固件更新被拒绝的原因如下:
不允许 - 作为固件更新目标的 FW ID 需要进入引导加载器模式(引导加载器模式总是在复位后短时间内进入,模块在引导加载器模式下停留的时间可以通过 leaps_boot_cfg_set 进行配置).
再次 - 需要重置才能切换到 ELDR/FW,设备重置后需要再次发送更新启动请求. 可以通过 leaps_reset 重置设备.
内部错误
无效参数 - 硬件版本无效或 FW ID 无效.
正在进行的固件更新会通过此命令重新启动.
hw_version: 32 位整数 (硬件版本)
fw_id: ‘1’ | ‘2’ (1表示ELDR-扩展加载器,2表示主固件)
fw_checksum: 32 位整数 (要上传的固件的 crc32)
fw_size: 32 位整数 (固件大小)
offset: 32 位整数 (leaps_fw_update_xfer 下一步需要写入的数据的偏移量)
size: 32位整数(需要leaps_fw_update_xfer 写入的数据大小)
示例
TLV 请求 |
||||||
---|---|---|---|---|---|---|
类型 |
长度 |
价值 |
||||
硬件版本 |
固件ID |
保留 |
固件校验和 |
大小 |
||
0x3E |
0x10 |
0x2A 0x00 0xCA 0xDE |
0x02 |
0x00 0x00 0x00 |
0xea 0xF5 0x67 0x6D |
0xC4 0x26 0x00 0x00 |
类型 0x3E(62 分)表示命令 leaps_fw_update_start
TLV 响应 |
||||||
---|---|---|---|---|---|---|
类型 |
长度 |
价值 |
类型 |
长度 |
价值 |
|
偏移 |
大小 |
|||||
0x40 |
0x01 |
0x00 |
0x7e |
0x08 |
0x00 0x00 0x00 0x00 |
0x00 0x10 0x00 0x00 |
类型 0x40 表示状态代码
类型0x7E(126)表示固件数据请求