编译U-Boot
i2C-MP15X-B 开发板
i2C-MP15X-B开发板支持NAND,eMMC,QSPI Flash,SD Card方式的启动。
启动方式 | 配置文件 | 适用设备 |
Basic chain 支持从SD,eMMC,NAND,QSPI Flash启动 | stm32mp15_basic_defconfig | i2S-MP157AI-D512E4 核心板 + i2C-MP15X-B底板 i2S-MP157AI-D512E4 核心板 + i2C-MP15X-B底板(含QSPI Flash) |
Trusted chain支持从SD,eMMC,NAND,QSPI Flash启动 | stm32mp15_trusted_defconfig | i2S-MP157AI-D512E4 核心板 + i2C-MP15X-B底板 i2S-MP157AI-D512E4 核心板 + i2C-MP15X-B底板(含QSPI Flash) |
i2C-MP15X-B开发板使用U-Boot作为整个系统的启动加载程序。构建U-Boot后得到两个文件,u-boot-spl.stm32和u-boot.img。u-boot-spl.stm32再spl目录下,u-boot.img在u-boot的根目录下。可写入到不同存储设备内。
下载好U-Boot的代码后,复制到工作目录下解压,并请确认当前shell已加载编译工具链。
$ cd $HOME/i2SOM-STM32MP1
$ tar xvf u-boot-st.tar.gz
$ cd u-boot
U-Boot支持两种bootchain,Basic bootchain 和 Trusted bootchain。
i2X-MP15X开发套件选择使用的是Trusted bootchain模式,所以构建选择Trusted方式的命令即可。
Basic bootchain
$ make pangu_basic_defconfig
$ make DEVICE_TREE=stm32mp157a-i2cmp15xbe all
Trusted bootchain
$ make pangu_trusted_defconfig
$ make DEVICE_TREE=stm32mp157a-i2cmp15xbe all
编译结束后,在当前目录下可以查看当前目录和spl目录,可以看到对应的文件。
$ ls
api config.mk cscope.po.out drivers include MAINTAINERS scripts tools u-boot.dtb u-boot.map
arch configs ctags dts Kbuild Makefile spl u-boot u-boot-dtb.bin u-boot-nodtb.bin
board cscope.files disk env Kconfig net System.map u-boot.bin u-boot-dtb.img u-boot.srec
cmd cscope.in.out doc examples lib post tags u-boot.cfg u-boot.img u-boot.sym
common cscope.out Documentation fs Licenses README test u-boot.cfg.configs u-boot.lds
$ ls spl/
arch common dts include u-boot-spl u-boot-spl-dtb.bin u-boot-spl-nodtb.bin u-boot-spl.stm32.log
board disk env lib u-boot-spl.bin u-boot-spl.lds u-boot-spl-pad.bin
cmd drivers fs u-boot.cfg u-boot-spl.dtb u-boot-spl.map u-boot-spl.stm32
构建完成后,会生成一些文件,以下是文件说明
文件 | 说明 |
spl/u-boot-spl.stm32 | 包含STM32信息头的SPL 二进制文件,在Basic boot chain下用于FSBL |
u-boot.img | 包含UImage信息头的U-Boot 二进制文件,在Basic boot chain下用于SSBL |
u-boot.stm32 | 包含STM32信息头的U-Boot二进制文件,在Trusted boot chain下用于SSBL |
u-boot | U-Boot的ELF文件,用于GDB调试 |
spl/u-boot-spl | SPL的ELF文件,通常用于gdb调试 |
替换SD卡的U-Boot
测试新的U-Boot程序时,可以使用SD卡启动方式,可以快速验证U-Boot是否正常启动,可以将U-Boot写入SD卡的对应分区。
$ dd if=u-boot-spl.stm32 of=/dev/sdb1 conv=fdatasync
$ dd if=u-boot-spl.stm32 of=/dev/sdb2 conv=fdatasync
$ dd if=u-boot.img of=/dev/sdb3 conv=fdatasync
Basic bootchain下替换eMMC中的Bootloader
Basic bootchain下的Bootloader由U-Boot提供,把编译后的U-Boot镜像文件spl.stm32和u-boot.img写入到eMMC。
以下命令操作在开发板上运行,执行错误或文件写入错误,会导致开发板无法启动。如出现无法启动的情况,请重新烧写开发板即可。
# echo 0 > /sys/class/block/mmcblk1boot0/force_ro
# echo 0 > /sys/class/block/mmcblk1boot1/force_ro
# dd if=spl.stm32 of=/dev/mmcblk1boot0 conv=fdatasync
# dd if=spl.stm32 of=/dev/mmcblk1boot1 conv=fdatasync
# echo 1 > /sys/class/block/mmcblk1boot0/force_ro
# echo 1 > /sys/class/block/mmcblk1boot1/force_ro
# mmc bootpart enable 1 1 /dev/mmcblk1
# dd if=u-boot.img of=/dev/mmcblk1p1 conv=fdatasync
Trusted bootchain下替换eMMC中的Bootloader
Trusted bootchain下的U-Boot提供SSBL阶段的文件,例如u-boot.stm32,文件名以stm32结尾。
# dd if=u-boot.stm32 of=/dev/mmcblk1p1 conv=fdatasync
MYD-YA157CV2-4E512D 开发板
Trusted bootchain
$ make pangu_trusted_defconfig
$ make DEVICE_TREE=stm32mp157c-mydya157cv2 all
最后编辑:SteveChen 更新时间:2024-09-18 16:43