跳转至

FOTA 控制指令

对应源码: components/airlink/src/luat_airlink_cmds.c, components/airlink/include/luat_airlink_fota.h

启用宏: LUAT_USE_AIRLINK_EXEC_FOTA

本系列指令用于传递 FOTA 包, 执行远程升级操作.

指令列表

cmd 名称 方向 说明
0x04 fota_init 主→从 初始化 FOTA 上下文
0x05 fota_write 主→从 写入 FOTA 数据块 (≤1500B)
0x06 fota_done 主→从 通知传输完成 (校验耗时较长)
0x07 fota_end 主→从 结束 FOTA 流程, 清理上下文

时序图

主端                                          从端
 │                                            │
 │── 0x04 fota_init ────────────────────────►│
 │                                            │  初始化 ctx
 │                                            │
 │── 0x05 fota_write (chunk 1, ≤1500B) ─────►│
 │   ◄──── (从机写 flash) ────────────────────│
 │                                            │
 │── 0x05 fota_write (chunk 2) ─────────────►│
 │   ◄──── (从机写 flash) ────────────────────│
 │                                            │
 │   ... (多次, 直至整个升级包传完)             │
 │                                            │
 │── 0x06 fota_done ────────────────────────►│
 │   ◄──── (校验 + 写入最终位置, ≥1s) ────────│
 │                                            │
 │── 0x07 fota_end ─────────────────────────►│
 │   ◄──── (清理 ctx) ────────────────────────│
 │                                            │
 │── 重启从机 (例如 cmd 0x03) ──────────────►│
 │                                            │  升级生效

各指令详细定义

fota_init (0x04)

初始化 FOTA 上下文. 在执行其他 FOTA 指令之前, 必须先执行本指令.

项目
cmd 0x04
data

fota_write (0x05)

传输实际的升级包数据, 二进制形式. 每次传输不超过 1500 字节.

项目
cmd 0x05
data 升级包的二进制数据, 单次长度 ≤ 1500 字节

注意: 鉴于各平台在写入 flash 时可能冗余, 调用方应考虑命令执行的耗时, 等待从机就绪再发送下一个包. 建议在两次 write 之间至少留数十毫秒, 或订阅从机的 ready 事件.

fota_done (0x06)

当数据传输完成, 使用本指令通知被调用方数据已经完成.

项目
cmd 0x06
data

注意: 该步骤通常包含更新数据的校验, 耗时较长, 调用方应预留 1 秒以上, 等待执行完毕.

fota_end (0x07)

结束 FOTA 流程, 通知被调用者清理 FOTA 上下文.

项目
cmd 0x07
data

约束: 只能在执行 "通知传输完成" (0x06) 之后执行. 执行完成后, 可通知设备重启 (例如发送 cmd 0x03), 在重启过程中设备完成自身升级.

Lua 调用示例

-- 异步远程升级, 1-2 分钟
airlink.sfota("/path/to/upgrade.bin")

-- 也可以手动控制:
-- (内部依次调用 fota_init / fota_write* / fota_done / fota_end)
问一下 AI