【Linux裸机开发】- I.MX6U启动方式

启动模式

I.MX6U 有四个 BOOT 模式,这四个 BOOT 模式由 BOOT_MODE[1:0]来控制,我们用到的只有第二和第三种 BOOT 方式。
在这里插入图片描述
串行下载: 串行下载的意思就是可以通过 USB 或者 UART 将代码下载到板子上的外置存储设备中,我们可以使用 OTG1 这个 USB口向开发板上的 SD/EMMC、 NAND 等存储设备下载代码。
芯片会执行。
内部 BOOT 模式: 内部的 boot ROM 代码,这段 boot ROM 代码会进行硬件初始化(一部分外设),然后从 boot 设备(就是存放代码的设备、比如 SD/EMMC、 NAND)中将代码拷贝出来复制到指定的 RAM 中,一般是 DDR。NOR flash,oneNAND、NAND Flash、QSPI flash、SD/EMMC、EEPROM。我们最常用的就是NAND、SD、EMMC甚至QSPI Flash。
内部 boot ROM 为了加快执行速度会打开 MMU 和 Cache,下载镜像的时候 L1 ICache 会打开,验证镜像的时候 L1 DCache、 L2 Cache 和 MMU 都会打开。一旦镜像验证完成, boot ROM就会关闭 L1 DCache、 L2 Cache 和 MMU。
中断向量偏移会被设置到 boot ROM 的起始位置,当 boot ROM 启动了用户代码以后就可以重新设置中断向量偏移了。一般是重新设置到我们用户代码的开始地方,关于中断的内容后面会详细讲解。
如何选择启动设备 通过BOOT_CFG选择,有BOOT_CFG1,2,4,每个8位,BOOT_CFG是由LCD_DATA0~23来设置的。

面会详细讲解。

Boot ROM

  1. 设置内核时钟,396MHz
  2. 使能MMU、Caches,加速启动
  3. 从BOOT_CFG设置的外置存储中,读取image,然后做相应的处理。

启动头文件

我们编译出来的.bin 文件不能直接烧写到 SD 卡中,需要在.bin 文件前面加上 IVT、 Boot Data 和 DCD 这三个数据块。imxdownload 会在 led.bin 前面添加一些头信息,重新生成一个叫做 load.imx 的文件,最终实际烧写的是 laod.imx。laod.imx: IVT、Boot data、DCD、用户代码可执行文件led.bin组成。
IVT_self: 32K 0x877FF400
Boot data: 12K 0x877FF420
DCD初始化配置主要包括三方面: 0x877FF42C
①、设置 CCGR0~CCGR6 这 7 个外设时钟使能寄存器,默认打开所有的外设时钟。
②、配置 DDR3 所用的所有 IO。
③、配置 MMDC 控制器,初始化 DDR3。

发布了23 篇原创文章 · 获赞 8 · 访问量 2016

猜你喜欢

转载自blog.csdn.net/qq_39610398/article/details/103072873