此笔记由个人整理
塞上苍鹰_fly
课程来自:正点原子_手把手教你学Linux
一、硬件启动方式选择
1、启动方式的选择
- 6ull支持多种启动方式
- 启动方式是选择
- BOOT_MODE0和BOOT_MODE1两个IO用来选择启动方式
- 选择USB下载还是内部BOOT启动
- USB下载:可以通过USB或UART将代码下载到板子上的外部存储设备中
- 内部BOOT启动:执行内部的bootROM代码,这段代码会进行代码初始化,让后从外部设备中将代码复制到指定的RAM(DDR)
- 核心板
- 底板
2、启动设备的选择
-
前提是你要将启动方式设置为内部启动模式
- MODE1=1,MODE0=0
-
支持
- NOR flash,oneNAND、NAND Flash、QSPI flash、SD/EMMC、EEPROM
- 常用:NAND Flash、SD、EMMC、QSPI Flash
-
通过BOOT_CFG选择外部设备,有BOOT_CFG1,2,4,每个8位
- BOOT_CFG是由LCD_DATA0~23来设置的
- 大部分默认都47K下拉电阻接地
- LCD_DATA11:用来选择SD卡几启动
- LCD_DATA3-7:配置具体启动设备85/7574
二、启动头文件
1、Boot ROM做的事情
- 设置内核时钟为396MHz
- 使能MMU和cache,使能L1 cache、L2 cache、MMU目的是为了加速启动
- 从BOOT_CFG设置的外置存储中,读取image,然后做相应的处理
- IVT+Boot data+DCD+.bin
2、IVT(Image Vector Table)和Boot Data数据
- bin文件前要添加头部,我们烧写到SD卡中的load.imx文件在SD卡中的起始地址是0x400,也就是1024
- IVT中包含了一系列的地址信息,这些信息在ROM中按照固定的地址进行存放
- IVT头部的格式
- boot data的格式
- IVT表和boot data的存储地址
- SD卡中头部为3kb,偏移量为1kb,所以在Sd卡总0xc00以后的才是实际编写的驱动程序
3、DCD数据(Device Configuration Data)
- 设备配置信息,用来配置内部寄存器的
- DCD头部的格式
- Write data的命令格式
- DCD作用
- 设置 CCGR0~CCGR6 这 7 个外设时钟使能寄存器,默认打开所有的外设时钟
- 配置 DDR3 所用的所有 IO