4.4.9. U 盘升级功能
4.4.9.1. 概述与介绍
简介
U 盘升级功能让用户可以通过在设备开机时插入 U 盘,自动完成系统镜像的更新。此功能无需复杂的操作,便于用户快速更新到最新的系统版本,提升使用体验和效率。
必要条件
U 盘必须使用 FAT32 格式的文件系统。
升级所需的镜像文件应放置在 U 盘根目录下的
update_img目录中。确保开发板 Uboot 能够正常启动,以支持系统顺利升级。
设备在插入 U 盘后,需通过冷启动(断电重启)方式,才能进入 U 盘升级模式。
当前版本支持全镜像升级和单分区升级。
4.4.9.2. 功能介绍
升级类型
U 盘升级功能支持全镜像升级和单分区升级两种方式。
全镜像升级 :将整个系统镜像文件(包括 emmc_disk.img、nand_disk.img )放置在 U 盘的
update_img目录下,设备开机后,U 盘自动识别并升级整个系统镜像。仅支持 nand_disk.img 和 emmc_disk.img 作为镜像文件名称。
单分区升级:将单个分区的镜像文件(如 boot.img、system.img 等)放置在 U 盘的
update_img目录下,设备开机后,U 盘自动识别并升级单个分区的镜像文件。仅支持 boot.img、system.img、userdata.img、hbre.img、app.img 作为镜像文件名称。
升级方法
步骤1:准备升级镜像文件
将升级所需的镜像文件放置在 U 盘的 update_img 目录内,文件名必须符合以上要求。
步骤2:插入U盘
将 U 盘插入设备的 USB 接口,并进行冷启动。
步骤3:开机
设备开机后,U 盘将被自动识别,开始升级系统镜像。
升级过程将持续一段时间,升级过程中,设备将无法正常使用,请耐心等待。
升级完成后,设备将自动重启,系统镜像将更新为最新版本。
4.4.9.3. 移植指南
本章介绍 U 盘升级功能在 Uboot 下的实现代码。开发者只需确保 Uboot 正确配置和准备必要的镜像文件,同时确保 FAT32 格式的 U 盘可用即可。
代码路径
./common/Kconfig
./uboot/cmd/Makefile
./uboot/cmd/usb_autoupdate.c
./uboot/arch/arm/mach-horizon/x5/x5_board.c
Kconfig:添加CONFIG_USB_UPDATE选项,以控制是否编译 U 盘升级功能。Makefile:添加编译 U 盘升级功能。usb_autoupdate.c:实现了 U 盘升级功能的核心代码。x5_board.c:实现了开机启动时启用 U 盘升级功能。
代码集成
复制核心代码:将
usb_autoupdate.c文件复制到 ./uboot/cmd/ 目录下。修改
Makefile文件:在Makefile文件中,添加usb_autoupdate.o到obj-$(CONFIG_USB_UPDATE)变量中。
修改
x5_board.c文件:在x5_board.c文件中,添加usbupdate命令,并通过CONFIG_USB_UPDATE宏来控制是否编译 U 盘升级功能。
修改
Kconfig文件:在Kconfig文件中,添加CONFIG_USB_UPDATE选项。
Uboot 需配置相应参数,以支持 U 盘自动升级功能, 请执行以下命令以打开 Uboot 图形化配置界面:
./bd.sh uboot menuconfig
命令执行成功后,将弹出 Uboot 的图形配置界面,您可以在此界面中设置 U 盘自动升级功能。
进入到
Update support菜单,并勾选Auto update by USB storage devices选项以启用 U 盘自动升级功能:


保存并退出 Uboot 配置界面,编译并烧写 Uboot 镜像到设备中。
升级流程图:

4.4.9.4. 常见问题
如何判断设备是否支持 U 盘自动升级功能?
可以通过查看 Uboot 命令行界面是否有 usbupdate 命令,如果有,则表示设备支持 U 盘自动升级功能。
检查升级结果
升级完成后,您可以通过以下方式检查升级结果:
通过串口查看设备日志,确认升级是否成功。
通过
df -h命令查看 U 盘挂载情况。通过
cat /proc/version命令查看系统版本。
升级失败
如果升级失败,请检查:
U 盘是否正确放置镜像文件( 确保在 update_img 目录下)。
通过串口查看设备日志是否有相关错误信息。
确保 Uboot 能够正常启动,以支持系统顺利升级。
确保设备在插入 U 盘后,需通过冷启动方式,才能进入升级模式。
如果是 eMMC 设备,确保升级前分区状态是正常的,系统能够正常运行。