二.I.MX6U的启动方式

在上一章我们通过点亮LED实现了第一个小程序。在烧录程序完成插入SD卡后有个选择启动拨码开关的步骤,那么这个启动方式是如何实现的,今天我们就来大致了解下I.MX6U的启动方式

一.启动模式选择

按照I.MX6UL的开发手册上所说,整个BOOT的处理过程就是芯片上电后,芯片首先会根据BOOT_MODE[]1:0]的设置来选择启动方式

二.I.MX6U的启动方式

 

 

00为通过可编程熔断丝启动,这种方式只能修改一次,后面就不能修改了,我们不会使用

01为串行下载器模式,就是通过USB或者UART将代码下载到板子的外置存储设备中。针对阿尔法开发板,可以使用支持OTG的USB接口向板子上的SD/EMMC、NAND等设备下载代码。这个下载需要NXP(恩智浦)提供的一个软件,在量产的时候使用。

10为内部BOOT模式,在此模式下芯片会执行bootROM代码,这段代码会进行硬件初始化,然后从boot设备中将代码拷贝出来复制到指定的RAM中,一般就是DDR。

结合硬件原理图来看(下面拨码开关9那里标注不对,应该是LCD_DATA7)

二.I.MX6U的启动方式

 

 

 拨码开关1、2位就是启动方式的选择,我们常用的就是01(USB)或10(内部).

二.启动设备选择

如果要选择启动设备,前提是MODE1=1和MODE0=0,即内部BOOT模式。开发手册上说明了这个模式下支持的设备

二.I.MX6U的启动方式

 

 

 我们最常用的就是NANDflash,SD,EMMC,QSPIFlash(轻量级,便宜)

设备的选择是通过BOOT_CFG1,2,4几个寄存器,每个8为,通过LCD1_DATA00-23y一共24个值决定的。

二.I.MX6U的启动方式

 

 而在开发板上,大部分都是通过47K的下拉电阻接地(BT_CFG4全接地,CFG2上面两个上拉是DNP也就是未焊接,也是全部接地的)

二.I.MX6U的启动方式

往前翻一下那个拨码开关,就是对应了LCD_DATA3/4/5/6/11,对应的BOOT_CFG1[3:7]和BOOT_CFG2[3]

下面的表是讲到BOOT_CFG2的定义

二.I.MX6U的启动方式

 

 3和4一同决定了板子首冲SDHC1还是SDHC2启动。6ULL支持两个SD卡接口,是通过拨码开关3选择,为1的时候是从SDHC2启动

重要的是BOOT_CFG1,还是结合图表来看

二.I.MX6U的启动方式

 

 首先,0,1,2都是定死的,3-7被引到了拨码开关。

由于前三种设备我们都未使用,3同2一同决定了是选择SD或MMC/eMMC的速度(能选的只有3,一般都是0),对于NANDFlash是定义了设备的数量

剩下的就直接看SD,eMMC和NAND的设置就行了

对于SD来说,[7:5]是订好的010,[4]是快速启动,我们一般都是0

eMMC时和SD一样,[7:4]是0110

NAND模式时,[7]固定为1,而[6:4]查手册可以发现

二.I.MX6U的启动方式

 

 [6]是NAND的协议模式,一般我们都用0

[5:4]决定了块的页大小,这个要看NANDFlash的手册了。

上一篇:Android 中点击返回键弹出“在按一次退出程序”的做法


下一篇:二.I.MX6U的启动方式及头部文件