升级的过程只是输入了一条sysupgrade就升级了,但是其中经过了哪些动作我们需要分析下,这样我们就可以实现通过sysupgrade升级fip了,否则只能在uboot下接串口升级fip
1、sysupgrade升级过程分析
使用sysupgrade进行升级的时候,前面会有很多固件校验的工作,校验都通过之后,就开始操作ubi分区写入数据。
具体步骤如下:
- 使用fwtool等命令,校验固件完整性
- 切换到ramdisk
- 使用nand_find_ubi等命令,获取fit卷的ubi卷号
- 使用ubirmvol命令,删除旧fit卷
- 使用ubimkvol命令,新建fit卷
- 使用ubiupdatevol命令,写入固件到fit卷
具体会调用到很多个脚本,如/sbin/sysupgrade、/lib/upgrade/nand.sh、/lib/upgrade/platform.sh
我们主要关注nand.sh文件中的nand_upgrade_fit函数,因为最终是调用到改函数进行ubi分区的操作。
ubi的步骤主要如下:
1. 查找fit的ubi卷号
local fit_ubidev="$(nand_find_ubi "$CI_UBIPART")"
local fit_ubivol="$(nand_find_volume $fit_ubide