启动方式选择
BOOT模式有两种
1.改写eFUSE(熔丝);
2. 修改相应的GPIO高低电平。
第一种修改eFUSE的方式只能修改一次,后面就不能再修改了,所以作为学习与调试我们不能使用。第二种是修改GPIO对应的高低电平来选择启动方式,所有的开发板都使用这种方式。
BOTE_MODE[1:0] | BOOT类型 |
---|---|
00 | 从FUSE启动 |
01 | 串行下载 |
10 | 内部BOOT模式 |
11 | 保留 |
开发板只用到第二和第三种BOOT方式。
串行下载
串行下载是指可以通过USB或UART将代码下载到外置存储设备中,所以我们可以使用OTG1这个USB口向开发板的存储设备下载代码。使用时需要用到NXP提供的一个软件,一般用来最终量产的时候烧写到外置存储设备中。
内部BOOT模式
在此模式下,芯片会执行内部boot ROM代码,这段boot ROM代码会进行硬件初始化,然后从boot设备(存储代码的设备如SD/EMMC/NAND)将代码拷贝至指定的RAM,一般是DDR。
BOOT ROM初始化内容
BOOT 启动设备
除了BOOT_MODE1和BOOT_MODE0必须引出来,LCD_DATA3LCDDATA7、LCD_DTAT11这六个IO也被引出来,可以通过拨码开关进行设置,其中LCD_DTAT11是BOOT_CFG2[3],LCD_DAT3LCD_DATA7就是BOOT_CFG[3]~BOOT_CFG1[7],这六个IO配置如下:
BOOT_CFG引脚[1:0] | 对应LCD引脚 | 含义 |
---|---|---|
BOOT_CFG2[3] | LCD_DATA11 | LCD_DATA11|为0时从SDHC上的SD/EMMC启动,为1时从SDHC2上的SD/EMMC启动 |
BOOT_CFG1[3] | LCD_DATA3 | 当从SD/EMMC启动的时候设置启动速度,当从NAND启动的话设置NAND数量 |
BOOT_CFG1[4] | LCD_DATA4 | BOOT_CFG1[7:4] 0000 NOR/OneNAND(EIM)启动。 0001 QSPI 启动。 0011 SPI启动。 010x SD/eSD/SDXC启动。 011x MMC/eMMC启动。 1xxx NAND Flash启动。 |
BOOT_CFG1[5] | LCD_DATA5 | |
BOOT_CFG1[6] | LCD_DATA6 | |
BOOT_CFG1[7] | LCD_DATA7 |
镜像烧写
I.MX6U最终可烧写文件组成如下:
1.Image vector table 简称 IVT,IVT里面包含了一系列的地址信息,这些地址信息在 ROM中按照固定的地址存放着。
2.Boot data,启动数据,包含了镜像要拷贝到哪个地址,拷贝的大小是多少等等。
3.Device configuration data,简称 DCD,设备配置信息,重点是 DDR3的初始化配置。
4.用户代码可执行文件,比如 led.bin。