leaps_fw_update_xfer
应在 leaps_fw_update_start 之后重复调用,以传输固件数据块,直至传输完所有固件. 如果数据块处理成功,则返回状态 “ok”,否则返回错误. 错误由 “ok ”以外的状态表示. 固件更新失败的原因有:
内部错误
无效参数- 例如长度为零的数据块或损坏的数据
不允许 - 尚未启动或整个更新过程失败
校验和错误 - 接收到损坏的数据,或者在更新开始时由 leaps_fw_update_start 提供的校验和值与模块在更新结束时计算的校验和值不匹配
每次调用 leaps_fw_update_xfer 时,都会返回固件更新过程中已经被 dq 处理过的数据的大小和偏移量作为响应,直到更新结束.
offset: 32-bit integer (* Offset of the total firmware data.*)
data: 从4到240 字节 (固件数据块.)
offset: 32 位整数 (leaps_fw_update_xfer 下一步需要写入的数据的偏移量)
size: 32位整数 (需要被 leaps_fw_update_xfer 写入的固件数据块大小)
示例
TLV 请求 |
|||
---|---|---|---|
类型 |
长度 |
价值 |
|
偏移 |
数据块 |
||
0x3F |
0x24 |
0x00 0x00 0x00 0x00 |
0xA5 0xA5 0xA5 0xA5 0xA5 0xA5 0xA5 0xA5 …. 0xA5 0xA5 0xA5 0xA5 |
类型 0x3F(63 位十进制)表示命令 leaps_fw_update_xfer
TLV 响应 |
||||||
---|---|---|---|---|---|---|
类型 |
长度 |
价值 |
类型 |
长度 |
价值 |
|
偏移 |
大小 |
|||||
0x40 |
0x01 |
0x04 |
0x7E |
0x08 |
0x00 0x00 0x00 0x00 |
0x00 0x10 0x00 0x00 |
类型 0x40 表示状态代码
类型 0x7E(126 dec)表示固件数据请求