Edit online

模块介绍

22 Nov 2024
Read time: 3 minute(s)

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

术语 定义 注释说明
OTA Over The Air 远程升级

Luban OTA 方案介绍

Luban OTA 系统方案具有如下特点:

  • 基于 SWUpdate 平台实现,使用 Recovery 系统方案。

  • 程序 Kernel 和 Rootfs 称为主系统。

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

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

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


part

  • 黄色代表原始分区

  • 绿色代表新加分区

  • recovery 分区 用来存放 Recovery 系统程序

  • ota 分区 用来存放 OTA 升级包

Luban OTA 升级过程

Luban OTA 升级过程如下所示:

  1. 主系统升级 Recovery 系统文件,Recovery 系统升级主系统文件。

    升级脚本文件名称为 swupdate_cmd.sh

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

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

  3. Recovery 系统升级主系统 Kernel、Rootfs、App 等。

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

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


ota

1. Luban OTA 升级示例

SWUpdate 功能介绍

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

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

  • 支持使用 zlib 库压缩镜像

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

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

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

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

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

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

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

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

  • 掉电安全

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

  • 通过 make menuconfig 进行管理

1. SWUpdate 包重要配置描述
文件 说明
CONFIG_UBOOT=y 支持 U-Boot
CONFIG_DOWNLOAD=y 使能通过 libcurl 的方式下载程序
CONFIG_DOWNLOAD_SSL=y 在使用 libcurl 时使能 ssl 校验
CONFIG_WEBSERVER=y 编译 web 服务器, 设备端作为服务器使用
CONFIG_HASH_VERIFY=y 解析升级包时使能 sha256 校验
CONFIG_BOOTLOADERHANDLER=y 在升级过程中允许修改 U-Boot 环境变量
CONFIG_CFI=y 允许给 flash 烧录程序
CONFIG_RAW=y 默认烧录方式, 给 eMMC 使用
CONFIG_SHELLSCRIPTHANDLER=y 支持 shell 脚本升级

OTA 升级获取方式

按照获取 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 系统可以远程获取服务器里面的数据进行升级。