非后台单区升级模式
Flash布局
固件下载流程
非后台单区升级模式有两种情况,分别为有Bank0固件和无Bank0固件。
- 如图 8所示,有Bank0固件的场景下,固件下载流程为如下步骤:
- 当前程序运行在Bank0固件,由Bank0固件接收主机端下发的升级模式命令。
- Bank0固件接收到主机端下发的非后台单区升级模式后,将升级模式写入DFU Info区域,然后复位设备。
- 复位设备后,当前程序运行于App bootloader固件,在App bootloader固件接收下发的固件。
- 由App bootloader固件将下发的新固件写入Bank0区域,然后将新固件信息写入APP Info区域,并擦除DFU Info区域数据,最后复位设备。
复位后,即按照图 9的启动流程运行。
图 8 固件下载流程 在上述操作中,主机端最开始连接的是Bank0固件,当下发非后台单区升级指令后,设备会进行复位,此时手机APP需要自动重连至App bootloader固件。为了使手机能够准确连接至App bootloader固件,GR5xx提供的方案是:假设Application的蓝牙设备地址为x,跳转至Bootloader后蓝牙设备地址会变成x+1,这样手机即可通过“地址+1”的方式自动连接至App bootloader固件。
- 无Bank0固件的场景下,由App bootloader接收升级模式命令,将升级模式写入DFU Info区域,整个过程中蓝牙无需重连。其余流程和有Bank0固件的场景一致。
App bootloader启动流程
因非后台单区升级模式没有Bank1区域用于缓存新固件,所以DFU Info区域仅用于存储DFU升级模式参数。App bootloader启动流程如下:
- 读取到非后台单区升级模式后,开始升级。
- 固件下载完成后,将新固件的固件参数信息更新至APP Info,然后复位。
- 复位设备后,读取APP Info区域的数据,然后根据APP Info区域的信息跳转至应用固件运行。
流程如下图所示。