SkylarkOS OTA 使用指南

优质
小牛编辑
132浏览
2023-12-01

原理概述

OTA使用开源的SWUpdate。 SWUpdate(https://sbabic.github.io/swupdate/swupdate.html)是一个可扩展的软件升级框架,基于cpio定义了一个标准的升级包格式,包括头部和任意多的子镜像,其主要具有以下特性:

  • 支持任意的原子更新Linux系统中的软件镜像
  • 支持用户自定义处理程序安装FPGA固件、微控制器固件等
  • 支持安装固件到多种嵌入式介质(eMMC, SD, Raw NAND, NOR 和 SPI-NOR flashes等)中,
  • 支持本地升级(U盘、SD卡等存储介质)
  • 支持OTA升级(HTTP或Hawkbit)
  • 支持固件校验
  • 支持软件和硬件版本兼容性检查
  • 支持在安装固件前后运行脚本

手动 OTA 升级

  • 进入openwrt/bin
  • 使用 gen_swupdate_img.sh 生成后缀为swu的文件,可以用zip文件打开看里面的内容
  • ./gen_swupdate_img.sh my 将生成my.swu
  • 把 ota 固件 my.swu 放到开发板的/data/upgrade 下面
  • 计算my.swu的md5值。使用命令:md5sum my.swu
  • 假如md5为:110e009d6bfbdd7921162fbc6019fd91,那么把my.swu文件名修改为110e009d6bfbdd7921162fbc6019fd91.img
  • 开发板上执行:fw_setenv upgrade_status available
  • 检查一下状态:fw_printenv upgrade_status
  • reboot
  • 开发板会重启,进入ota系统,然后升级/data/upgrade下的升级文件

编译OTA小系统

OTA小系统包括Linux内核和一个小的Rootfs,以Ramfs方式运行,负责执行固件的烧写,如果在写入的过程中出现异常情况(突然断电等),OTA小系统能确保GX8009不会变砖。

编译OTA小系统:

  • 进入openwrt目录下
  • cp package/robotos/otaburn/leo_gx8010_ota_1v_defconfig .config
  • make defconfig
  • make menuconfig #如果有需要
  • make V=s

把生成的 openwrt-leo-ota-fit-uImage-initramfs.itb 文件放到 openwrt/target/leo/ota