leaps_fw_update_xfer
应在 leaps_fw_update_start 之后重复调用,以传输固件数据块,直至传输完所有固件。 如果数据块处理成功,则返回状态 “ok”,否则返回错误。 错误由 “ok” 以外的状态表示。 固件更新失败的原因有:
内部错误
无效参数- 例如长度为零的数据块或损坏的数据
不允许 - 尚未启动或整个更新过程失败
校验和错误 - 接收到损坏的数据,或者在更新开始时由 leaps_fw_update_start 提供的校验和值与模块在更新结束时计算的校验和值不匹配
每次调用 leaps_fw_update_xfer 时,都会返回固件更新过程中已经被 dq 处理过的数据的大小和偏移量作为响应,直到更新结束。
输入
offset: 32 位整数 (所有固件数据的偏移量.)
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)表示固件数据请求