FSL Imx53 启动流程分析(1) --上电启动

时间:2022-04-15 16:38:52

分类: Android   172人阅读  评论(0)  收藏  举报

 

IMx53上电后,进入的是其内部的Memory,从iMx53RM.pdf  Chapter 2中可以查看到System Memory Map图如下:

 FSL Imx53 启动流程分析(1) --上电启动

从片内地址的0x0000_00000x0000_FFFF64KBoot Rom的空间,其固化有Boot CodeIMx53在硬件复位后会强制Arm内核从Boot Rom启动,运行Boot Code

       Boot Code会根据BOOT_MODE[1:0]的寄存器值、eFUSEs状态和GPIO Setting来完成从不同的boot devices启动,Serial Downloader from UART or USBDevice Configuration DataDigital signature based High Assurance BootBoot Devices包括包括NOR FLASHNAND FLASHOneNAND FLASHSD/MMCParmllel ATA/Serial ATA HDDSerial ROM devices(EEPROM)

       BOOT_MODE[1:0]对应PIN脚为C18B20BOOT_MODE的值会在RESET复位的上升沿进行一次采样(仅此一次),并保存在BOOT_MODE寄存器中,之后不论PIN脚电平的变化,均不会改变BOOT_MODE寄存器的值。BOOT_MODE的定义如下图所示:

FSL Imx53 启动流程分析(1) --上电启动

       BOOT_MODE[1:0]0b00时,选择Internal Boot模式启动,在此模式下,启动设备和参数的选择根据BT_FUSE_SELeFUSEsGPIO Setting来选择启动的设备和参数。当BT_FUSE_SEL1(fuse is blown)boot参数是由eFUSEs决定的,它是第一次烧录时选择的devices和参数的保存值;当BT_FUSE_SEL0(fuse is unblown),此时eFUSEs的部分值将被GPIO pin的状态来覆盖,从而选择不同的devices和参数进行启动。GPIO pin的定义及覆盖的eFUSEs值见下图:

 FSL Imx53 启动流程分析(1) --上电启动

        

由于这些GPIO在产品开发时会被使用,飞思卡尔建议Internal Boot模式启动的参数由eFUSEs来决定,只是保留GPIO这种模式用作开发和测试时使用。

       BOOT_MODE[1:0]0b01,保留!

       BOOT_MODE[1:0]0b10,选择Boot From FUSES模式启动,在此模式下,GPIO pin的状态将被忽略,直接选择eFUSEs的设置来进行启动。当BT_FUSE_SEL0时,说明boot devices还没有被烧录,将直接跳到Serial Downloader模式。当BT_FUSE_SEL1时,将按照eFUSEs的设置启动系统。一般选择此模式启动,如果BT_FUSE_SEL1,但是eFUSEs设置对应的设备又不存在时,系统也会自动跳转到Serial Downloader模式,并在重新抄录成功后,改变eFUSEs的值,从而避免硬件boot devices的更改而芯片已经烧录过无法更新eFUSEs的问题。

       BOOT_MODE[1:0]0b11,选择Serial Downloader模式启动。通过USB或者UART进行系统程序下载。

 

eFUSEs的说明见下表:

FSL Imx53 启动流程分析(1) --上电启动

对应于devices及其参数的选择由BOOT_CFG来决定,在此不再赘述,仅列出通过ESDHC boot的参数如下:

FSL Imx53 启动流程分析(1) --上电启动