I.MX6U支持多种启动方式以及启动设备,比如可以从SD/EMMC、NAND Flash、 QSPI Flash等启动。
1.启动方式选择:
BOOT的处理过程时发生在I.MX6U芯片上电以后,芯片会根据 BOOT_MODE[1:0]的设置来选择BOOT方式 。
BOOT_MODE[1:0]的值可以改变,有两种方式,一种是改写eFUSE(熔丝),一种时 修改相应的GPIO高低电平。第一种只能修改一次,所以常使用第二种。
I.MX6U有一个BOOT_MODE1引脚和 BOOT_MODE0引脚,用这两个 引脚来对应BOOT_MODE{1:0}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0Sdabm1o-1623497873491)(attachment:f9e0be652d0bab4415c6e032d6ae7b78)]
BOOT1_MODE1和BOOT_MODE0在芯片内部是有100k下拉电阻,而我们将BOOT_MODE1和BOOT_MODE0接到了拨码开关上 。
当打开BOOT_CFG的第一个开关拨到 “ON” 时,相当于BOOT_MODE1引脚通过R88这个 10k电阻 接到了3.3v,分压 (100/(100+10))*3.3 = 3v,因此,当拨码开关打开的时候就表示BOOT1_MODE引脚接到了高电平。
![截图](attachment:7db7d438c7fe629181ca00f882ee96df)
01.串行下载
BOOT_MODE1:OFF BOOT_MODE0:ON
可以通过USB或者UART将代码下载到板子上的外置存储设备中,可以使用OTG1这个 USB口向开发板上的额 SD/EMMC、NAND等存储设备下载代码。
10.内部BOOT模式
此模式下,芯片会 执行 内部的boot ROM代码,这段代码会进行硬件初始化(一部分外设 ),然后从boot设备 (存放代码的设备,比如SD/EMMC、NAND)中将代码拷贝出来 复制到指定的RAM中 ,一般是 DDR。
BOOT ROM初始化内容:
首先初始化时钟
启动设备 :(前提是BOOT_MODE设置为 内部BOOT模式 )
1.NOR Flash
2.OneNAND Flash
3.NAND Flash
4.Q SPI Flash
5.SD/MMC/eSD等
6.SPI接口的EEPROM
启动设备的选择依靠GPIO配置:BOOT_CFG1[7:0]、BOOT_CFG2[7:0]、BOOT_CFG4[7:0]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NIn10dMu-1623497873495)(attachment:65dc769d24730f4d7b4c405afdc30da3)]
很多不需要用到,直接接 下拉电阻。
DCD的初始化配置:
1.设置CCGR0~CCGR6七个外设时钟使能寄存器,默认打开所有的外设时钟
2.配置DDR3所用的所有 IO
3.配置MMDC控制器,初始化DDR3