HTTP OTA应用指南

1. 简介

HTTP OTA通过BT PAN(后续支持WIFI/4G等方式)连接服务器,直接和服务器交互完成升级固件,无需手机APP中转,实现"有网即可升级"。

2. 配置

HTTP OTA升级需要备份,目前支持NAND, NOR RAMRUN工程升级。

  1. HCPU

../../_images/http_ota1.png
  1. OTA MANAGER

../../_images/http_ota2.png

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暂不支持升级。