启明云端分享|SSD201或SSD202 支持OTA升级教程

提示:文中的所提到的内容也可留言给我们,获取更完善的资料!我们针对sigmastar SSD201/SSD202/SSD210/SSD210专门设立了技术群聊,有需要加入群聊技术沟通讨论的开发者(仅限开发人员)可留 言给我们!


准备工具

otapack

位于project/image/makefiletools/bin/otapack。


otaunpack

下载otaunpack.tar.gz源码包到sdk下并解压,进入解压目录,可以看到3rdparty和source两个文件夹。
进入3rdparty目录,执行以下指令:
git submodule init
git submodule update
进入source目录,打开Makefile,定义PROJ_ROOT指向sdk中的project目录,并修改DB_ALKAID_PROJ指向sdk中的project目录下的current.configs,最后执行make -j4,得到out/app/otaunpack即为我们需要的工具。


flash_eraseall

ota升级需要得到flash_eraseall的支持,而flash_eraseall来自busybox。如果你是完全使用buildroot的rootfs(rootfs.mk中注释掉busybox一行):
#vi project/image/configs/i2m/rootfs.mk
在这里插入图片描述
那么你需要在buildroot中添加flash_eraseall:
#cd buildroot-2020.05/
#arch=arm make busybox-menuconfig

Miscellaneous Utilities —>
[*] flash_eraseall (5.9 kb)
#make
然后更新rootfs.tar.gz即可。
如果你没有在rootfs.mk中注释掉busybox一行,那么你可以下载我们提供的busybox(支持flash_eraseall),然后替换sdk中的busybox(project/image/busybox/目录下)即可。


升级

升级使用工具otapack和otaunpack,这两个工具的使用方法请参考附录1及附录2。
以下分别以升级uboot以及升级cusotmer分区为例,说明升级的过程。
sdk已经包含了ota制作方法,只需要在project目录下执行make image-ota即可,我们也建议使用这种方法。
升级结束后,在End scripts中通过变量OTA_STATUS来获知是否升级成功。如果OTA_STATUS值为0,说明升级成功,为-1说明升级失败。

升级uboot

#cd project
#make image-ota
prepare_ota.sh和finish_ota.sh的路径是相对与project/image目录。prepare_ota.sh在开始升级之前会被执行,finish_ota.sh在升级完成后会被执行。
在这里插入图片描述
在这里插入图片描述
把otaunpack和SStarOta.bin.gz 下载到板子上,并执行otaunpack
#./otaunpack -x ./SStarOta.bin.gz

在这里插入图片描述
可以看到,我们的prepare_ota.sh和finish_ota.sh已经执行了。
这样uboot就更新完成了,ipl、ipl_cust、logo和kernel也能参考这种方法来更新。


升级customer

customer分区是ubi类型,默认已经被mount了,因此需要先umount才能升级。在prepare_ota.sh中可以做到。
#cd project
#make image-ota
在这里插入图片描述
把otaunpack和SStarOta.bin.gz下载到板子上,并执行otaunpack
#./otaunpack -x ./SStarOta.bin.gz

在这里插入图片描述
这样customer分区就升级完成了,同样地,appconfigs和miservice也可以类似地进行升级。


升级rootfs

由于rootfs分区被用作根文件系统了,不能像customer那样umount,因此只能通过复制和替换文件来升级。


升级效果

如果升级设备带屏幕,则可以在升级的时候显示一张图片。如下我在升级的时候显示一张图片industio1024_600.jpg(当然,需要先进行屏幕初始化):
#./otaunpack -x ./SStarOta.bin.gz -p ./industio1024_600.jpg

在这里插入图片描述
可以看到,升级完成后,将2个进度条和背景图。


附录1 oatpack命令参数解释

-c --create: 创建一个空的升级包文件头,此命令创建文件头的同时可以用-b 或-e 添加开始或结束升级
的脚本。
-b --begin-script: 在服务器上指定一个文件,用于板子在升级前执行的脚本。
-e --end-scrip: 在服务器上指定一个文件,用于板子在升级结束后执行的脚本。
-a --append: 在已经创建的升级包中追加新的头信息,追加新的信息中,必须使用以下参数告知升级的
相关讯息。
-s --src-file: 需要更新的源文件路径。
-d --dst-file: 需要更新的目标文件或者分区节点的路径。
-t --dst-file-size: 需要更新的目标文件或者分区的大小,单位为 byte,可以用 16/10 进制表示。
-m --file-mode: 你要更新的文件 mode。
-o --diff-old: 差分升级的接文件、文件夹目录。
-n --diff-new:差分升级的新文件、文件夹目录。
–block-update:打包的数据为一个裸数据的 block 升级。
–ubi-update:打包的数据为 UBI 文件系统的 volume 升级。
–file-update:打包的数据为一个文件升级。
–file-add: 用打包的数据添加一个文件。
–file-delete: 仅更新打包的数据头,删除板子上的目标文件。
–file-update-diff: 打包的数据为差分升级的 diff data。
–dir-update: 扫描新旧两个文件夹中的内容,并比较差异、增加、减少的部分,然后进行批量打包。
–dir-update-diff: 扫描新旧两个文件夹中的内容,并比较差异、增加、减少的部分,然后进行批量打包。
其中差异的文件对其差分数据进行打包。
–help:打印帮助信息。
–debug: 打开调试信息。


附录2 otaunpack命令参数解释

x: 解包并升级压缩的文件
-r: 解包并升级非压缩的文件
-t: 指定一个可写的文件夹路径用于差分升级。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部