谷动谷力

 找回密码
 立即注册
查看: 1609|回复: 0
打印 上一主题 下一主题
收起左侧

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

[复制链接]
跳转到指定楼层
楼主
发表于 2022-12-28 17:48:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
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 探讨什么是寄存器,什么又是寄存器映射。
  喜欢的点关注,关注博主不迷路~~


【参考文献】




+10
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|深圳市光明谷科技有限公司|光明谷商城|Sunshine Silicon Corpporation ( 粤ICP备14060730号|Sitemap

GMT+8, 2024-9-28 06:32 , Processed in 0.156755 second(s), 43 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表