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)表示固件数据请求