i.MX RT开发笔记-04 | i.MX RT1062启动方式

发布时间 2023-08-11 11:12:00作者: fire909090

文章目录
系列文章目录
一、启动代码(Boot ROM和Boot Code)
二、启动模式选择(Boot Mode)
三、外部启动设备配置(Boot Devices)
1. 外部启动设备配置
2. 启动设备属性配置
四、启动相关GPIO引脚
五、总结
 

一、启动代码(Boot ROM和Boot Code)
Boot ROM是RT1062芯片内部128KB的存储空间(ROMCP):


Boot ROM中存放的代码称为Boot Code(启动代码),启动代码已经固化在Boot ROM中,用户无法进行修改使用,主要完成以下事情:

预先完成硬件初始化操作(用于访问外部存储器设备)
从用户选择的启动设备中加载程序镜像
预先使用HAB库进行程序镜像验证(BOOT安全启动设置)
跳转到一个程序镜像中的地址,开始执行用户程序
如果在上述过程中出错,则启动代码跳转到串行下载模式,等待用户下载镜像。

二、启动模式选择(Boot Mode)
RT1062有四个启动模式,如下表,具体使用哪种启动模式通过内部寄存器 BOOT_MODE 中的值来选择,如图:


RT1062芯片上电之后永远会执行Boot ROM中存放的启动代码,只不过在 PRT_B 信号的上边沿(上电时),芯片对BOOT_MODE0引脚和BOOT_MODE1引脚采样,获得 BOOT_MODE 寄存器的初始值,通过该寄存器决定启动代码下一步的行为:

Boot From Fuses:根据Fuses中的配置来选择外部存储器
Serial Downloader:开始等待用户通过串口/USB接口下载程序
Internal Boot:继续执行启动代码,并根据用户GPIO引脚配置来选择外部存储器
在采样完成之后,BOOT_MODE0和BOOT_MODE1引脚的电平不会对BOOT_MODE寄存器的值产生影响。

关于这三种启动模式,痞子衡大佬讲的非常清楚,下面引用大佬博客的内容:

① Fuse是i.MXRT1xxx里一块特殊的存储区域,用于存放全部芯片配置信息,其中有一部分配置信息和Boot相关,其中偏移0x460处的32bit配置数据的bit4是BT_FUSE_SEL,这个bit至关重要,决定了Boot From Fuses模式的主要行为,具体表现如下:


BT_FUSE_SEL=0:表明所有外部存储器中均没有Application,此时Boot From Fuses模式等同于Serial Downloader模式。
BT_FUSE_SEL=1:表明有外部存储器中存在有效Application,此时BootROM会根据Fuse中其他Boot配置信息进一步选择指定的外部存储器(Boot Device)去Boot。
② Internal Boot模式其实跟Boot From Fuses模式(BT_FUSE_SEL=1时)很类似,只是这个模式下BT_FUSE_SEL的意义有点不同,具体表现如下:

BT_FUSE_SEL=0:BootROM根据BOOT_CFG[x:0] 引脚和Fuse中Boot配置综合决定Boot Device,其中BOOT_CFG[x:0] 引脚的配置会覆盖Fuse中意义相同的Boot配置信息。
BT_FUSE_SEL=1:BootROM完全根据Fuse中Boot配置信息选择指定的Boot Device去Boot。
我们可以通过更改BOOT_CFG[x:0] 引脚输入状态来切换Boot配置,这部分Boot配置在Fuse里也同样存在,但是使用BOOT_CFG[x:0]来更改Boot配置显然比烧写Fuse更方便快捷(也可以认为BOOT_CFG[x:0]主要用于产品开发过程中,待产品开发结束后,应直接用Fuse来锁定Boot配置)。

三、外部启动设备配置(Boot Devices)
1. 外部启动设备配置
RT1602支持的外部启动设备非常多,如下:

串行Nor Flash:使用FlexSPI接口(默认)-
串行Nand Flash:使用FlexSPI接口
并行Nor Flash:使用SEMC接口(Smart Exernal Memory Controller),支持16bit位宽
Nand Flash:使用SEMC接口,支持 8bit/16bit 位宽
SD/MMC/eSD/SDXC/eMMC 4.4:使用uSDHC接口,支持大容量卡
串行Nor Flash/EEPROM:使用LPSPI接口
用户通过设置 BOOT_CFG1[7:4] 的值来选择使用哪种类型的设备,如图:


2. 启动设备属性配置
在访问每种外部存储器设备时,都需要配置一些基本参数,比如位宽、工作频率、访问时序等必要参数,RT1062针对每种存储器设备都提供了配置方式。该部分内容较多,可以在参考手册中查看。

比如当我们选择外部存储器为串行 Nor Flash时,可以用GPIO引脚配置的选项如下:


而另外一些属性设置只能通过软件去修改,无法通过GPIO设置,如下:

 

四、启动相关GPIO引脚
RT1062芯片中,在Fuse中用于启动相关的一些配置项可以通过外部GPIO引脚来配置,引脚对应表如图所示:


五、总结
i.MX RT1xxx 系列跨界处理器的启动方式其实都差不多,由于没有内部Flash,所以芯片内置了一段ROM空间固化启动代码,由启动代码完成多种多样的启动方式。

启动代码最主要的功能是加载代码到内部SRAM中或者外部SRAM/SDRAM中跳转过去开始执行,而要加载的代码就来源于外部存储器,比如SPI Flash(Nor Flash)、Nand Flash、SD卡等。

除了这种方式外,启动代码还支持通过串口/USB接口接收PC端上位机工具(mfgtool、MCUBootUtility)发送的程序镜像,并将接收的程序存储到SRAM中开始执行。
-----------------------------------
©著作权归作者所有:来自51CTO博客作者MCUlover666的原创作品,请联系作者获取转载授权,否则将追究法律责任
i.MX RT开发笔记-04 | i.MX RT1062启动方式
https://blog.51cto.com/u_13640625/3027030