
8541E-A90 bootloader部分适配鸿蒙升级逻辑之代码解读
一、方案拟定
通过修改uboot的启动参数即挂载的分区节点,确定启动主系统还是recovery系统。从而实现通过同一个uboot、同一个kernel启动两个分区的目的,并通过misc分区保存数据实现分区的自由切换。
二、代码逻辑修改
2.1、涉及的代码文件
device/kaihong/8541e/common/bsp/bootloader/u-boot15/common/loader/recv_mode.c
device/kaihong/8541e/common/bsp/bootloader/u-boot15/common/cmd_cboot.c
device/kaihong/8541e/common/bsp/bootloader/u-boot15/common/loader/sprd_fdt_support.c
device/kaihong/8541e/common/bsp/bootloader/u-boot15/include/boot_mode.h
2.2、代码逻辑实现
2.2.1 misc分区结构体适配
**Tips:**标‘*’部分是改动行,其中注掉的部分是原始的代码,没有注掉的为新增的代码
vi device/kaihong/8541e/common/bsp/bootloader/u-boot15/common/loader/recv_mode.c
vi device/kaihong/8541e/common/bsp/bootloader/u-boot15/include/boot_mode.h
2.2.1 修改启动方式
vi device/kaihong/8541e/common/bsp/bootloader/u-boot15/common/cmd_cboot.c
2.2.2 适配分区的挂载节点
vi device/kaihong/8541e/common/bsp/bootloader/u-boot15/common/loader/sprd_fdt_support.c
三、切换分区的命令
**1、**在主分区命令行执行 reboot updater可以切换到recovery分区
**2、**在recovery分区执行 updater_reboot 可以切换到主分区,但是由于recovery分区的串口无法输入,目前无法执行该命令。
以上两种方式均是通过修改misc分区来实现分区切换,现提供hi3516dv300的misc分区的数据结构如下:
