I.MX6U-BOOT相关设置
一、I.MX6U BOOT方式
BOOT的处理过程发生在芯片上电以后,芯片会根据 BOOT_MODE[1:0] 的设置来选择BOOT方式;
有以下两种方式可以改变 BOOT_MODE[1:0] :
- 通过修改指定IO的电平实现(常用的有拨码开关)
- 通过写
eFUSE(熔丝寄存器),来固定启动方式,这种方式一旦实现后就不能更改了。
在I.MX6U的开发板子上,有引出了这两个BOOT IO,接到了外面的拨码开关上


默认状态下,BOOT_MODE1和BOOT_MODE0,是低电平:

这两个引脚内部接了100K的下拉。
它的配置和BOOT方式关系如下:

1.1、串行下载
当 BOOT_MODE[1:0] = 01 时,可以使用串行下载。
可以通过板子上的OTG1 这个 USB口向开发板上的 SD/EMMC、 NAND 等存储设备下载代码。
下载过程需要用到NXP的下载软件一般用来最终量产的时候将代码烧写到外置存储设备中的。
1.2、内部 BOOT
当 BOOT_MODE[1:0] = 10 时,可以使用内部BOOT。
此模式下,芯片会执行内部的 BOOT ROM 代码,这段 BOOT ROM 代码会进行硬件初始化(一部分外设),然后从 BOOT 设备(就是存放代码的设备、比如 SD/EMMC、 NAND)中将代码拷贝出来复制到指定的 RAM 中,一般是 DDR。
二、内部 BOOT ROM初始化内容
当设置BOOT模式为内部BOOT时,芯片会执行芯片内部的一段代码,即 BOOT ROM 代码。
这段代码首先执行的就是初始化时钟。

时钟初始化分为两种模式,每种模式都有对应得 ARM PLL(主频,内核时钟)、System PLL等。
时钟配置完成后,这段 BOOT ROM 代码为了加快执行速度,会打开 MMU 和 Cache。下载镜像时 L1 ICache 会打开,验证镜像时 L1 DCache 、L2 Cache 和 MMU 都会打开。镜像完成后,就会自动将 Cache 和 MMU 关闭。
然后,断向量偏移会被设置到 BOOT ROM 的起始位置,当 BOOT ROM 启动了用户代码以后就可以重新设置中断向量偏移了。一般是重新设置到用户代码的开始地方。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!













