系统更新
通常在系统开发完成或测试时,需要将编译好的新版本U-Boot, Linux kernel和文件系统写入到核心板板载的Flash存储芯片内,我们称之为系统更新。i2C-MP15X-B开发板提供了两种系统更新的方法,USB方法和SD卡方法。
i2C-MP15X-B开发板上支持多种启动模式和设备启动选择,由SW1来控制。SW1是一个三位拨码开关,可支持选择从QSPI Flash、NAND Flash、eMMC Flash、Micro SD Card其中一种设备来启动。
i2C-MP15X-B开发板通过Boot Switch(SW1)拨码开关来选择核心板的启动模式。
Boot Mode | Bit1 | Bit2 | Bit3 |
Micro SD Card | ON | OFF | ON |
eMMC | OFF | ON | OFF |
QSPI Flash | ON | OFF | OFF |
NAND Flash | ON | ON | OFF |
USB update | OFF | OFF | OFF |
SD卡更新
i2C-MP15X-B开发板支持从Micro SD卡来更新Linux系统到i2S-MP15X核心板的板载eMMC Flash存储器。
准备更新卡
Linux系统下制作SD更新卡
使用以下命令把i2CMP15XB-i2SMP15xD512E4-SDCardUpdate-qt5-20200407210448.img.gz文件写入到Micro SD卡中,/dev/sdb是指Micro SD卡的设备(这里使用了USB读卡器)。
gzip -dc i2CMP15XB-i2SMP15xD512E4-SDCardUpdate-qt5-20200407210448.img.gz | sudo dd of=/dev/sdb conv=fsync status=progress
Windows系统下制作SD更新卡
Windows操作系统使用usbit工具,全称为USB Image Tool。usbit工具将i2CMP15XB-i2SMP15xD512E4-SDCardUpdate-qt5-20200407210448.img.gz文件写入SD卡。工具在资源包的"04-Tools/ProgrammingTool"目录下。
烧写过程
切换设备启动模式(SW1)为Micro SD启动方式,连接好电源后,i2C-MP15X开发板会从Micro SD卡的系统来启动,并自动完成更新操作,更新成功后LED D42会常亮。如果失败,LED D12和D42都会熄灭。
更新成功后,拔出SD卡,切换设备启动模式(SW1)为eMMC启动。
USB更新
由于STM32CubeProgrammer在Windows平台下使用时,烧写速度会非常慢,建议使用Linux系统下来烧写。
我们测试到在Windows下烧写时间在20分钟左右,Linux下烧写时间在5分钟左右,仅供参考!
i2C-MP15X-B开发板使用USB方式更新系统到板载的eMMC存储器内。更新时,使用STM32CubeProg软件工具。
STM32CubeProg虽然有图形界面,但也支持命令行来烧写。
安装STM32CubeProg烧写工具
wiki.st.com/stm32mpu...
在i2C-MP15X-B目录内下载好STM32CubeProg软件,解压并安装。
$ cd $HOME/i2SOM-STM32MP1
$ mkdir STM32CubeProgrammer
$ cd STM32CubeProgrammer
$ unzip SetupSTM32CubeProgrammer.zip
$ ./SetupSTM32CubeProgrammer-2.0.0.linux
接下来根据提示按选择安装即可,默认安装在当前用户的家目录下,$HOME/STMicroelectronics/STM32Cube/STM32CubeProgrammer。
为了使用方便,可以把STM32CubeProgrammer的程序目录配置为PATH变量。
$ export PATH=$PATH:$HOME/STMicroelectronics/STM32Cube/STM32CubeProgrammer/bin
可以查看版本来确认配置是否配置正确。
$ STM32_Programmer_CLI --version
-------------------------------------------------------------------
STM32CubeProgrammer v2.0.0
-------------------------------------------------------------------
STM32CubeProgrammer version: 2.0.0
这里显示版本为2.0.0,说明PATH配置正确。
Linux下由于USB设备权限的原因,需要配置下udev,STM32CubeProgrammer里面有udev配置文件,可以让系统允许普通模式访问PanGu的USB烧写模式。
sudo cp $HOME/STMicroelectronics/STM32Cube/STM32CubeProgrammer/Drivers/rules/50-usb-conf.rules /etc/udev/rules.d/
sudo service udev restart
Linux系统下烧写
下面以Linux下烧写为例,Windows的程序名称是STM32_Programmer_CLI.exe。
烧写前,需要先把i2X-MP15X开发板的设备启动模式切换为USB update模式。
查看USB设备是否识别正常。
$ STM32_Programmer_CLI -l usb
-------------------------------------------------------------------
STM32CubeProgrammer v2.0.0
-------------------------------------------------------------------
===== DFU Interface =====
Total number of available STM32 device in DFU mode: 1
Device Index : USB1
USB Bus Number : 001
USB Address Number : 001
Product ID : DFU in HS Mode @Device ID /0x500, @Revision ID /0x0000
Serial number : 003B00323438510238333630
Firmware version : 0x0110
Device ID : 0x0500
然后,使用提供的烧写包,执行烧写命令,并等待烧写完成。
STM32_Programmer_CLI -c port=usb1 -w flashlayout_i2som-image-qt/FlashLayout_emmc_stm32mp157a-i2cmp15xbe-trusted.tsv
烧写完成后,切换设备启动模式(SW1)为eMMC方式,重新上电后,i2X-MP15X开发板就从板载的eMMC存储器启动了。
macOS系统下烧写
/Applications/STMicroelectronics/STM32Cube/STM32CubeProgrammer/STM32CubeProgrammer.app/Contents/MacOs/bin/STM32_Programmer_CLI -c port=usb1 -w flashlayout_i2som-image-qt/FlashLayout_emmc_stm32mp157a-i2cmp15xbe-trusted.tsv
eMMC的分区结构如下:
分区名 | eMMC分区 | 分区格式 | 内容 |
fsbl1 | mmcblk1boot0 | RAW | tf-a-stm32mp157a-i2cmp15xbe-trusted.stm32 |
fsbl2 | mmcblk1boot1 | RAW | tf-a-stm32mp157a-i2cmp15xbe-trusted.stm32 |
ssbl | mmcblk1p1 | RAW | u-boot-stm32mp157a-i2cmp15xbe-trusted.stm32 |
bootfs | mmcblk1p2 | Ext4 | bootfs.ext4 |
vendorfs | mmcblk1p3 | Ext4 | vendorfs.ext4 |
rootfs | mmcblk1p4 | Ext4 | rootfs.ext4 |
userfs | mmcblk1p5 | Ext4 | userfs.ext4 |
烧写原理
eMMC Flash启动
USB烧写时,使用的配置文件是flashlayout_i2som-image-qt/FlashLayout_emmc_stm32mp157a-i2cmp15xbe-trusted.tsv。配置文件中规定了烧写文件和设备分区地址信息。配置文件内容如下:
#Opt Id Name Type IP Offset Binary
- 0x01 fsbl1-boot Binary none 0x0 tf-a-stm32mp157a-i2cmp15xbe-trusted.stm32
- 0x03 ssbl-boot Binary none 0x0 u-boot-stm32mp157a-i2cmp15xbe-trusted.stm32
P 0x04 fsbl1 Binary mmc1 boot1 tf-a-stm32mp157a-i2cmp15xbe-trusted.stm32
P 0x05 fsbl2 Binary mmc1 boot2 tf-a-stm32mp157a-i2cmp15xbe-trusted.stm32
P 0x06 ssbl Binary mmc1 0x00080000 u-boot-stm32mp157a-i2cmp15xbe-trusted.stm32
P 0x21 bootfs System mmc1 0x00280000 i2som-image-bootfs-openstlinux-eglfs-i2cmp15xbe.ext4
P 0x22 vendorfs FileSystem mmc1 0x04280000 st-image-vendorfs-openstlinux-eglfs-i2cmp15xbe.ext4
P 0x23 rootfs FileSystem mmc1 0x05280000 i2som-image-qt-openstlinux-eglfs-i2cmp15xbe.ext4
P 0x24 userfs FileSystem mmc1 0x85280000 i2som-image-userfs-openstlinux-eglfs-i2cmp15xbe.ext4
QSPI Flash启动
使用的配置文件是flashlayout_i2som-image-qt/FlashLayout_nor-emmc_stm32mp157a-i2cmp15xbe-trusted.tsv。
#Opt Id Name Type IP Offset Binary
- 0x01 fsbl1-boot Binary none 0x0 tf-a-stm32mp157a-i2cmp15xbe-trusted.stm32
- 0x03 ssbl-boot Binary none 0x0 u-boot-stm32mp157a-i2cmp15xbe-trusted.stm32
P 0x04 fsbl1 Binary nor0 0x00000000 tf-a-stm32mp157a-i2cmp15xbe-trusted.stm32
P 0x05 fsbl2 Binary nor0 0x00040000 tf-a-stm32mp157a-i2cmp15xbe-trusted.stm32
P 0x06 ssbl Binary nor0 0x00080000 u-boot-stm32mp157a-i2cmp15xbe-trusted.stm32
PE 0x20 logo Binary nor0 0x00280000 none
PE 0x10 empty Binary nor0 0x002C0000 none
P 0x21 bootfs System mmc1 0x00080000 i2som-image-bootfs-openstlinux-eglfs-i2cmp15xbe.ext4
P 0x22 vendorfs FileSystem mmc1 0x04080000 st-image-vendorfs-openstlinux-eglfs-i2cmp15xbe.ext4
P 0x23 rootfs FileSystem mmc1 0x05080000 i2som-image-qt-openstlinux-eglfs-i2cmp15xbe.ext4
P 0x24 userfs FileSystem mmc1 0x85080000 i2som-image-userfs-openstlinux-eglfs-i2cmp15xbe.ext4
配置文件共有7列,Binary代表目标烧写文件,对应的文件如下:
文件名 | 说明 | 替换说明 |
tf-a-stm32mp157a-i2cmp15xbe-trusted.stm32 | FSBL,Trusted bootchain的第一级启动 | TFA有修改或重新编译 |
u-boot-stm32mp157a-i2cmp15xbe-trusted.stm32 | SSBL,Trusted bootchain的第二级启动 | U-Boot有修改或重新编译 |
i2som-image-bootfs-openstlinux-eglfs-i2cmp15xbe.ext4 | 存放kernel image, DeviceTree文件启动文件 | Yocto编译后的新文件 |
st-image-vendorfs-openstlinux-eglfs-i2cmp15xbe.ext4 | 存放第三方库文件 | Yocto编译后的新文件 |
i2som-image-qt-openstlinux-eglfs-i2cmp15xbe.ext4 | i2som-image-qt系统的根目录文件 | Yocto编译后的新文件 |
i2som-image-userfs-openstlinux-eglfs-i2cmp15xbe.ext4 | 存放用户应用程序 | Yocto编译后的新文件 |
最后编辑:SteveChen 更新时间:2024-09-18 16:47