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