news 2026/7/4 3:16:28

Cortex-R52学习:存储系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Cortex-R52学习:存储系统

文章目录

    • 1. 存储器系统整体架构
      • 1.1 存储资源组成
        • 1.1.1 内核私有存储(单Core独立选配)
        • 1.1.2 内核私有AXI4主接口(每核独立)
        • 1.1.3 全集群共享AXIS接口(128bit)
      • 1.2 核心工作规则
    • 2. TCM紧耦合存储器
      • 2.1 容量配置:
      • 2.2 基址与使能控制
      • 2.3 内存属性:
    • 3. 一级L1缓存(I‑Cache/D‑Cache,可选配、相互独立)
      • 3.1 指令缓存I‑Cache
      • 3.2 数据缓存D‑Cache(关键特性)
      • 3.3 Cache RAM物理组织
      • 3.4 缓存配套功能
    • 4. L1缓存调试直接访问
    • 5. 四大AXI主/从接口(AXIM、LLPP、Flash、AXIS)
      • 5.1 AXIM(内核私有·128bit标准AXI4·系统主接口)
      • 5.2 LLPP低时延外设端口(32bit AXI4·外设专用,永远非缓存)
      • 5.3 Flash接口(128bit只读AXI子集·外挂ROM,无写通道)
      • 5.4 AXIS(Cluster共享从接口·16MB地址·外部访问TCM专用)
    • 6. ECC错误检测与容错机制
    • 7. 独占访问LDREX/STREX
    • 8. 总线超时
    • 整体设计总结

1. 存储器系统整体架构

1.1 存储资源组成

1.1.1 内核私有存储(单Core独立选配)
  1. 可选一级指令缓存I‑Cache、一级数据缓存D‑Cache;
  2. 可选紧耦合存储器TCM(分为ATCM/BTCM/CTCM,统一型存储器,既可存指令也可存数据)。
1.1.2 内核私有AXI4主接口(每核独立)
  1. LLPP:32bit位宽AXI4接口,低速外设专用;
  2. Flash接口:128bit只读AXI子集接口,外挂片上/片外Flash;
  3. AXIM:128bit标准AXI4主接口,外接主存与通用外设,系统主数据通路;
1.1.3 全集群共享AXIS接口(128bit)

跨核外部主控接口,唯一用途:外部总线访问所有内核的TCM存储。

1.2 核心工作规则

  1. TCM访问逻辑

TCM内置多路交叉开关,支持指令侧、数据侧、AXIS三方并发访问,多源同地址访问采用固定优先级+QoS仲裁;TCM是R52访问时延确定性最高的存储;

  1. Cache访问规则
    TCM、LLPP访问永远不会进入D‑Cache;仅AXIM/Flash访问可按需缓存;数据Cache固定写直达(Write‑Through),所有写操作同步落地外部总线;

  2. MPU内存保护
    所有指令/数据访问必须经过MPU内存映射查询,MPU输出访问权限与内存属性;地址禁止跨多TCM区域、多外设区域重叠命中,否则为非法访问;

  3. 独占同步机制
    内核内置本地独占监视器,依托LDREX/STREX独占指令实现同内核进程信号量与同步,共享内存独占需要配套外部全局监控逻辑。

2. TCM紧耦合存储器

TCM为实时系统核心高速确定性内存,单内核搭载ATCM/BTCM/CTCM三块独立TCM。

2.1 容量配置:

单块TCM可选0KB(未集成)/8KB~1MB(2的幂次规格),三块容量可独立配置;支持配置访问等待周期,不同TCM可存在访问时延差异。

2.2 基址与使能控制

  • 复位:配置引脚CFGTCMBOOTx有效时,ATCM默认开启、基址=0x00000000,其余TCM关闭、地址未知;
  • 软件配置:通过IMP_ATCM/BTCM/CTCMREGIONR寄存器配置基址(基址必须与TCM容量对齐),EL2(Hypervisor)、EL0/EL1可独立开关TCM;TCM禁用后,原TCM地址访问自动路由至AXIM/Flash/LLPP;EL1修改TCM配置可被EL2捕获(HCR.TIDCP=1)。

2.3 内存属性:

已使能TCM硬件固定为非缓存、非共享普通内存,不受MPU内存类型配置影响,但读写权限沿用MPU同地址权限;AXIS可读写TCM,但会抢占TCM带宽、劣化访问确定性。

3. 一级L1缓存(I‑Cache/D‑Cache,可选配、相互独立)

I/D Cache均为4路组相联、64Byte缓存行,可选4KB/8KB/16KB/32KB四种容量,仅AXIM、Flash的访问可进入缓存。

3.1 指令缓存I‑Cache

  • 预取:顺序指令自动预取下一缓存行;预取单元PFU依托分支预测提前预取非顺序地址,预取开关由CPUACTLR.L1IPFCTL管控。

3.2 数据缓存D‑Cache(关键特性)

  1. 强制写直达WT:即便MPU配置为回写WB,硬件强制走WT;标记为共享(Shareable)的内存区域一律禁用缓存;瞬态Transient内存提示被硬件忽略,统一按非瞬态处理;
  2. Miss‑under‑Miss:流水线连续缺失时,最多同时发起3个缓存行填充;AXIM挂载4个数据预取器(基于4KB区间访存规律预取),Flash接口无硬件预取;
  3. 一致性:R52无内核间硬件Cache一致性,单内核为独立内部共享域,多内核一致性由外部系统实现。

3.3 Cache RAM物理组织

  1. 地址拆分规则:32位地址划分为Tag标签位、Index索引位、行内双字偏移addr[5:3]、字节偏移addr[2:0],随4/8/16/32KB容量变化索引位长度;
  2. ICache:Tag RAM分4物理Bank;Data RAM逻辑路→物理Bank换算:Bank=(逻辑Way XOR 双字偏移)&0x3,Tag附带有效位+可选6bit ECC,64bit数据搭配7bit ECC;
  3. DCache:Tag架构同ICache;Data RAM采用8个物理Bank(单Bank32bit),一个64bit双字跨相邻两个Bank,Bank位置由(Way+双字偏移)&3和地址bit2共同决定,32bit数据配6bit ECC。

3.4 缓存配套功能

  1. 缓存隔离SegregationIMP_CSCTLR.IFLW/DFLW分配I/D Cache几路资源分别给Flash/AXIM,仅复位后首次开启缓存前可配置;
  2. DCache整体无效(EDCCR状态机):寄存器EDCCR实现Flash/AXIM对应缓存条目全刷除,状态流转Idle→Wait→Active;无效期间对应外设访问强制非缓存,调试可借助该功能实现Flash/AXIM内存被RAM覆盖;
  3. 写流式Write Streaming:针对memset连续整行全写场景,连续填满整行无需读入原始数据时自动开启;写缺失直接下发总线、取消行填充,避免无效数据污染缓存;由CPUACTLR.WSTRNOL1ACTL配置触发阈值。

4. L1缓存调试直接访问

EL2特权态可通过CP15的MCR指令读写Cache Tag/Data,依靠Rd寄存器编码Way/Set/行内偏移;读出数据存入2个只读调试寄存器,用于排查缓存与物理内存数据不一致故障。

5. 四大AXI主/从接口(AXIM、LLPP、Flash、AXIS)

5.1 AXIM(内核私有·128bit标准AXI4·系统主接口)

  1. 仲裁:CPUACTLR.AXIMARBCTL配置指令/数据总线访问优先级;
  2. 总线能力:最多3笔挂起写、11笔挂起读(数据侧8+指令侧3),单路独占访问;AWID3bit、ARID4bit;
  3. AXI编码:ARID区分独占/设备读/指令普通/数据普通四类事务;CACHE信号严格映射MPU设备/普通(WT/WB)四种内存属性;
  4. 权限与安全:缓存读统一标记特权访问;EL0非缓存/设备访问标记非特权;所有传输固定Secure;Normal内存VMID=0,设备内存携带有效VMID;
  5. 超时:通过IMP_BUSTIMEOUTR配置超时周期、使能开关、超时事务终止,超时触发ERREVENTx[13]

5.2 LLPP低时延外设端口(32bit AXI4·外设专用,永远非缓存)

  1. 地址配置:空间4KB~4MB(2的幂),分EL2、EL0/EL1独立使能;指令取指访问LLPP地址直接触发同步外部异常;未使能时数据访问报同步中止;
  2. 传输约束:仅INCR1单拍传输、单次≤32bit,传输不跨4字节边界;Device区非对齐访问触发对齐故障,Normal内存非对齐可拆分成多笔AXI传输,WSTRB字节选通精准控制写字节;
  3. 总线参数:最大2挂起读、8挂起写、1路独占;读写AXI ID固定为1;CACHE硬件固定为Device-nGnRnE;不支持64bit双字独占(LDREXD/STREXD)
  4. 超时:故障上报ERREVENTx[15],超时配置寄存器同AXIM。

5.3 Flash接口(128bit只读AXI子集·外挂ROM,无写通道)

  1. 地址空间固定128MB,单内核独立开关,禁用访问触发同步异常;缺省不实现ARSIZE/ARCACHE等多组AXI信号;
  2. 事务:缓存填充为WRAP4(64B整行),非缓存采用INCR单拍;单内核最多4 outstanding读,Flash+AXIM全局合计最多8个缓存填充;ID仅1bit(0=数据侧、1=指令侧);
  3. 附加特性:LATEERRFx引脚接收Flash外设可纠错信号,内核收到后自动重传,不产生异常;超时上报ERREVENTx[14]

5.4 AXIS(Cluster共享从接口·16MB地址·外部访问TCM专用)

  1. 地址映射:16MB均分4块×4MB(每核对应一块),单4MB再拆分3×1MB(ATCM/BTCM/CTCM)+1MB空闲;空闲/越界访问返回DECERR;
  2. AXI限制:仅支持16B、64B两种突发,其余突发返回SLVERR;64B写突发必须全字节有效;不支持独占、CACHE、QoS、安全PROT等AXI字段;读写 outstanding深度各12;
  3. 访问权限:IMP_SLAVEPCTLR配置仅特权/全权限访问TCM,越权返回SLVERR;外部AXIS写与内核DMB写同地址存在写重排序,MRPATTRx标记重排序行为。

6. ECC错误检测与容错机制

R52全链路(TCM、Cache、四大总线)可选ECC/奇偶校验,用于功能安全故障检测:

  1. ECC块粒度

    • TCM:ATCM=64bit/ECC块、BTCM/CTCM=32bit/ECC块;
    • Cache:ICache Data=64bit、DCache Data=32bit,Tag以整Tag为ECC块;
    • 总线:AXIM64b、LLPP32b、Flash可选64/128b、AXIS64b;地址/控制信号32bit ECC,握手线可选奇偶校验。
  2. 故障处理

    • 单比特错:硬件自动纠错、修正数据回写到RAM;
    • 双比特错:不可纠正,TCM读指令→预取中止、读数据→同步数据中止、写→异步中止、AXIS读→SLVERR;Cache失效对应行、从AXIM/Flash重载有效数据;
  3. RMW读改写

ECC块大于单次访问粒度(如单字节写)时,硬件自动读原有数据→合并新数据→重算ECC→回写;

  1. 错误记录

I/D Cache、TCM、Flash各配置2个错误记录寄存器;寄存器满溢出后,可纠/不可纠错误分别通过ERREVENTx[16/17]上报;Flash特有Late可纠错仅重传、不触发异常;

  1. 全局开关:

复位默认开启全部ECC,软件通过IMP_MEMPROTCTLR.RAMPROTEN全局启停ECC。

7. 独占访问LDREX/STREX

  1. 本地独占监视器粒度512bit,仅用于同内核TCM/非共享内存进程同步,AXIS跨核访问不占用本地监视器
  2. 共享内存独占:本地监视器预校验,校验失败则独占事务不再发往外部总线;Outer Shareable(设备/非缓存普通内存)独占需要外部全局独占监视器;
  3. 接口限制:Flash只读无独占、LLPP不支持64bit双字独占、AXIS完全不支持独占指令。

8. 总线超时

AXIM、LLPP、Flash三个接口各自拥有独立可编程超时检测逻辑,超时后可选择上报故障信号或直接屏蔽后续总线访问,故障分别绑定不同ERREVENTx引脚。

整体设计总结

Cortex‑R52存储面向汽车/工业高实时安全场景

  1. TCM提供极致确定性访问,满足硬实时;
  2. 可选L1缓存平衡性能与时序;
  3. 分四类专用AXI接口,区分主存/Flash/外设/外部TCM访问,接口协议精简降低SoC互联成本;
  4. 全链路ECC保障功能安全,满足ASIL等安全规范;
  5. 分层独占+MPU+分级使能,完善存储权限与多虚拟化EL0/EL1/EL2分级管控。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 3:16:24

单目操作符 ++、--、+、- 几分钟搞懂

啥是单目操作符?简单说,只需要一个操作数的运算符就是单目操作符。比如 -5 里的负号,i 里的自增。今天只说四个最常用的:、--、、-。一、正号 和负号 -这个最简单,就是数学里的正负号。int a 10; int b -a; // b …

作者头像 李华
网站建设 2026/7/4 3:15:14

OpenCV案例——微笑检测

一、项目概述项目采用分层检测逻辑,先识别画面中的人脸区域,再只在人脸范围内检测微笑,有效规避背景干扰,提升识别准确率。程序运行后会调用本地摄像头,绿色框标记人脸,蓝色框标记微笑区域,检测…

作者头像 李华
网站建设 2026/7/4 3:15:11

React Server Components 边界:不是所有组件都该搬到服务端

React Server Components 边界:不是所有组件都该搬到服务端 React Server Components 带来了新的架构选择。服务端组件可以减少客户端包体、直接访问后端资源,也能让一些页面更快。但它不是"把所有组件搬到服务端"的按钮。交互状态、浏览器 AP…

作者头像 李华
网站建设 2026/7/4 3:14:45

从 0 学习 Alibaba Open Code Review(三):Git Diff 解析流程

前言 上一篇文章中,从源码角度找到了 ocr review 的命令入口。 当用户执行: ocr review程序会从 cmd/opencodereview/main.go 进入命令分发逻辑,然后进入: runReview(args[1:])接着会调用: parseReviewFlags(args)解析…

作者头像 李华
网站建设 2026/7/4 3:14:20

第六篇:《内存分析工具:vmstat、smem、pmap、Valgrind》

理解了内存管理的原理之后,需要用工具把理论“可视化”。内存分析工具链可以分为三个层次:系统级(vmstat,看整体趋势)、进程级(smem、pmap,看具体进程的内存分布)和代码级&#xff0…

作者头像 李华