OTA升级

注:文中的所提到的资料均可从下方百度云网盘链接获取。
链接:https://pan.baidu.com/s/1to_UzLne6ab-f9Ea0xurcQ
提取码:s5c0

  • 准备工具

  • 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个进度条和背景图。

文档更新时间: 2021-08-17 14:59   作者:Aeeditor