跳转至

OTA使用说明

1. 概述

OTA(Over-The-Air,空中升级)指通过串口升级工具或小程序等方式,对设备端已烧录的固件进行在线更新。CI23LC 系列 SDK 通过 user_config.h 中的宏开关控制 OTA 功能是否使能,并使用 SDK tools 目录下的打包升级工具 PACK_UPDATE_TOOL.exe 完成固件的打包与升级。

备注

默认发布的示例工程 projects/offline_asr_sample 中 OTA 功能处于关闭状态,仅在需要将设备固件升级能力开放给终端或客户时再开启对应宏。

2. OTA功能开关

OTA 功能的开关位于工程配置文件 projects/offline_asr_sample/src/user_config.h:

#define CI_OTA_ENABLE               0   //开启OTA功能,需修改打包升级工具版本,在firmware\config.ini文件中设置成firmware_version=FW_V4
#define OTA_BACKUP_EN               0   //OTA备份标记,与OTA代码保持一致,若有分区备份,则此值设为1,否则为0
  • CI_OTA_ENABLE:OTA 总开关。置 1 开启 OTA 功能;置 0 关闭(默认)。
  • OTA_BACKUP_EN:OTA 备份标记。与 OTA 代码保持一致,若固件存在备份分区则设为 1,否则为 0(默认)。

备注

工程 project_file/makefile 会从 user_config.h 中提取 CI_OTA_ENABLE 与 OTA_BACKUP_EN 的值(对应变量 CI_OTA_EN_VAL、CI_BACK_EN_VAL),据此设置代码在 flash 中的链接基址 TEXT_IN_FLASH_BASE(如未开启 OTA 为 0x50004010,开启 OTA 后随是否备份分区变为 0x50012010/0x50013010)。

3. OTA分区与固件

开启 OTA 后,工程中需要包含 OTA 引导/升级代码分区,示例工程已提供:

projects/offline_asr_sample/firmware/ota_code/ota_code_23242_log0.bin

当 CI_OTA_ENABLE=1 时,还需要在打包升级工具的配置文件 tools/config.ini 中设置固件版本,例如:

firmware_version=FW_V4

备注

tools/config.ini 位于 SDK 根目录的 tools 目录下,由打包升级工具(PACK_UPDATE_TOOL)在首次运行时生成并维护;FW_V4 对应自选 Bootloader 和 Code2 的 OTA 方案。具体可配置项以打包升级工具界面为准。

4. 打包升级工具

SDK 提供图形化打包升级工具 PACK_UPDATE_TOOL.exe,位于 SDK 根目录的 tools 目录下:

tools/PACK_UPDATE_TOOL.exe

该工具用于:

  • 将 user_code、asr、dnn、voice、user_file 等分区文件打包生成固件;
  • 通过 USB 串口设备对模块板进行固件升级;
  • 在开启 OTA 时,按 tools/config.ini 中的 firmware_version 配置生成对应版本固件。

工具详细使用方法参见☞串口升级工具使用说明。

5. 升级流程概述

  1. 在 user_config.h 中将 CI_OTA_ENABLE 置 1(如需分区备份,将 OTA_BACKUP_EN 置 1);
  2. 在 firmware\config.ini 中设置 firmware_version(如 FW_V4);
  3. 编译工程,生成各分区 bin 文件;
  4. 使用 tools/PACK_UPDATE_TOOL.exe 打包生成固件;
  5. 通过串口升级工具或小程序,将固件烧录/升级到设备端。

备注

上述流程中与打包版本、分区、鉴权相关的细节,以打包升级工具(PACK_UPDATE_TOOL)实际界面与工程配置为准;如与本文档存在差异,以工具界面说明为准。