iMX8MM启动流程


我移植的板子是讯为i.MX8MM开发板,参考板为官方 8MMINILPD4-EVK开发板。

  1. iMX8MM uboot2021.04 linux5.15.32移植
  2. iMX8MM启动流程
  3. iMX8MM u-boot2021.04移植
  4. iMX8MM linux5.15.32移植
  5. 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的启动过程,对后面的移植和分析问题有帮助。本文仅供学习参考,如有问题欢迎指正。

### 回答1: imx8mm是一款由恩智浦公司(NXP)推出的处理器系列,其使用了U-Boot(统一引导加载器)作为启动引导程序。在imx8mm上,U-Boot的起始地址取决于该处理器系统的内存布局和配置参数。 一般情况下,imx8mm的U-Boot起始地址在Flash存储器中的某个分区或特定的Flash地址空间。具体的起始地址在开发板的硬件设计和BSP(板级支持软件)中定义。这样做是为了确保U-Boot可以正确地加载到内存中,以便引导操作系统的运行。一种常见的配置方式是将U-Boot放置在Flash存储器的起始扇区,通常是第一个扇区。 当系统上电或重启时,处理器会根据其引导设备设置读取Flash存储器的起始扇区,获得U-Boot的镜像文件。接着CPU会将U-Boot加载到系统内存的指定位置。一旦U-Boot被加载并在内存中运行,它将负责初始化硬件及软件环境,并继续引导操作系统的启动流程。 需要注意的是,具体的imx8mm板级支持软件版本和开发板设计可能会有所不同,因此U-Boot的起始地址可能会因此而有所变化。为了确保正确的U-Boot引导,应该查阅官方文档或相关的开发者指南,以获取准确的U-Boot起始地址信息。 ### 回答2: i.MX8MM U-Boot的起始地址是根据具体的硬件设计和启动设置而定的。一般情况下,i.MX8MM使用的U-Boot起始地址是在内存的前几M处,以确保在系统上电后能够正常引导。 在硬件设计中,通常会为U-Boot分配一个固定的内存地址,将U-Boot的二进制文件加载到该地址处。这个地址可以通过硬件手册或者开发板的设计文档来确定。对于不同的硬件设计,这个地址可能有所不同。 启动过程中,Boot ROM会从固定的存储介质(如闪存、SD卡或者NAND Flash)中加载U-Boot二进制文件到内存中的起始地址。然后,Boot ROM会将控制权交给U-Boot,从而启动整个系统。 在U-Boot启动后,它会进行一系列初始化操作,如设置寄存器、初始化外设等,然后加载操作系统或者其他应用程序。因此,U-Boot的起始地址是整个系统启动的重要标志,确保了系统的正常引导和运行。 总之,i.MX8MM U-Boot的起始地址是根据具体的硬件设计和启动设置而定的,一般位于内存的前几M处。这个地址是通过硬件设计和开发板的文档确定的,系统的引导过程依赖于正确设置和加载U-Boot二进制文件到内存中的起始地址。 ### 回答3: imx8mm芯片的U-Boot启动地址在该芯片的参考手册中有详细说明。U-Boot是一种用于嵌入式系统的开源引导加载程序,负责初始化硬件设备并加载操作系统。具体的起始地址会根据所使用的UBOOT版本以及硬件平台而有所不同。 一般情况下,U-Boot的起始地址通常位于该芯片的内存的低地址区域,比如0x80000000。这个地址是在U-Boot的配置文件中定义的。 在i.MX 8M Mini芯片系列中,例如imx8mm-evk开发板,U-Boot的起始地址可以在其配置文件imx8mm_evk_2019.dts中找到。在该配置文件中,U-Boot的起始地址定义为: chosen { bootargs = "console=ttymxc0,115200 " "root=/dev/mmcblk2p2 rootwait rw"; linux,usable-memory-range = <0x80000000 0x7fffffff>; }; 其中,0x80000000就是U-Boot的起始地址。 总结起来,imx8mm芯片的U-Boot的起始地址是根据硬件平台和UBOOT版本来确定的,并且通常位于内存的低地址区域。具体的起始地址可以在配置文件中找到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MrSonboy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值