小猫爪:i.MX RT1050学习笔记

1 前言

毕业后正式进入嵌入式领域,初来乍到,接触的第一款MCU为NXP公司在2017年发布的跨界处理器I.MX系列芯片,如下为该系列芯片特征:
小猫爪:i.MX RT1050学习笔记

2 RT系列关于启动相关知识

i.MX RT与i.MX 6ULL是同一个平台产出,简单来时就是出了核心不一样,其他都是无比的雷同。所以其启动方式也是与i.MX 6ULL的启动方式类似,不同于传统的MCU的启动方式。接下来我就会根据我的总结简单阐述一下我对i.MX RT系列芯片的启动过程,在介绍之前先简单的介绍一下一些基本概念。

2.1 BootROM

BootROM就是芯片一出场就集成在芯片ROM区的一段启动程序,它的目的就相当于一个引导程序,简单来说,就是让芯片去运行用户的Application,等同于STM32的出厂Bootloader,这是不可改变和擦除的程序。(具体介绍大家可参考文章:痞子衡嵌入式:飞思卡尔i.MX RTyyyy系列MCU启动那些事(1)- Boot简介

2.2 FUSE

FUSE的本质就是一块OTP(One Time Programmable)memory,也就是只可以烧写一次的储存区域。启动需要的配置信息就可以存储在里面。(关于FUSE具体介绍大家可参考文章:痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(4)- OTP及其烧写方法

2.3 Bootable image

Bootable image通俗的来说就是APP镜像,里面集成了除了机器执行码(也就是我们经常说的bin文件)之外,还有其他各种信息。以STM32举例来说,通常我们只要将Bin文件下载到其内部的FLASH中,芯片上电后即可读取程序并运行,但是对于RT系列来说则是不不可以,必须将可执行文件加上其他信息(如FDCB, IVT,BD, DCD,CSF等,其中IVT和BD包含了image的目标地址和总长度)打包成规定格式的image文件下载进外部存储器中,RT才能顺利运行。(关于Bootable image的具体介绍大家可参考文章:痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(6)- Bootable image格式与加载(elftosb/.bd)…

2.4 RT的boot选项

根据RT1050的数据手册可知道其有三种启动方式,如下图:
小猫爪:i.MX RT1050学习笔记
①Serial Downloader:处于该种模式下,BootROM通过指定的USB或者UART口来接收来自Host(恩智浦提供了上位机工具sdphost.exe或者mfgtool或者MCUBootUtility)的Application数据,并将数据存储在SRAM中执行。
②Boot From Fuses: 处于该种模式下,有两种选项,第一种为BootROM会根据FUSE里的相关boot配置来决定从哪种外部存储器读取Image数据。第二种等同于Serial Downloader模式(两种选项具体由FUSE中的BT_FUSE_SEL位去决定)。
③Internal Boot: 处于该模式下,有两种选项,第一种为BootROM会根据FUSE中的Boot配置信息和外部引脚共同决定启动设备,其中以外部引脚设置配置为主;第二种为完全根据FUSE中的boot配置信息去决定(两种选项具体由FUSE中的BT_FUSE_SEL位去决定)。
(关于RT的boot选项具体介绍大家可以参考文章:痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(2)- Boot配置(BOOT Pin/eFUSE)

3 RT的启动过程

经过上面的一些简单介绍,接下来对RT启动的过程进行一个简单的阐述。
芯片上电后,最先运行就是BootROM程序。
它首先会去读取RT当前的boot选项,决定从何处读取Bootable iamge数据,读取iamge的过程过程如下(以image链接在TCM里为例,也就是程序在ITCM中运行):
①初始状态时,这时SRAM中没有任何image数据,BootROM首先会从外部Flash读取Bootable image前4KB数据进SRAM临时缓存区(OCRAM:0x20208000 - 0x20208FFF),其中包括FDCB(可选), IVT, BD,其中FDCB包含了当前存储iamge的存储设备的具体特征参数,IVT记录了image各个要素的位置信息,BD记录了起始地址和总长度。
②读取前4KB数据后,首先根据读取数据中的FDCB中驱动存储设备的特征再次初始化读取接口以便后续读取image的剩余部分数据。而BootROM则是将SRAM临时缓存区中的4KB数据转移至链接目标区域(ITCM),接着则是继续读取image剩余部分至链接目标区域(ITCM)。
读取完所有的iamge数据后,BootROM所有的工作就做完了,这时候正式开始执行iamge中的Application。

到这里,关于RT系列芯片的启动过程就简单介绍完了。

END