ICache
即指令缓存(Instruction Cache)i.MX RT有32K
DCache
即数据缓存(Data Cache),i.MX RT有32K
FlexRAM
译为灵活的RAM,i.MX RT有512K, (SRAM)
- 专用于存储指令的ITCM
- 专用于存储数据的DTCM
- 通用功能的OCRAM
各存储器访问的速度排名
存储器类型 | 数据位宽 | 优先级 |
---|---|---|
ICache | 64位 | 1 |
DCache | 64位 | 1 |
ITCM | 64位 | 2 |
DTCM | 双32位 | 3 |
OCRAM | 32位 | 4 |
存储器区域功能划分
序号 | 用途 | 地址范围 | 容量 |
---|---|---|---|
Block0 | Code | 0x0000 0000 ~ 0x1FFF FFFF | 512MB |
Block1 | SRAM | 0x2000 0000 ~ 0x3FFF FFFF | 512MB |
Block2 | Peripheral(片上外设) | 0x4000 0000 ~ 0x5FFF FFFF | 512MB |
Block3 | External RAM(外部RAM) | 0x6000 0000 ~ 0x9FFF FFFF | 1024MB |
Block4 | External device(外部设备) | 0xA000 0000 ~ 0xDFFF FFFF | 1024MB |
Block5 | 内核私有外设内部总线 | 0xE000 0000 ~ 0xE003 FFFF | 256KB |
比较重要的三个区域:
- Block0 主要用于存储程序代码,一般采用FLASH 存储器,
- Block1 主要用于运行时的内存,一般采用SRAM 存储器,
- Block2 用来设计成片上的外设,内核通过相应的地址访问片上外设
Block0 内部区域功能划分
起始地址 | 结束地址 | 大小 | 描述 | 备注 |
---|---|---|---|---|
0x1000_0000 | 0x1FFF_FFFF | 256MB | SEMC (Aliased) | 内存映射别名区域 |
0x0800_0000 | 0x0FFF_FFFF | 128MB | FlexSPI (Aliased) | 闪存控制器别名区域 |
0x0040_0000 | 0x07FF_FFFF | 128MB | Reserved | 正 |
0x0028_0000 | 0x003F_FFFF | 1536KB | Reserved | 保留未使用区域 |
0x0021_8000 | 0x0027_FFFF | 416KB | ROMCP Reserved | ROM协处理器保留区 |
0x0020_0000 | 0x0021_7FFF | 96KB | ROMCP | ROM协处理器主区域 |
0x0010_0000 | 0x001F_FFFF | 1MB | ITCM Reserved | 指令紧耦合内存保留区 |
0x0008_0000 | 0x000F_FFFF | 512KB | ITCM Reserved | 指令紧耦合内存保留区 |
0x0000_0000 | 0x0007_FFFF | 512KB | ITCM | 指令紧耦合内存主区域 |
- ITCM 是Instruction Tightly-Coupled Memory 的缩写,译为指令紧耦合内存。对于那些我们希望有着极高执行速度的代码,我们可以要求内核上电后把相应的代码从外
部FLASH 加载至ITCM,那么在运行时,代码的执行速度就不会因外部FLASH 的访问速度而存
在瓶颈。 - ROMCP,这是一小段ROM 空间,用于存储芯片启动时的加载代码,即bootloader,
bootloader 负责把指令从外部存储器加载至ITCM - SEMC 及FlexSPI 是RT1052 可用于控制外部并行及串行NorFlash 的两个外设,此处把它们映射到此代码空间,是为了支持XIP 功能(即指令直接在NorFlash 上运行,不需要加载到内部的ITCM)。
Block1 内部区域的功能划分
Block1 用于设计片内的SRAM,也就是芯片运行时的内存
起始地址 | 结束地址 | 大小 | 描述 | 存储类型 | 功能说明 |
---|---|---|---|---|---|
0x3000_0000 | 0x3FFF_FFFF | 256MB | Reserved | - | 保留扩展区域 |
0x2040_0000 | 0x2FFF_FFFF | 252MB | Reserved | - | 保留扩展区域 |
0x2028_0000 | 0x203F_FFFF | 1536KB | OCRAM Reserved | SRAM | 片上RAM保留区(ECC校验等) |
0x2020_0000 | 0x2027_FFFF | 512KB | OCRAM | SRAM | 通用片上RAM主区域 |
0x2010_0000 | 0x201F_FFFF | 1MB | Reserved | - | 紧耦合内存扩展保留区 |
0x2008_0000 | 0x200F_FFFF | 512KB | DTCM Reserved | DTCM | 数据紧耦合内存保留区 |
0x2000_0000 | 0x2007_FFFF | 512KB | DTCM | DTCM | 数据紧耦合内存主区域 |
- DTCM,是Data Tightly-Coupled Memory 的缩写,译为数据紧耦合内存.它是专门用来存储程序数据的,即代码中变量的存储位置。
- OCRAM,它是On-chip RAM 的缩写,即片上内存,可以完全把它理解为传统MCU
的内部SRAM,它没有像ITCM 和DTCM 的专用限制,可用于存储指令和数据(通用目的)。 - ITCM、DTCM 及OCRAM存储器的空间不是固定的,是可以调整的
Block2 内部区域功能划分(此处仅列出AIPS 总线相关部分)
起始地址 | 结束地址 | 大小 | 描述 | 总线类型 |
---|---|---|---|---|
0x4030_0000 | 0x403F_FFFF | 1MB | AIPS-4 外设区域 | AIPS-Lite |
0x4020_0000 | 0x402F_FFFF | 1MB | AIPS-3 外设区域 | AIPS-Lite |
0x4010_0000 | 0x401F_FFFF | 1MB | AIPS-2 外设区域 | AIPS-Lite |
0x4000_0000 | 0x400F_FFFF | 1MB | AIPS-1 外设区域 | AIPS-Lite |
AIPS 是ARM IP Bus 的缩写,它一边与内核AHB 总线连接,另一边与片上的各种外设连接。