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

一、前言

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

二、存储器映射

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

              图 2.1  Cotex-M7 存储器应用

2.1  存储器区域功能划分

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

序号

用途

地址范围

Block 0 

Code

0x0000 0000 ~ 0x1FFF FFFF (512MB)

Block 1 

SRAM

0x2000 0000 ~ 0x3FFF FFFF (512MB)

Block 2

Peripheral 片上外设

0x4000 0000 ~ 0x5FFF FFFF (512MB)

Block 3

External RAM(外部RAM)

0x6000 0000 ~ 0x9FFF FFFF (1024MB)

Block 4

External 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 Address

End Address

Size

Description

1000_0000

1FFF_FFFF

256MB

Reserved

0800_0000

0FFF_FFFF

128MB

Reserved

0040_0000 

07FF_FFFF

124MB

Reserved

0028_0000

003F_FFFF

1536KB

Reserved

0022_0000  

0027_FFFF

384KB

ROMCP Reserved

0020_0000  

0021_FFFF

128KB

ROMCP

0010_0000 

001F_FFFF

1MB

ITCM Reserved

0008_0000  

000F_FFFF

512KB

ITCM Reserved

0000_0000 

0007_FFFF

512KB

ITCM

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

    首先是指令紧耦合内存(ITCM)。其中,“指令”指该内存专用于缓存指令,“紧耦合”指该内存与内核连接紧密,有非常高的访问速度。对于希望有着极高执行速度的代码,我们可以要求内核上电后把相应的代码从外部 FLASH 加载到 ITCM ,那么在运行时,代码的执行速度就不会因外部 FLASH 的访问速度而存在瓶颈。

    其次是 ROMCP ,这是一小段 ROM 空间,用于存储芯片启动时的加载代码,即 bootloader ,它负责把指令从外部存储器加载至 ITCM 。

(2)储存器Block1 内部区域功能划分


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

Start Address

End Address

Size

Description

3000_0000

3FFF_FFFF

256MB

Reserved

2040_0000

2FFF_FFFF

252MB

Reserved

2030_0000

203F_FFFF

512KB

OCRAM Reserved

2028_0000

202F_FFFF

512KB

OCRAM - FlexRAM

2020_0000

2027_FFFF

512KB

OCRAM2

2010_0000

201F_FFFF

1MB

Reserved

2008_0000

200F_FFFF

512KB

DTCM Reserved

2000_0000

2007_FFFF

512KB

DTCM

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

    DTCM — 数据紧耦合内存,它和 ITCM 相似,有着极高的访问速度,不过它是专门用来存储程序数据的,即代码中变量的存储位置。

    OCRAM — On-chip RAM,片上内存,可以把它理解为传统 MCU 的内部 SRAM ,可用于存储指令和数据(通用)。

  

(3)储存器Block2 内部区域功能划分

       Block2 用于设计片内的外设,在 RT1060 芯片中,它的外设使用 5 条总线与内核进行连接,它们的地址分配情况见表格 2‑4(此处仅列出 AIPS 总线相关部分)。

Start Address

End Address

Size

Description

4200_0000

420F_FFFF

1MB

AIPS-5

4030_0000

403F_FFFF

1MB

AIPS-4

4020_0000

402F_FFFF

1MB

AIPS-3

4010_0000

401F_FFFF

1MB

AIPS-2

4000_0000

400F_FFFF

1MB

AIPS-1


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

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



                                          表 2‑5  AIPS-2 总线地址分配

 

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

  喜欢的点关注,关注博主不迷路~~



【参考文献】

 

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论