我移植的板子是讯为i.MX8MM开发板,参考板为官方 8MMINILPD4-EVK开发板。
- iMX8MM uboot2021.04 linux5.15.32移植
- iMX8MM启动流程
- iMX8MM u-boot2021.04移植
- iMX8MM linux5.15.32移植
- iMX8MM buildroot-2022.02.5构建根文件系统
1. Boot ROM
iMX8MM的Boot ROM与iMX6ULL相似,上电运行的第一个程序,作用是准备下一阶段的环境并且加载启动下一阶段的程序。这里不做过多的介绍,可以看本栏iMX6ULL的启动流程简单学习,也可以参考iMX8MM的参考手册深入学习。
2. IVT和DCD
IVT和DCD是镜像向量表(Image Vector Table)和设备配置数据(Device Configuration Data),这里不做介绍。可以看本栏iMX6ULL的启动流程简单学习,也可以参考iMX8MM的参考手册深入学习。
3. 启动流程
iMX8MM的启动流程和iMX6ULL的启动流程有略微的差别,官方在iMX8MM启动过程中使用了ARM可信固件(ARM Trusted firmware,ATF)。我们抛开ATF其他的作用不说,我们的目的是启动uboot进而启动linux内核。但是我们得知道官方提供的代码iMX8MM的启动过程,对我们之后的移植和调试有帮助。
ATF是ARM提供的一套软件架构供用户使用,用户可进行自由选择使用。这套软件架构的启动流程为BL1->BL2->BL31/32->BL33,BL1就是Boot ROM加载并启动BL2,BL2加载BL31、BL32和BL33并启动BL31和BL32,BL33就是uboot一般由BL31或BL32启动。这个启动过程并不是绝对的,我们所移植iMX8MM并不使用ATF的BL2和BL32,替代BL2功能的是uboot的SPL,不使用BL32。我们的启动流程为Bootrom->SPL->BL31->BL33(uboot)->Linux kernel,当然nxp也提供了另外一种启动方式可以自行了解。
4. 总结
简单了解iMX8MM的启动过程,对后面的移植和分析问题有帮助。本文仅供学习参考,如有问题欢迎指正。