嵌入式Linux学习之I.MX6U启动方式详解

I.MX6U 支持多种启动方式以及启动设备,比如可以从 SD/EMMC、 NAND Flash、 QSPI Flash等启动。

一、启动方式选择

BOOT 的处理过程是发生在 I.MX6U 芯片上电以后,芯片会根据 BOOT_MODE[1:0]的设置来选择 BOOT 方式。 通过修改 BOOT_MODE[1:0]对应的 GPIO 高低电平来选择启动方式。
I.MX6U 有四个 BOOT 模式,这四个 BOOT 模式由 BOOT_MODE[1:0]来控制,也就是BOOT_MODE1 和 BOOT_MODE0 这两 IO, BOOT 模式配置如表 所示:
嵌入式Linux学习之I.MX6U启动方式详解_第1张图片

1.串行下载

串行下载的意思就是可以通过 USB 或者 UART 将代码下载到板子上的外置存储设备中,可以使用 OTG1 这个 USB口向开发板上的 SD/EMMC、 NAND 等存储设备下载代码。

2.内部BOOT模式

在此模式下,芯片会执行内部的 BOOT ROM 代码,这段 BOOT ROM 代码会进行硬件初始化(一部分外设),然后从 BOOT 设备(就是存放代码的设备、比如 SD/EMMC、 NAND)中将代码拷贝出来复制到指定的 RAM 中,一般是 DDR。

二、启动设备

当 BOOT_MODE 设置为内部 BOOT 模式以后,可以从以下设备中启动:
1.接到 EIM 接口的 CS0 上的 16 位 NOR Flash。
2.接到 EIM 接口的 CS0 上的 OneNAND Flash。
3.接到 GPMI 接口上的 MLC/SLC NAND Flash, NAND Flash 页大小支持 2KByte、 4KByte和 8KByte, 8 位宽。
4. Quad SPI Flash。
5.接到 USDHC 接口上的 SD/MMC/eSD/SDXC/eMMC 等设备。
6.SPI 接口的 EEPROM。

启动设备的选择是通过BOOT_CFG1[7:0]、 BOOT_CFG2[7:0]和 BOOT_CFG4[7:0]这 24 个配置 IO,这 24 个配置 IO 刚好对应着 LCD 的 24 根数据线 LCD_DATA0~LCDDATA23,当启动完成以后这 24 个 IO 就可以作为 LCD 的数据线使用。这 24 根线和 BOOT_MODE1、 BOOT_MODE0 共同组成了 I.MX6U的启动选择引脚
对于我们常用的启动方式,我们无需关注BOOT_CFG4[7:0],将其全部接地即可。其实我们
需要配置的引脚数量只有6个

嵌入式Linux学习之I.MX6U启动方式详解_第2张图片
嵌入式Linux学习之I.MX6U启动方式详解_第3张图片

三、镜像烧写

imxdownload 会在 led.bin前面添加一些头信息,重新生成一个叫做 load.imx 的文件
.imx是最后烧录的文件,由以下3部分组成:

  1. Image vector table,简称 IVT, IVT 里面包含了一系列的地址信息,这些地址信息在 ROM
    中按照固定的地址存放着。
  2. Boot data,启动数据,包含了镜像要拷贝到哪个地址,拷贝的大小是多少等等
  3. Device configuration data,简称 DCD,设备配置信息,重点是 DDR3 的初始化配置。
  4. .用户代码可执行文件,比如 led.bin。

你可能感兴趣的:(嵌入式Linux)