24. IMX启动方式

一、硬件启动方式选择

1、启动方式的选择
LED灯实验,是从SD卡读取bin文件并启动,说明6UL支持从SD卡启动。6ULL支持多种启动方式。
6ULL是怎么支持从多种外置flash启动程序的。
(1)、启动方式选择
BOOT_MODE0和BOOT_MODE1,这两个是两个IO来控制的。选择从USB启动还是内部BOOT启动。如果要烧写系统到开发板中可以选择从USB下载,下载到SD卡,EMMC、NADN等外置存储中。烧写完成设置从内部BOOT启动,然后从相应的外置存储中启动。
(2)、选择启动设备

2、启动设备的选择
前提是,你设置MODE1和MODE0是从内部BOOT启动的,也就是MODE1=1,MODE0=0。
支持哪些设备:
NOR flash,oneNAND、NAND Flash、QSPI flash、SD/EMMC、EEPROM。我们最常用的就是NAND、SD、EMMC甚至QSPI Flash。
如何选择启动设备。
通过BOOT_CFG选择,有BOOT_CFG1,2,4,每个8位。BOOT_CFG是由LCD_DATA0~23来设置的。在ALPHA开发板上,大部分默认都47K下拉电阻接地。BOOT_CFG4的8根线全部接地。BOOT_CFG2全部接地,除了BOOT_CFG2[3],此位用来选择SD卡启动接口。BOOT_CFG1,0,1,2都是顶死的。3,4,5,6,7是可以设置的。
正点原子开发板BOOT电路设置。核心板LCD_DATA0~23基本47K下拉。

3、正点原子ALPH开发板启动原理分析

二、启动头文件

1、Boot Rom做的事情。
设置内核时钟为396MHz。使能MMU和Cache,使能L1cache L2 cache MMU,目的就是为了加速启动。
从BOOT_CFG设置的外置存储中,读取image,然后做相应的处理。
2、IVT和Boot Data数据
Bin文件前面要添加头部。可以得到,我们烧写到SD卡中的load.imx文件在SD卡中的起始地址是0x400,也就是1024。
头部大小为3KB,加上偏移的1KB,一共是4KB,因此在SD卡中bin文件起始地址为4096。
IVT大小为32B/4=8条。
IVT+Boot Data的数据,很多是我从NXP官方u-boot.imx文件里面提取出来的。
IVT:32字节
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Boot Data:
在这里插入图片描述
在这里插入图片描述

3、DCD数据

Device configuration data,DCD数据就是 配置6ULL内部寄存器的。最大1868字节。
首先,将CCRG0~CCGR6全部写为0XFFFFFFFF,表示打开所有外设时钟。然后就是DDR初始化参数。设置DDR控制器,也就是初始化DDR。

在这里插入图片描述

4、其他的数据

检查数据命令、NOP命令、解锁命令。这些其实也都属于DCD

猜你喜欢

转载自blog.csdn.net/lljss1980/article/details/114478997
今日推荐