HTTP OTA应用指南¶
1. 简介¶
HTTP OTA通过BT PAN(后续支持WIFI/4G等方式)连接服务器,直接和服务器交互完成升级固件,无需手机APP中转,实现"有网即可升级"。
2. 配置¶
HTTP OTA升级需要备份,目前支持NAND, NOR RAMRUN工程升级。
HCPU
OTA MANAGER
3. 如何升级¶
通过主菜单->设置->系统->系统升级->在线升级进行升级。
注意:
需要先连接BT PAN
服务器端有更新的升级包
4. 新增bin升级¶
新增bin升级,需要在ota_bin.c的bin_tbs[]中增加bin描述,描述结构如下:
typedef struct
{
uint8_t can_upgrade; //0 不可升级,bin在升级时会忽略 1,可升级。
uint8_t is_overwrite; //0 备份方式, 需要设定备份地址 1.覆盖方式,直接写入到bin的目的地址
uint32_t update_bit; //升级位,参考ota_bin.h中定义,最多支持32个bin(u32)
const char *name; //固件名,需要和ota_mix.exe制作出bin中的名称一致
uint32_t target_addr; //bin在固件的目的地址
uint32_t bin_size; //bin在固件的大小
bin_comm_process_cb preprocess_cb; //覆盖前的处理,对于覆盖模式,接收时调用,备份模式,安装覆盖时调用
bin_comm_process_cb postprocess_cb;//覆盖后的处理,对于覆盖模式,接收完成调用,备份模式,安装覆盖完成时调用
} bin_desc_t;
注意
未在bin_tbs[]中的bin,固件统一按照覆盖模式处理,起始地址和大小以固件包为准;
采用备份模式的bin,需在
ota_ext_get_backup_addr中实现备份地址的获取逻辑。
5. 续传¶
HTTP OTA支持续传处理,在以下场景时会自动记录续传点:
固件包解析单个bin时;
解析的非压缩bin,接收的大小相较于上次续传记录点刚好是1MB;
解析的非压缩bin,接收的大小相较于上次续传记录点大于等于1MB且解压写入的长度是flash的blk_size的倍数。
6.注意事项¶
续传时的显示的进度可能出现回退现象;
若固件包的 flashmap 发生变化,升级过程中重启后需重新开始升级;
若固件包的 flashmap 未变化,在文件系统 bin(fs_bin)升级过程中重启,该 fs_bin 需从头开始升级;
升级包由 butterfli.exe 生成,是全量包,其中文件系统 bin(fs_bin1、fs_bin2…)及 HCPU、LCPU、L_PATCH 统一采用 gzip 压缩,其余 bin 不压缩,自定义包可以通过ota_mix.exe生成;
FTABLE,BOOTLOADER,OTA MANAGER暂不支持升级。