升级流程
15 Dec 2023
在进行固件升级的流程中,BROM 阶段需要完成下列任务:
-
下载 Bootloader 到指定位置
-
运行 Bootloader 进入 Bootloader 的升级模式
升级过程中,每一个参与升级的部分都视为升级固件的组件。制作升级固件时,每一个组件都有一个对应的组件描述信息。通过抽象化组件描述信息,可以形成一个统一的升级任务处理流程。具体的组件处理流程如下:
-
SET_FWC_META
工具将对应的组件描述信息发送给设备端。设备端的升级程序依据描述信息,准备接收数据。
-
GET_BLOCK_SIZE
工具获取本次组件传输的数据块大小,以数据块大小为单位发送组件数据。
-
SEND_FWC_DATA
工具发送组件数据给设备端。设备端在接收数据的同时,对接收到的数据进行 CRC 校验。 接收完成之后,设备端依据接收的组件描述信息,对数据执行相应操作。例如,在 BROM 阶段, 如果组件是一个可执行程序,则在接收完成之后,运行组件。
-
GET_FWC_CRC
工具获取设备端计算的 CRC 校验值,判断组件的传输是否正确。
-
GET_FWC_BURN_RESULT
工具获取设备端对组件数据的烧录是否正确。此步是一个统一的流程,但 BROM 不支持烧录组件,因此直接回复成功。
-
GET_FWC_RUN_RESULT
工具获取组件运行的返回值。对于可执行组件,则将组件运行返回值传给工具端。 对于不可执行组件,则统一返回 0.
固件升级时,主机从固件包中顺序读取上述组件,按照流程逐个组件发送给设备端,即可完成 BROM 阶段的任务。