Tina_upgrade_app介绍
5 Tina upgrade app 介绍(建议改用swupdate)
5.1 功能简介
以前Tina 只有misc-upgrade,为了特殊需求,创建了本脚本。现在建议直接使用swupdate。
有些客户,需要单独更新应用程序。一种解决方式是,将应用程序单独放到一个分区中,并在启动时挂载该分区。为了保证更新过程掉电重启,仍有可用的应用程
序,可设置两个应用分区,并配合环境变量等选择挂载。
5.2 应用源码
需修改应用源码的Makefile,将应用涉及文件,全部安装到/mnt/app 路径。
如果应用是二进制形式,则请放到:
5.3 menuconfig 设置
选中:
使得/mnt/app 目录, 从rootfs 中分离出来。打包的时候, 会被制作成一个单独的文件app.fex。 选中:
选中后,可使用
进行OTA。
5.4 分区设置
增加两个分区,名字固定为app 和app_sub,downloadfile 固定为app.fex,size 根据实际情况调整。
[partition]
name = app
size = 51200
downloadfile = "app.fex"
user_type = 0x8000
[partition]
name = app_sub
size = 51200
downloadfile = "app.fex"
user_type = 0x8000
5.5 env 设置
对于tina3.5.0 及之前版本,位于:
对于tina3.5.1 及之后版本,位于:
增加配置:
其中appAB 指定要启动时要挂载哪个分区:
applimit 和appcount 用于支持应用的自动回退功能。
5.6 自动回退
applimit=0 时,没有任何作用。
applimit 非0 时,会在每次启动,递增appcount 值,并检测appcount 是否大于applimit,若大于,则切换挂载另一个app 分区。
例如,当前挂载/dev/by-name/app,设置applimit=2,appcount=0。
则每次启动,appcount 加一,两次启动后,appcount =2,再次重启,appcount+1=3>applimit,超过限制,自动改成挂载/dev/by-name/app_sub。
这个功能主要是要解决,更新了一个有问题的应用,导致无法正常启动应用的问题。例如:
当前处于app,OTA 更新了一个有问题的新应用到app_sub 分区,重启,重启后无法正常启动app_sub 中的新应用。则applimit 次重启后,会自动改回使用app
分区中,旧的可用的应用。 使用此功能,需要应用在正常启动后,主动使用 fw_setenv appcount 0 清空计数值,避免累积到applimit 切换分区。
5.7 OTA 步骤
5.7.1 生成OTA 包
tina 目录下,执行
生成OTA 包
5.7.2 下载OTA 包
通过网络或ADB 等方式,将app_ota.tar 放到小机端/mnt/UDISK/app_ota.tar。
5.7.3 执行OTA
执行脚本:
5.8 调试
生成OTA 包的函数,位于:
可从生成的tar 文件中,将app.fex 解出来:
解压得到的app.fex,是一个ext4 文件系统,可在linux 主机,或推送到小机端,挂载,查看文件系统中的内容: