闲来记录一下自学正点原子的linux阿尔法板的过程,主要是一些学习过程中的简化笔记。
BOOT_MODE0和BOOT_MODE1,由两个IO控制,选择USB启动还是内部BOOT启动,
USB启动:烧写系统到外置存储中
BOOT启动:烧写完成从内部BOOT启动,再从相应的外置存储中启动。
选择启动设备 参考手册的第8章
MODE1=1,MODE0=0
NOR flash ,NAND Flash , SD/EMMC, QSPI flash(最省成本)
通过BOOT_CFG1,2,4,每个8位
BOOT_CFG是由LCD_DATA0~23来设置的,开发板上默认47K接地。
BOOT_CFG4的8个线全部接地。
BOOT_CFG2全部接地,除了BOOT_CFG2[3],此为用来选择SD卡启动接口。
BOOT_CFG1 .0,1,2都是定死的3,4,5,6,7是可以设置的。
启动头文件:
1、BOOT ROM做的事
设置内核时钟为396Mhz 使能MMU和Cache,使能L1Cache,L2Cache MMU,目的就是为了加速启动。
从BOOT_CFG设置的外置存储中,读取image, 然后做相应的处理。
2、IVT(地址信息)和Boot Data数据
Bin文件前面要加头部,烧写到SD卡中的load.imx文件在SD卡中的起始地址是0x400即1024
头部大小为3KB,加上偏移的1KB,一共4KB,SD卡bin文件起始地址为4096即0xc00
bin起始地址8780 0000
IVT大小为32B/4=8条
3、DCD数据
Device Configuration data DCD数据就是配置6ULL内部寄存器的
CCRG0~CCGR6全部写为0XFFFFFFFF, 表示打开所有外设时钟。