U-Boot中通过SD卡更新固件

在单板机上手初步的文章中,我们介绍的卡刷的方法,实际上就是一种通过SD卡更新固件的方法,不过在卡刷中,我们使用的是一系列的U-Boot命令组成的脚本,我们也可以在U-Boot中通过输入一个一个的命令地来执行SD卡更新固件的相关功能。

更新U-Boot
注意CC6UL出厂已经带了稳定版本的U-Boot,如果使用原厂的U-Boot,你并无需频繁更新。若要更新U-Boot,执行:
⇒ update uboot mmc 0 fat <u-boot-file>.imx
通常更新完U-Boot,你需要重新启动以便使用它。不同版本的U-Boot可能带来参数的增加或变化,建议重新启动后,执行一次
⇒ env default -a
⇒ saveenv
这样可以使得模块恢复该版本的默认参数。

更新Linux系统
⇒update linux mmc 0 fat <boot-file>.boot.ubifs
⇒ update rootfs mmc 0 fat <rootfs-file>.ubifs
⇒ update recovery mmc 0 fat <recovery-file>.recovery.ubifs

默认地,flash中有一个update分区预留给将来从Linux系统中在更新固件使用,如果你刚从U-Boot更新完固件,可以格式化这个分区,如果你从未进行过在线更新,也可以不进行格式化操作。
要格式化update分区,执行:
⇒ setenv recovery_command wipe_update
⇒ saveenv
⇒ run recoverycmd
或者略过上述三个命令,直接启动进入系统
⇒ boot

更新U-Boot
注意CC6UL出厂已经带了稳定版本的U-Boot,如果使用原厂的U-Boot,你并无需频繁更新。若要更新U-Boot,执行:
update uboot mmc 1 fat <u-boot-file>.imx
通常更新完U-Boot,你需要重新启动以便使用它。不同版本的U-Boot可能带来参数的增加或变化,建议重新启动后,执行一次
⇒ env default -a
⇒ saveenv
这样可以使得模块恢复该版本的默认参数。

更新Linux系统
对于CC6/CC6+,由于采用的是eMMC闪存,需要先对其进行分区配置,以便使用vfat和ext4分区格式。 ⇒ setenv mmcdev 0
⇒ run partition_mmc_linux
然后就可以更新系统
⇒ update linux mmc 1 fat <boot-file>.vfat
⇒ update rootfs mmc 1 fat <rootfs-file>.ext4
⇒ update recovery mmc 1 fat <recovery-file>.vfat
更新完毕后,由于CC6/CC6+也支持Android,所以要检查或重新设置一下启动命令,以便上电后自动启动Linux
⇒ setenv bootcmd dboot linux mmc
⇒ saveenv

此外,flash中有一个update分区预留给将来从Linux系统中在更新固件使用,如果你刚从U-Boot更新完固件,可以格式化这个分区,如果你从未进行过在线更新,也可以不进行格式化操作。
要格式化update分区,执行:
⇒ setenv recovery_command wipe_update
⇒ saveenv
⇒ run recoverycmd
或者略过上述三个命令,直接启动进入系统
⇒ boot

更新U-Boot
注意CC6UL出厂已经带了稳定版本的U-Boot,如果使用原厂的U-Boot,你并无需频繁更新。若要更新U-Boot,执行:
update uboot mmc 1 fat <u-boot-file>.imx
通常更新完U-Boot,你需要重新启动以便使用它。不同版本的U-Boot可能带来参数的增加或变化,建议重新启动后,执行一次
⇒ env default -a
⇒ saveenv
这样可以使得模块恢复该版本的默认参数。

更新Android系统
对于CC6/CC6+,由于采用的是eMMC闪存,需要先对其进行分区配置。
⇒ setenv mmcdev 0
⇒ run partition_mmc_android
然后就可以更新系统
⇒ update boot mmc 1 fat boot.img
⇒ update system mmc 1 fat system.img
⇒ update recovery mmc 1 fat recovery.img
更新完毕后,还需要配置一下首次启动格式化cache和data
⇒ bootargs_once=“androidboot.cache=format androidboot.data=format”
由于CC6/CC6+也支持Android,所以要检查或重新设置一下启动命令,以便上电后自动启动Android
⇒ setenv bootcmd dboot Android mmc
⇒ saveenv

或直接启动进入系统
⇒ boot