S32K3xx学习笔记_MemMap
文章目录
1、简介
该芯片包含放置在32位连续内存空间中的各种存储器和内存映射外设,本文主要介绍一些存储器和外设位置。
有关芯片内存映射的详细信息,请参阅档附带的内存映射文件。如下如所示:
2、缩略词
CTI:Cross trigger interface交叉触发接口
DTCM:Data tightly coupled memory数据紧耦合内存
D-cache:Data cache数据缓存
DWT:Debug watchpoint and trace Debug调试
ETM:Embedded trace macrocell 嵌入式跟踪宏单元
FPB:Flash patch and breakpointsFlash补丁和断点
ITCM:Instruction tightly coupled memory指令紧耦合内存
I-cache:Instruction cache指令缓存
ITM:Instrumentation trace macrocells仪器跟踪宏单元
PPB:Private peripheral bus专用外围总线
SCS:System control space系统控制空间
SRAM:Static random access memory静态随机存取内存
TPIU:Trace port interface unit跟踪端口接口单元
3、SRAM内存映射
3.1、RAM
S32K3x4产品系列共有512kb RAM,分区如下:
- ITCMs (64 KB)
- D0TCMs (64 KB)
- D1TCMs (64 KB)
- PRAMC_0 (160 KB)
- PRAMC_1 (160 KB)
3.2、PRAMC
PRAMC_0控制前160KB的RAM,功能如下:
- 32KB内存支持Standby模式下的数据保存
- 128KB内存仅在Run模式下可用
PRAMC_1控制第二个160KB的RAM,功能如下:
- 32KB内存仅在Run模式下可用
- 128KB内存仅在Run模式下可用
除了ITCMs 、DTCMs 、SRAM之外,RAM的一个特定部分与ARM Cortex-M7内部缓存相关联,该芯片为每个 Cortex-M7内核提供8KB的I-cache RAM和8KB的D-cache RAM。
S32Kxx的cache方案中的cache属性是为给定地址范围和内核定义的,而不是根据物理RAM或闪存块定义的
4、S32K3xx不同类型内存的访问
Cortex-M7内核可以按顺序访问这些内存:
- ITCM
- DTCM
- I-cache
- D-cache
ITCM和DTCM可以通过32位的AHBS接口访问,以引导的ITCM中的指令,例如,不同的Cortex-M7内核、eDMA等,EMAC是另一个可以访问DTCM的主机。
访问超出在芯片上可用的RAM的SRAM,终止总线周期,在这个芯片中使用的请求总线主存储器类型中的一个适当的响应后面跟着错误。
5、TCM作为系统内存
在多核设备上,所有使能的核和非核主机都可以使用被禁用核的TCM。为了允许使用禁用核心的ITCM和DTCM作为系统内存,必须由启用的CPU核心执行以下步骤:
- 对Cortex-M7_0,对MC_ME的PRTN2_COFB1_CLKEN[REQ62]字段写1。对Cortex-M7_1,对MC_ME的PRTN2_COFB1_CLKEN[REQ63]字段写1。以开启Cortex-M7核心的TCM控制器时钟。
- 对Cortex-M7_0,对DCMRWF4[CM7_0_CPUWAIT]字段写1,对Cortex-M7_1,对DCMRWF4[CM7_1_CPUWAIT]字段写1。可以将核心操作配置为Wait模式
- 对于Cortex-M7_0,将1写入MC_ME的PRTN0_CORE0_PCONF[CCE]字段;对于Cortex-M7_1,将1写入PRTN0_CORE1_PCONF[CCE]字段。启用Cortex-M7内核的时钟。
描述 | PRTN2_COFB1_CLKEN[R EQ62+n] | DCMRWF4[CM7_n_CP UWAIT] | PRTN0_COREn_PCON F[CCE | CM7_n mode | CM7_n_T CM backdoor enabled |
---|---|---|---|---|---|
配置 | - | 0 | 1 | RUN | Yes |
0 | 1 | 1 | WAIT | No | |
1 | 1 | 1 | WAIT | Yes | |
- | - | 0 | Disabled | No |
6、TCM操作时的注意事项
在进行读访问之前,必须先对TCM (ITCM和DTCM)和系统RAM进行初始化通过64bit的写入。系统RAM可以使用eDMA和CPU核心进行初始化。ITCM初始化只能由内核使用直接访问或后门访问来执行。DTCM也可以通过使用core的直接和后门访问或eDMA执行32位写操作来初始化。这些写操作是在芯片上电复位后设置初始ECC码字所必需的。
每个Cortex-M7核心都配备了一个32 KB的ITCM和64 KB的DTCM,具有零等待状态访问。在同步操作中,检查核的TCM被添加到主核中。
7、AIPS-Lite外设桥内存映射
可以通过crossbar交叉开关矩阵从端口访问外设内存映射。下表显示了与外设地址空间相关的三个外设桥区域。
地址范围 | 范围描述 |
---|---|
4000_0000h–401F_FFFFh | 该2048KB的区域(AIPS_Lite_0)划分为128个空间,每个空间大小为16 KB,有32个平台上的空间和96个平台外的空间。AIPS_Lite为32个平台空间生成唯一的模块启用码。 |
4020_0000h–403F_FFFFh | 该2048KB的区域(AIPS_Lite_1)划分为128个空间,每个空间大小为16 KB,有32个平台上的空间和96个平台外的空间。AIPS_Lite为32个平台空间生成唯一的模块启用码。 |
4040_0000h–405F_FFFFh | 该2048KB的区域(AIPS_Lite_2)划分为128个空间,每个空间大小为16 KB,有32个平台上的空间和96个平台外的空间。AIPS_Lite为32个平台空间生成唯一的模块启用码。 |
- 通过MC_CGM寄存器中的时钟脉冲控制字段禁用功能的模块禁用相关的AIPS_Lite插槽。
- 访问未实现或禁用的外设桥地址范围内的任何地址将导致传输错误终止。
8、内存操作
在特殊情况下,必须在后续操作发生之前完成对外设的写入过程。这种情况的包括一下三种:
- 退出中断服务程序
- 更改模式
- 配置功能
在上述这些情况下,必须执行先写后读顺序来实现所需的内存顺序操作。
下表提供了这个序列。
- 写入相关的外围寄存器。
- 读寄存器,验证写进程。
- 继续执行后续操作。
9、专用外围总线(PPB)内存映射
PPB是已定义的Arm总线体系结构的一部分,提供对特定本地处理器模块的访问。您只能通过核心访问这些模块,而不能通过其他系统管理员访问。
开始地址 | 结束地址 | 大小(KB) | 模块/单元 |
---|---|---|---|
E000_0000 | E000_0FFF | 4 | ITM |
E000_1000 | E000_1FFF | 4 | DWT |
E000_2000 | E000_2FFF | 4 | FPB |
E000_3000 | E000_DFFF | 44 | - |
E000_E000 | E000_EFFF | 4 | SCS |
E000_F000 | E003_FFFF | 196 | Reserved |
E004_0000 | E004_0FFF | 4 | TPIU |
E004_1000 | E004_1FFF | 4 | ETM |
E004_2000 | E004_2FFF | 4 | CTI |
E004_3000 | E004_3FFF | 4 | - |
E004_4000 | E004_4FFF | 4 | - |
E004_5000 | E004_5FFF | 4 | - |
E004_6000 | E007_FFFF | 232 | - |
E008_0000 | E008_0FFF | 4 | MCM |
E008_1000 | E008_1FFF | 4 | - |
E008_2000 | E008_2FFF | 4 | - |
E008_3000 | E00F_EFFF | 496 | - |
E00F_F000 | E00F_FFFF | 4 | Cortex-M7 PPB ROM table |
E000_0000 | E00F_FFFF | 1024 |