鸣涧 发表于 2022-12-28 17:48:26

i.MAX RT 系列之存储器映射

i.MAX RT 系列之存储器映射





一、前言    在《初识 i.MX RT 系列》中,我们了解了 i.MX RT 系列芯片的特点和芯片架构,本文将以 RT1060为例介绍 i.MX RT 系列的存储器映射及它的区域功能划分,参考 NXP《IMXRT1060RM》(参考手册)一起看,理解效果会更加。

二、存储器映射    存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就称为存储器映射,具体见图 2.1 。如果给存储器再分配一个地址就叫存储器重映射。
            图 2.1Cotex-M7 存储器应用

2.1存储器区域功能划分    在 4G 地址空间中, ARM 已经被分成了 8 块,并规定了用途,具体如下表格 2-1 所示,大部分块的大小都有 512MB 以上。


序号用途地址范围
Block 0 Code0x0000 0000 ~ 0x1FFF FFFF (512MB)
Block 1 SRAM0x2000 0000 ~ 0x3FFF FFFF (512MB)
Block 2Peripheral 片上外设0x4000 0000 ~ 0x5FFF FFFF (512MB)
Block 3External RAM(外部RAM)0x6000 0000 ~ 0x9FFF FFFF (1024MB)
Block 4External device(外部设备)0xA000 0000 ~ 0xDFFF FFFF (1024MB)
Block 5内核私有外设内部总线0xE000 0000 ~ 0xE003 FFFF (256KB)
Block 6内核私有外设外部总线0xE004 0000 ~ 0xE00F FFFF (768KB)
Block 7系统外设0xE010 0000 ~ 0xFFFF FFFF (511MB)
                                    
                                       表 2-1 内核划分的存储器功能分类

    在这 8 个 Block 中, Block0 、 Block1 及Block2 三个块是非常重要的。 Block0 一般采用 Flash 存储器存储程序代码, Block1 主要用于运行时的内存,一般用 SRAM 存储器,Block2 主要用于设计成片上外设,内核通过相应的地址访问片上外设。这三个 Block 具体区域的功能划分介绍如下:
    (1)存储器Block0 内部区域功能划分ARM 内核设计中, Block0 主要用于存储代码,在 i.MX RT1060 中,又把 Block0 细致地根据自己的芯片需求设计出具体的功能分配方案,如表 2-2 所示。


Start AddressEnd AddressSizeDescription
1000_00001FFF_FFFF256MBReserved
0800_00000FFF_FFFF128MBReserved
0040_0000 07FF_FFFF124MBReserved
0028_0000003F_FFFF1536KBReserved
0022_00000027_FFFF384KBROMCP Reserved
0020_00000021_FFFF128KBROMCP
0010_0000 001F_FFFF1MBITCM Reserved
0008_0000000F_FFFF512KBITCM Reserved
0000_0000 0007_FFFF512KBITCM
            
                   表 2-2RT1060 芯片对存储器 Block0 内部区域功能划分

    首先是指令紧耦合内存(ITCM)。其中,“指令”指该内存专用于缓存指令,“紧耦合”指该内存与内核连接紧密,有非常高的访问速度。对于希望有着极高执行速度的代码,我们可以要求内核上电后把相应的代码从外部 FLASH 加载到 ITCM ,那么在运行时,代码的执行速度就不会因外部 FLASH 的访问速度而存在瓶颈。    其次是 ROMCP ,这是一小段 ROM 空间,用于存储芯片启动时的加载代码,即 bootloader ,它负责把指令从外部存储器加载至 ITCM 。(2)储存器Block1 内部区域功能划分

    Block1 用于设计片内的 SRAM ,也就是芯片运行时的内存,在 i.MX RT1060 芯片内部把这部分划分了两种 RAM 类型。Block1 内部区域的功能划分具体见表 2‑3。



Start AddressEnd AddressSizeDescription
3000_00003FFF_FFFF256MBReserved
2040_00002FFF_FFFF252MBReserved
2030_0000203F_FFFF512KBOCRAM Reserved
2028_0000202F_FFFF512KBOCRAM - FlexRAM
2020_00002027_FFFF512KBOCRAM2
2010_0000201F_FFFF1MBReserved
2008_0000200F_FFFF512KBDTCM Reserved
2000_00002007_FFFF512KBDTCM
            
                  表 2-3RT1060 芯片对存储器 Block1 内部区域功能划分

    DTCM — 数据紧耦合内存,它和 ITCM 相似,有着极高的访问速度,不过它是专门用来存储程序数据的,即代码中变量的存储位置。    OCRAM — On-chip RAM,片上内存,可以把它理解为传统 MCU 的内部 SRAM ,可用于存储指令和数据(通用)。
(3)储存器Block2 内部区域功能划分       Block2 用于设计片内的外设,在 RT1060 芯片中,它的外设使用 5 条总线与内核进行连接,它们的地址分配情况见表格 2‑4(此处仅列出 AIPS 总线相关部分)。


Start AddressEnd AddressSizeDescription
4200_0000420F_FFFF1MBAIPS-5
4030_0000403F_FFFF1MBAIPS-4
4020_0000402F_FFFF1MBAIPS-3
4010_0000401F_FFFF1MBAIPS-2
4000_0000400F_FFFF1MBAIPS-1

         表 2-4RT1060 芯片对存储器 Block2 内部区域功能划分

    AIPS 是 ARM IP Bus 的缩写,它一边与内核 AHB 总线连接,另一边与片上的各种外设连接, AIPS 1~5 连接了各种各样的外设,此处每条总线划分的地址范围各为 1MB ,内核根据地址可以访问相应总线下的外设,达到控制目的,下面是 AIPS-2 总线上外设的地址分配,见表 2‑5 。

                                          表 2‑5AIPS-2 总线地址分配
该表格的最右侧栏是挂在 AIPS-2 总线上的外设名称。本文主要介绍了 i.MX RT 系列芯片存储器映射及以 RT1060 为例介绍了存储器区域功能的划分,在下一篇博文《i.MX RT 系列之寄存器映射》中,将围绕 RT1060 探讨什么是寄存器,什么又是寄存器映射。喜欢的点关注,关注博主不迷路~~

【参考文献】
[*]《IMXRT1060RM》:MX RT1060 Processor Reference Manual (nxp.com)
[*]《MX RT库开发实战指南——基于i.MXRT1052》:[野火]i.MX RT库开发实战指南——基于i.MXRT1052 文档 (embedfire.com)




页: [1]
查看完整版本: i.MAX RT 系列之存储器映射