0%

Linux驱动学习日记(2) I.MX启动方式

如何选择启动设备

BOOT决定的启动方式

  BOOT_MODE0和BOOT_MODE1是两个IO口,这两个IO口选择了设备是从USB启动还是内部启动。如果要烧写系统到开发板中可以选择从USB下载,下载到SD卡、EMMC、NADN等外置存储中。烧写完成以后从相应的外置存储中启动。

图 1 BOOT_MODE引脚接口

选择启动设备

  选择启动设备的前提是BOOT决定从内部启动(MODE1 = 1,MODE0 = 0)。支持的设备有:NORFlash、OneNAND Flash、QuadSPI Flash、SD/EMMC、EEPROM。我们最常用的是NAND、SD、EMMC等。通过BOOT_CFG选择,有BOOT_CFG1、2、4,每个8位。BOOT_CFG是由LCD_DATA0-23来设置的。

图 2 启动设备表
图 3 BOOT_CFG配置表

启动原理

BOOT ROM初始化内容

  当设置BOOT模式为“内部BOOT模式”后,I.MX6U内部的boot ROM代码会执行,会做以下事情。设置内核时钟为396M。使能MMU和caches,使能L1cache、L2cache、MMU,目的是为了加速启动。
  Bin文件前面需要添加头部。可以得到,我们烧写到SD卡中的load.imx文件在SD卡中的起始地址是0x400,也就是1024.头部大小为3KB,加上偏移的1KB,一共是4KB,因此在SD卡中bin文件起始地址为4096。
  IVT大小为32B/4=8条。

DCD数据

  DCD数据就是配置6ULL内部寄存器的,它从0X2C地址开始。它主要做了以下几件事:
  ①、设置 CCGR0~CCGR6 这 7 个外设时钟使能寄存器,默认打开所有的外设时钟。
  ②、配置 DDR3 所用的所有 IO。
  ③、配置 MMDC 控制器,初始化 DDR3。