1. BOOT_MODE[1:0] 内部寄存器 RESET_B上升沿时,BOOT_MODE[1:0]从BOOT_MODE0和BOOT_MODE1两个引脚获取初始值。 (BOOT_MODE[1:0]的值可以从SRC_SBMR寄存器的BMOD[1:0]域读到) ![]() 2. Boot eFUSE (1) BT_FUSE_SEL * BOOT_MODE[1:0]=0b00 BT_FUSE_SEL=0, SBMR的值由GPIO决定。 BT_FUSE_SEL=1, SBMR的值由eFUSE设置(BOOT_CFG1/2/3)。 * BOOT_MODE[1:0]=0b10 BT_FUSE_SEL=0, 启动设备(如Flash,SD/MMC)未编程过,启动流程跳到Serial Downloader。 BT_FUSE_SEL=1, 继续执行常规启动(BOOT_CFG1/2/3)。 一块板子第一次使用,i.MX53中的eFUSES设置很可能是不正常的。上电后,BOOT ROM可能会尝试从一个 不存在的设备上启动。使用"Boot From Fuses"就没有这个问题: 首次使用时,BT_FUSE_SEL=0,使得启动直接跳到Serial Downloader。这样可以先加载一个bootloader, 然后再烧写image到启动设备上。然后再写BT_FUSE_SEL=1,下次启动就会按照eFUSE里的配置来进行了。 这样不用调整BOOT_MODE[1:0](拉高/拉低BOOT_MODE引脚的电平)就可以完成烧写过程。(烧写到最后再将BT_FUSE_SEL blown掉)。 ![]() 从eMMC启动: 0. MMC时钟频率最早设置为357.143KHz,经过初始化之后会上升到20MHz或40MHz。 1. 从eMMC中复制2Kbyte数据到CPU内部RAM。这2Kbyte数据中包括IVT,DCD和Boot Data structures。 2. 检查数据格式。进行DCD配置。 使用Mfgtools烧写的最后,会对/dev/mxc_iim做一些写操作,就是用来设置eFUSE中的一些位。 使得板子正常启动是按BOOT_MODE[1:0]>eFUSE->eMMC(BOOT_CFG1/2/3)顺序进行的。
|
|