通常在系统开发完成或测试时,需要将编译好的新版本U-Boot, Linux kernel和文件系统写入到Flash存储芯片内,我们称之为系统更新。i2X-6UB开发板提供了两种系统更新的方法,USB方法和SD卡方法。
i2C-6ULX-B V2.x版本
i2C-6ULX-B底板上支持多种启动模式和设备启动选择,启动模式由两个跳冒,JP1和JP2控制,支持芯片的三种模式。设备启动选择是一个四位拨码开关,可支持选择从QSPI、SPI、SD、eMMC和NAND其中一种设备启动。
启动模式对于不同存储方案eMMC/NAND的i2S-6UB核心板都是一样的,用于配置i.MX6ULL芯片的工作模式。
Boot Mode | JP1 | JP2 |
---|---|---|
Boot From Fuses | 连接 | 连接 |
Serial Download | 断开 | 连接 |
Internal Boot | 连接 | 断开 |
启动方式用于选择第一启动设备,对于i2S-6UB核心板不同存储芯片的配置有区别。使用时请确定i2S-6ULL核心板所使用的存储方案。
i2S-6UB核心板的启动位状态如下表,i2C-6ULX-B V2.x底板通过BootDev Switch(SW1)拨码开关来选择。
Boot Device | Bit1 | Bit2 | Bit3 | Bit4 |
---|---|---|---|---|
QSPI | ON | ON | ON | ON |
eMMC | OFF | OFF | ON | OFF |
SD Card | ON | OFF | ON | ON |
NAND | OFF | ON | OFF | OFF |
eMMC版本更新方法
i2S-6UB核心板eMMC版本提供了多种更新的方式,结合不同使用场景,可以自由选择。当前分区结构如下:
分区名 | 容量 | 分区 | 分区格式 | 内容 |
---|---|---|---|---|
bootloader + env | 2MB | mmc1boot0 | RAW | U-Boot |
Linux | 64MB | mmcblk1p1 | VFAT | Linux kernel + dtb + boot script |
Recovery | 64MB | mmcblk1p2 | VFAT | Recovery Linux kernel + dtb + boot script |
rootfs | 1.4GB | mmcblk1p3 | Ext4 | Linux Root filesystem |
data | 2GB | mmcblk1p4 | Ext4 | User data |
Recovery 用于维护和更新Linux,rootfs和data分区,需要制做特定的更新包,并启动进入Recovery系统才可以更新。
对于不同的分区,i2SOM提供了多种更新方式,可以根据需要自行选择。
更新方式 更新内容 适用场景
U-Boot方式 用于手动更新uboot和recovery系统 开发板上的U-Boot已损坏无法启动
Recovery方式 仅用于更新rootfs, linux和data分区 开发板eMMC上已有U-Boot和Recovery,并且U-Boot可以启动运行
SD方式 仅用于更新uboot和recovery 开发板eMMC没有任何可启动程序
U-Boot方式
i2S-6UB核心板提供的U-Boot中已加入update命令,用于更新U-Boot和Recovery系统。更新前需要将新版本的U-Boot程序或Recovery系统放入SD卡,SD卡应格式化为VFAT格式。插入SD卡,上电启动后按下Enter键停止在U-Boot的命令行下。
更新U-Boot的命令如下:
update uboot mmc 0 1 u-boot.imx
更新Recovery的命令如下:
update recovery mmc 0 1 recovery.vfat
Recovery方式
Recovery方式需要有更新包文件,文件扩展名为swu。将制做好的更新包文件复制到已格式化为VFAT分区格式的的SD卡内。下面是开发板上的更新操作:
1.切换BootDev Switch(SW1)拨码开关至eMMC启动位,然后插入SD卡,接入电源。
2.上电后按Enter键,停留在U-Boot的命令行下,输入以下命令启动Recovery系统。
setenv mmcpart 2
run bootcmd
3.Recovery系统启动成功后,会自动查找SD卡并挂载后,查到是否有更新包文件,然后执行更新操作。更新成功后,调试串口会输出以下信息,此时可以断开电源后重新上电即可进入更新后的系统。
Software updated successfully
Please reboot the device to start the new software
[NOTIFY] : SWUPDATE successful !
[RECOVERY] Firmware update process succeed!
reboot: Restarting system
SD方式
SD更新方式使用由i2SOM提供的更新镜像,制做成SD更新卡,开发板从SD启动后会自动更新U-Boot和Recovery系统至eMMC Flash。更新镜像文件是i2s6uby2-update-ddr512-emmc4-20180513120554.sdcard.gz。
更新步骤如下:
1.使用USB Image Tool或Win32ImageWrite工具将更新镜像写入SD
2.切换BootDev Switch(SW1)拨码开关至SD卡启动位,插入已制做好的更新SD卡(J7)
3.上电后开发板自动更新,更新成功后D17 LED灯常亮
制作Recovery方式的更新包
Recovery方式更新,需要先制做更新包。i2SOM提供了可以制做更新包的工具,mkupdate_package。下面以制做Linux和Rootfs的更新包为例子。更新包的需要先准备好相应的更新镜像文件和描述文件。描述文件名是sw-description,描述用于更新的分区和文件。
下载i2S-6UB-BuildSWU.tar.gz文件。解压后,执行如下的制做命令:
./mkupdate_package i2s6uby2-emmc-core
sw-description
core-image-base-i2c6ulxbe-20180429170438.boot.vfat
core-image-base-i2c6ulxbe-20180429170438.rootfs.ext4
imx-emmc-postinstall.sh
438726 blocks
命令执行完成后,在当前目录会生成i2s6uby2-emmc-core_1.0_20190702143137.swu文件(文件名的20190702143137为时间戳,请以实际为准)。
制做SD卡更新镜像
下载i2S6UB-BuildUpdateSDImage.tar.gz软件包,在Linux系统下解压后,执行如下命令制做适合i2S-6UB eMMC版本的更新镜像。
sudo ./build-sdcard -som i2s6uby2 -flash emmc -target-dir i2s6uby2-ddr512m-emmc4g-recovery -var 1
[sudo] password for build:
SoM anme : i2s6uby2
Target image dir : i2s6uby2-ddr512m-emmc4g-recovery
Flash Type : emmc
Debug : false
Output file : i2s6uby2-ddr512emmc4-20180513230907.sdcard
SDCard image size : 622592 Byte
Model: (file)
Disk /home/build/i2S6UB-BuildUpdateSDImage/i2s6uby2-ddr512emmc4-20180513230907.sdcard: 638MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 4194kB 528MB 524MB primary lba
boot block 512000
The build sdcard image : i2s6uby2-ddr512emmc4-20180513230907.sdcard.gz
最后生成的i2s6uby2-ddr512emmc4-20180513230907.sdcard.gz文件,可以按照“SD卡方式”写入SD后更新。
NAND版本更新方法
i2S-6UB核心板NAND版本提供了多种更新的方式,结合不同使用场景,可以自由选择。当前分区结构如下:
分区名 容量 分区 分区格式 内容
bootloader 5MB mtd1 RAW U-Boot
bootloader env 1MB mtd2 RAW U-Boot Environment
safe 1MB mtd3 RAW
Linux 16MB mtd4 UBIFS Linux kernel + dtb + boot script
Recovery 32MB mtd5 UBIFS Recovery Linux kernel + dtb + boot script
rootfs 150MB mtd6 UBIFS Linux Root filesystem
data 49MB mtd7 UBIFS User data
Recovery 用于维护和更新Linux,rootfs和data分区,需要制做特定的更新包,并启动进入Recovery系统才可以更新。
对于不同的分区,i2SOM提供了多种更新方式,可以根据需要自行选择。
更新方式 更新内容 适用场景
U-Boot方式 用于手动更新uboot和recovery系统 开发板NAND上已有U-Boot,并且可以启动
Recovery方式 仅用于更新rootfs, linux和data分区 开发板NAND上已有U-Boot和Recovery,并且可以启动进入
SD方式 仅用于更新uboot和recovery 开发板NAND没有任何可启动程序
U-Boot方式
i2S-6UB核心板提供的U-Boot中已加入update命令,用于更新U-Boot和Recovery系统。更新前需要将新版本的U-Boot程序或Recovery系统放入SD卡,SD卡应格式化为FAT格式。插入SD卡,上电启动后按下Enter键停止在U-Boot的命令行下。
更新U-Boot的命令如下:
update uboot mmc 0 1 u-boot.imx
更新Recovery的命令如下:
update recovery mmc 0 1 recovery.ubifs
Recovery方式
Recovery方式更新,需要先制做更新包。i2SOM提供了可以制做更新包的工具,mkupdate_package。下面以制做Linux和Rootfs的更新包为例子。更新包的需要先准备好相应的更新镜像文件和描述文件。描述文件名是sw-description,描述用于更新的分区和文件。
下载i2S-6UB-BuildSWU.tar.gz文件。解压后,执行如下的制做命令:
./mkupdate_package i2s6uby2-nand-i2som-image-core
sw-description
core-image-base-i2c6ulxbn-20190629105449.boot.ubifs
core-image-base-i2c6ulxbn-20190629105449.rootfs.ubifs
147066 blocks
命令执行完成后,在当前目录会生成i2s6uby2-nand-i2som-image-core_1.0_20190702143017.swu文件(文件名的20190702143017为时间戳,请以实际为准)。
将制做好的更新包文件复制到已格式化为VFAT分区格式的的SD卡内。下面是开发板上的更新操作:
1.插入SD卡
2.上电后按Enter键,停留在U-Boot的命令行下,输入以下命令启动Recovery系统
setenv mtdbootpart recovery
run bootcmd
3.Recovery系统启动成功后,会自动查找SD卡并挂载后,查到是否有更新包文件,然后执行更新操作。更新成功后,调试串口会输出以下信息,此时可以断开电源后重新上电即可进入更新后的系统。
Software updated successfully
Please reboot the device to start the new software
[NOTIFY] : SWUPDATE successful !
[RECOVERY] Firmware update process succeed!
reboot: Restarting system
SD方式
更新步骤
当i2S-6UB核心板上的NAND Flash没有任何程序或系统损坏需要恢复时,可以使用SD更新方式,烧写入U-Boot和Recovery系统。
1.将更新文件sdcard.gz写入MicroSD卡
Linux系统
/dev/sdd为MicroSD的设备。
gzip -dc i2s6ub-update-ddr256-nand256-20180421120404.rootfs.sdcard.gz | sudo dd of=/dev/sdd conv=fsync status=progress
Windows系统
使用USB Image Tool工具来烧写,插入SD读卡器后,左侧列表可以看到已经检测到设备。
选择”Restore”按钮,选择”sdcard.gz”文件,确认后就自动烧写。
2.插入MicroSD至开发板MicroSD卡槽,并切换BootDev Switch为SD启动方式,上电后CPU会自动从SD卡启动并烧写U-Boot和Recovery至i2S-6UB的NAND Flash存储器上。更新成功后D17灯常亮。
制做SD更新系统镜像
如果对U-Boot或Recovery系统有定制修改后,可以重新制做SD的更新文件sdcard.gz。以更新i2S-6UB NAND为例。需要先把Yocto下编译好的boot.ubifs, rootfs.ubifs, recovery.ubifs和uboot文件准备好。
mkdir i2s6uby2-ddr256m-nand256m-core
cd i2s6uby2-ddr256m-nand256m-core
cp ../*.boot.ubifs .
cp ../*.rootfs.ubifs .
cp ../*.recovery.ubifs .
cp ../u-boot-nand-1.0-r0.imx .
然后编写Manifest文件
vi Manifest
ddr_size="256"
flash_size="256"
bootloader_img="u-boot-nand-1.0-r0.imx"
linux_img="core-image-base-i2c6ulxbn-20190629105449.boot.ubifs"
recovery_img="core-image-base-i2c6ulxbn-20190629105449.recovery.ubifs"
rootfs_img="core-image-base-i2c6ulxbn-20190629105449.rootfs.ubifs"
然后在开始制作SD更新的镜像包
sudo ./build-sdcard -flash nand -som i2s6uby2 -target-dir i2s6uby2-ddr256m-nand256m-core
Target image dir : i2s6uby2-ddr256m-nand256m-core/
Flash Type : nand
Debug : false
Output file : i2s6uby2-ddr256nand256-20180513231157.sdcard
SDCard image size : 622592 Byte
Model: (file)
Disk /home/build/i2S6UB-BuildUpdateSDImage/i2s6uby2-ddr256nand256-20180513231157.sdcard: 638MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 4194kB 528MB 524MB primary lba
boot block 512000
The build sdcard image : i2s6uby2-ddr256nand256-20180513231157.sdcard.gz
-flash表示存储的类型
-som表示模块的类型
-target-dir 表示更新的目录
运行完后,会生成i2s6uby2-ddr256nand256-20180513231157.sdcard.gz文件。
手动更新dtb文件
前面的方法都可以更新dtb文件,但需要更快速的更新,可以直接复制到对应的boot分区。操作方法如下
# ubiattach -m 3
# mount -t ubifs /dev/ubi1_0 /mnt/
# cp <dtb file> /mnt/zImage-i2c6ulxb-i2s6ull-nand.dtb
# umount /mnt
# ubidetach -m 3
最后编辑:SteveChen 更新时间:2024-10-10 15:16