NXP的I.MX6U系列SoC启动流程

1、前言

NXP家的I.MX6U系列的SoC支持多种启动方式以及启动设备,使用该系列SoC的用户可以根据自己的实际情况,选择合适的启动方式和启动设备,例如,可以从Nnad Flash、eMMC和SDCard等不同设备中启动,从不同的启动设备中启动,启动要求一般都不同。

2、I.MX6UL启动方式

以I.MX6UL这款SoC为例,启动引导过程是从上电复位(POR)开始的,此硬件复位逻辑强制ARM内核从芯片上的Boot ROM开始执行,Boot ROM代码使用内部寄存器BOOT_MODE[1:0]的状态以及eFUSE和GPIO设置的状态,以确定启动设备。

Boot ROM的主要特性包括:

  • 支持各种启动设备启动
  • 串行下载支持(USB OTG和UART)
  • 设备配置数据(DCD)和PLUGIN
  • 基于数字签名和加密的高保正启动(HAB)
  • 从低功耗唤醒

Boot ROM支持以下的启动设备:

  • NOR Flash
  • NAND Flash
  • OneNAND Flash
  • SD/MMC
  • SPI Flash和EEPROM
  • QSPI Flash

对于I.MX6U系列的SoC而言,有4种启动模式,这4种模式是由BOOT_MODE[1:0]进行控制的,其实就是芯片上的BOOT_MODE1和BOOT_MODE0这两个引脚,启动方式配置如下:

当BOOT_MODE[1:0]=01的时候,启动方式为Serial Downloader,芯片处于该模式的时候,用户可以通过USB接口进行固件下载,当BOOT_MODE[1:0]=10的时候,启动方式为Internal Boot,此时,Boot ROM代码将会读取DCD数据初始化DDR,并从启动设备,例如Nand Flash种拷贝启动镜像文件,从而引导启动,这两种启动方式是用户用得最多的。

3、Boot ROM设备初始化

当用户配置BOOT_MODE[1:0]=10的时候,为Internel Boot启动模式,对于I.MX6U系列的SoC将会执行Boot ROM代码,首先会进行SoC的时钟初始化,Boot ROM代码设置的系统时钟如下:

从图中可以知道,当BT_FREQ为0的时候,ARM PLL=396MHz,也就是主频为396MHz,System PLL=528MHz等,另外,Boot ROM为了加快执行速度还会打开MMU和Cache,中断向量偏移还会被设置到Boot ROM的起始位置,当用户代码启动以后可以重新设置中断向量偏移。

对于I.MX6UL芯片,Boot ROM设备初始化下的内部ROM和RAM的内存映射如下:

Boot ROM代码的启动引导较复杂,关于整个启动流程的更详细过程,可以参考相关芯片的参考手册。

4、I.MX6UL启动设备选择

5、IVT、Boot Data和DCD数据添加

6、小结

猜你喜欢

转载自www.cnblogs.com/Cqlismy/p/12392820.html