当前位置:   article > 正文

i.MX RT开发笔记-03 | i.MX RT1062地址空间映射及启动方式_cortexm7 地址映射

cortexm7 地址映射

系列文章目录

一、ARM Cortex-M7地址空间映射

ARM Cortex-M7内核固定有 4GB 的寻址空间,ARM官方对这4GB寻址空间的分配如下图:

每个区域的描述如下:

二、RT1062地址空间映射

ARM官方只是大概的将Cortex-M7内核 4GB 寻址空间划分为8个区域,芯片厂商在此基础之上,对每个区域进行具体实现

1. Code区

Code区(512MB)用来存储代码,RT1062对于Code区的具体实现如下图:

ITCM

ITCM全称 Instruction Tightly-Coupled Memory,指令紧耦合内存。紧耦合指该部分存储空间与内核联系紧密,具有非常高的访问速度。

该部分存储空间用来缓存指令,如果将代码从Flash里面加载到ITCM中运行,则代码执行速度就不会受限于Flash读取速度。

ROMCP

ROMCP用于存储bootloader,也就是芯片启动时的加载代码,负责将代码从外部存储器加载到ITCM

2. SRAM区

SRAM区(512MB)用来作为运行内存,RT1062对于SRAM区的具体实现如下图:

DTCM

DTCM全称Data Tightly Coupled Memory,数据紧耦合内存。紧耦合指该部分存储空间与内核联系紧密,具有非常高的访问速度。该部分存储空间用来存放数据部分。

OCRAM

OCRAM全称 On-chip RAM,片上RAM,和普通的SRAM存储器作用相同。

特别注意,ITCM、DTCM、OCRAM三个存储空间共享芯片内部FlexRAM的空间,并且可以动态调整。RT1062中 FlexRAM 存储器的空间高达 1 MB,默认ITCM和DTCM大小都是512KB。

3. Peripheral外设区

Peripheral区(512MB)用来存放片上外设相关的寄存器地址映射,在RT1602芯片中实现如下:


RT1062芯片使用5条AIPS总线与片上外设相连, 在数据手册中可以看到挂到每条总线上的外设基地址,比如GPIO1外设挂在AIPS2总线上,GPIO1外设基地址为0x401B8000。

4. 外扩存储器区

External RAM区(1GB)用来扩展外部RAM存储器,Extern Device区(1GB)用来扩展外部设备,RT1062中将这两个区合并起来的实现如下:

5. 内核私有外设总线区

内核私有外设总线区用来寻址Cortex-M7内核中的外设,RT1062中的实现如下:

至此,ARM Cortex-M7内部4GB寻址空间在RT1062中的分配情况介绍完毕。

三、启动代码(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寄存器的值产生影响。

五、外部启动设备配置(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中开始执行。

关于 i.MX RT系列启动方式更加详细的描述,请阅读 NXP 痞子衡大佬的文章。

下面这张启动方式比较图就来源于大佬的博客:

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号