1.主题

在Tina Linux中,如何使用脚本完成定制化升级

2.问题背景

硬件:全平台
软件:Tina
其他:支持OTA升级的平台,可实现脚本定制化升级

3.具体表现

在OTA升级过程中,添加定制化需求,实现控制变量升级。

4.问题分析

利用swupdate升级满足定制化脚本需求

5.解决办法

因为swupdate支持脚本,所以在升级过程中,添加能够实现定制升级的脚本即可,将带有定制升级的脚本编入策略描述文件(sw-descrition)OTA升级配置文件中(sw-subimgs),在打包ota升级包时,将脚本一起打包进ota包中。在进行下面的配置后,输入升级命令时,首先开始执行脚本中的内容,满足升级条件后,再进行升级流程。下面进行详细的步骤介绍:

1.swupdate支持shellscript脚本,需要以下功能配置(默认选中)

执行:make menuconfig/make ota_menuconfig
Allwinner  --->
    <*> swupdate............................. software update for embedded system
        Swupdate Settings  --->
            General Configuration  --->
                [*] enable pre and postinstall scripts
        Image Handlers  --->
            [*] shellscript
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

2.在swupdate文件夹下创建脚本,名字随意,在脚本中写入要实现的功能。例如:目前有一个方案需要升级,但是分为A,B两种产品,对应做了不同的功能,为了防止升级混淆,可以利用脚本去控制变量升级,比如A产品方案中的env,可以添加一个变量project=a,B产品方案中的env添加一个变量project=b,那么脚本中的内容就可以判断project=a或b时,继续完成升级。env中添加内容和脚本内容举例如下:
env中:
全志系列芯片如何在Tina Linux中使用脚本完成定制化升级?_d3

脚本内容如下:
全志系列芯片如何在Tina Linux中使用脚本完成定制化升级?_d3_02

3.在描述文件中添加脚本功能,在sw-description中添加以下代码:
全志系列芯片如何在Tina Linux中使用脚本完成定制化升级?_插入图片_03

4.将脚本打包进ota包中,脚本名字可以任意起,我这里是preinstall_checkAB.sh。
全志系列芯片如何在Tina Linux中使用脚本完成定制化升级?_控制变量_04

5.重新编译主系统和recovery系统,烧录固件,打包ota包,再进行验证。

6.验证:当校验失败时,返回值为1,会看到如下打印,不能升级。
全志系列芯片如何在Tina Linux中使用脚本完成定制化升级?_d3_05

校验成功时,返回值为0,看到如下打印,升级成功。
全志系列芯片如何在Tina Linux中使用脚本完成定制化升级?_插入图片_06