Edit online

OTA

Over The Air (OTA) 的简称, 通过网络从服务器上下载更新文件, 对本地系统或者文件进行升级, 便于客户为其用户及时更新系统和应用程序。

Luban OTA 系统方案

  1. Luban OTA 系统方案基于 SWUpdate 平台实现, 并使用 Recovery 系统方案。

  2. 程序 Kernel 和 Rootfs 称为主系统, 在主系统之外, 增加一个 Recovery 系统, 包含 Kernel 和 initramfs, 用来对主系统程序进行升级。

  3. 为了便于演示, 增加 ota 分区, 用于保存 OTA 升级包。

OTA 功能新增分区如下图所示:

../../images/part1.png

注:
  1. 黄色部分表示原始分区,绿色部分表示增加的分区

  2. 框图 recovery 分区用来存放 Recovery 系统程序

  3. ota 分区用来存放 OTA 升级包

Luban OTA 升级过程

升级策略如下:
  1. 主系统升级 Recovery 系统文件, Recovery 系统升级主系统文件;

  2. 主系统升级 Recovery 系统程序、U-Boot 等;

  3. Recovery 系统升级 kernel、rootfs、app 等;

  4. 升级过程中出现异常掉电, 下次启动还能够继续完成剩下的升级过程。

Luban OTA 升级过程

../../images/ota1.png

注:
  1. 步骤 1 中的升级脚本文件名称为 swupdate_cmd.sh

  2. 步骤 2 中的环境变量采用 Boot 环境变量

  3. 在 Boot 启动时, 通过环境变量决定启动主系统还是 Recovery 系统

  4. 一次完整的升级活动, 需要重启两次

  5. 具体的升级过程信息请查看 OTA 配置、设计章节

SWUpdate 功能介绍

  • 可以给 eMMC, SD, NOR, NAND 等介质升级程序

  • 可以更新 UBI 卷的程序, 重新创建 UBI 卷,建立新的 UBI 卷, 配置分区的大小

  • 支持使用 zlib 库压缩镜像

  • 支持识别和使用 U 盘, 支持本地升级

  • 支持更新文件系统里面的单个文件, 必须指定该文件的路径

  • 使用结构化语言来描述镜像, libconfig 语法

  • 支持设置/删除 Boot 变量

  • 多种获取软件的接口, 本地存储: USB,SD,UART,…

  • OTA/远程, 使用 Mongoose 服务器

  • 通过配置可以检查软件和硬件之间的兼容性

  • 支持镜像提取, SWUpdate 以流的方式接收软件, 不进行临时存储

  • 掉电安全

  • 镜像在升级之前经过身份认证和校验

  • 通过 menuconfig 进行管理

Luban OTA 升级方式

按照获取 OTA 升级包的方式分为两种情况

  • 本地升级

  • 网络升级方式

注:
  1. Luban 平台配置好了一个 ota 分区, 用来存放 OTA 升级包, 客户可以通过 AiBurn 的方式将 OTA 升级包烧录到具体开发板上, 直接验证 OTA 本地升级功能。
  2. 客户如果搭建好了服务器, 并能将服务器上 OTA 升级包下载到本地 ota 分区, 希望通过 OTA 系统实现单独升级功能, 可以直接通过 OTA 本地升级方式实现。
  3. 如果本地空间不够, 可以使用 SD 卡, U 盘充当本地存储空间, 存放 OTA 升级包。
  4. Luban OTA 网络升级方式依赖服务器, 客户如果采用网络方案, 需要搭建好 http 或 ftp 服务器, Luban OTA 系统可以远程获取服务器里面的数据进行升级。