目录
DCD数据(device configuration data)
硬件启动方式的选择
Led灯实验中,是从SD卡读取bin文件并且启动,说明6ULL支持SD卡启动。
6ULL支持多种外置flash启动程序的
利用这里拨码进行调节
启动方式的选择
BOOT_MODE0 和 BOOT_MODE1 是由两个IO来控制的,选择从USB启动韩式内部boot启动。如果要烧写系统到开发板中可以选择从USB下载,下载到SD卡,EMMC,NADN等外置存储中。烧写完成设置从内部BOOT启动,然后从相应的外置存储中启动。
启动设备的选择
前提是,你设置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------------每个八位。
BOOT_CFG是由LCD_DATA0-23来设置的。在ALOHA开发板上,大部分默认都接47k下拉电阻接地。BOOT_CFG2,全部接地,BOOT_CFG4的8根线全部接地。其中由上和下图得出:BOOT_CFG2[3]--------控制读取哪一个SD卡。
BOOT_CFG1之中的0,1,2位是定死的,3,4,5,6,7,是可以设置的。具体设置对应上图。
正点原子核心板上BOOT电路设置如下图
启动头文件
BOOT ROM做的事情
设置内部时钟为396MHz(默认),使能MMU和Cache为了提高BOOT的速度。使能L1 cache L2 cache MMU,目的就是为了加速启动。
从BOOT_CFG设置的外置存储中读取image,然后做相应的处理
IVT和BOOT DATA数据
Bin文件前面添加头,
我们烧写到SD卡中的load.imx文件在SD卡中的起始地址是0x400,也就是1024
头部信息占3k加上上文偏移量的1k总计4k也就是4096之后才是真正的bin文件。
例如在LED灯的开发中,打开load.imx文件可以看到一个二进制格式文件数据如下:
其中的格式如下图:
DCD数据(device configuration data)
DCD数据结构:
其中head与上文中head结构类似
在例表中的head位于00000020-c开始
Tag是单字节固定为0XD2,Length为两个字节,表示DCD区域的大小,包含header,同样是大端模式,Version是单字节,固定为0X40或者0X41.
CMD结构如图:
Tag为一个字节,固定为0XCC。Length是两个字节,包含写入的命令数据长度,包括header,同样是大端模式。Parameter为一个字节,这个字节的每个为含义如下图:
以例表为例:
由上表可以得出,DCD里面的初始化配置主要包括三方面:
-
- 、设置CCGR0-6这七个外设时钟使能寄存器,默认打开所有外设时钟。
- 、设置DDR3所有的IO
- 、配置MMDC控制器,初始化DDR3
其他数据
检查数据命令,NOP命令,解锁命令(这些命令也都属于DCD)