9.2.1. 模块介绍

9.2.1.1. 术语定义

术语

定义

注释说明

OTA

Over The Air

远程升级

9.2.1.2. 模块简介

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

9.2.1.2.1. 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升级包

9.2.1.2.2. 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中的环境变量采用U-Boot环境变量

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

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

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

9.2.1.2.3. SWUpdate 功能介绍

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

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

  • 支持使用zlib库压缩镜像

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

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

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

  • 支持设置/删除U-Boot变量

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

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

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

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

  • 掉电安全

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

  • 通过make menuconfig进行管理

9.2.1.2.4. Luban OTA升级方式

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

  • 本地升级

  • 网络升级方式

注解

  1. Luban平台配置好了一个 ota 分区, 用来存放 OTA 升级包, 客户可以通过AiBurn的方式将 OTA 升级包烧录到具体开发板上, 直接验证OTA本地升级功能。

  2. 客户如果搭建好了服务器, 并能将服务器上OTA 升级包下载到本地ota分区, 希望通过Luban OTA系统实现单独升级功能, 可以直接通过OTA本地升级方式实现。

  3. 如果本地空间不够, 可以使用SD卡, U盘充当本地存储空间, 存放OTA 升级包。

  4. Luban OTA网络升级方式依赖服务器, 客户如果采用网络方案, 需要搭建好http或ftp服务器, Luban OTA系统可以远程获取服务器里面的数据进行升级。