1 SWUpdata 概述
SWUpdata 是一个开源项目,该项目可以从存储介质或网络为嵌入式设备更新嵌入式系统。但是,它应该主要被视为一个框架,可以轻松地将更多协议或安装程序(在 SWUpdate 中称为处理程序)添加到应用程序中。
一种用例是从外部本地媒体更新,如 USB 或 SD 卡。在这种情况下,更新是在没有操作员干预的情况下完成的:它被认为是“一键更新”,软件在重置时只需按下一个键(或以任何目标可以识别的方式) ,自动进行所有检查。最后,更新过程只向操作员报告状态(成功或失败)。
如果为远程更新启动,SWUpdate 启动嵌入式 Web 服务器并等待请求。操作员必须上传合适的镜像, SWUpdate 检查然后安装。所有输出都通过 AJAX 通知通知给操作员的浏览器。
2 使用 buildroot 集成 SWUpdate
可以参考第二十章“使用 Buildroot 制作根文件系统,我们使用 buildroot 配置好最基本的文件系统后, 就可以添加第三方库了。 切换到 root 用户在 buildroot-2021.05 目录下使用命令 “make menuconfig” 进入到图形配置界面如下图:
然后我们依次进入如下目录:
Target packages --->
System tools --->
[*] swupdate
勾选上 swupdate,如下图:
作者将制作好的文件系统放在了 “iTOP-i.MX6 开发板资料汇总(不含光盘资料)12_iTOP-i.MX6 开发板 buildroot 系统 OTA 升级”下。
3 SWUpdate 工具的使用
4设置 SWUpdate 服务开机启动
烧写好镜像后给开发板上电启动,
输入用户名:root ,密码:topeet,登录到系统,使用命令 “vi /etc/init.d/rcS”打开 rcS 文件添加以下内 容,如下图:
swupdate -w "--document-root /var/www/swupdate –port 8080" &
保存退出使用命令 “reboot”
重启开发板,可以看到 Swupdate 服务已经开启如下图:
接下来我们就可以在电脑的浏览器的地址栏中输入 “192.168.1.7:8080” (根据自己的开发板的地址填写) ,进入网址如下图:
至此,具有远程升级功能的文件系统就制作好了。
5使用 SWUpdate 远程升级
接着上篇,使用到的升级包制作工具 OTA.tar.bz2 在 “iTOP-i.MX6 开发板资料汇总(不含光盘资料) 12_iTOP-i.MX6 开发板 buildroot 系统 OTA 升级”目录下。
将 OTA.tar.bz2 拷贝到 ubuntu 任意,目录下解压后如下图:
进入解压后的 OTA 目录下,使用命令“tree”查看,如下图
config 目录下放的是关于 EMMC 配置文件。其中 sw-description
的内容可以参考官方手册,其地址为
https://sbabic.github.io/swupdate/swupdate.html
。
creat 是用于生成固件升级包的脚本。
image 目录用于放我们用于升级的 zImage, 设备树文件.dtb, 以及文件系统 rootfs.tgz。(根据自己核心板类型选择镜像)。
使用之前需要将上图 image 中的文件替换成用于升级的对应文件即可,(用于升级的文件系统,要是还想支持下次升级也需要有 swpdate 工具)。 然后在 OTA 目录下使用命令 “./creat”可以生成用于 EMMC 版升级的固件包,如下图。
等待完成后使用命令 “ls”查看,如下图所示,生成了.swu 结尾的固件包。
然后我们使用 ubuntu 下自带的浏览器打开,上节中的升级界面,如下图
然后点击下图部分,弹出固件选择界面
选择好用于升级的.swu 固件后,点击打开即可对开发板进行升级,如下图:
升级成功后直接重启开发板,即可,如下图升级的是一个 openwrt 系统: