TC387——MPU简介

MPU保护系统

TC387提供了硬件保护机制,可以防止用户指定的内存区域遭受未授权的读取,写入或指令获取访问。核心目标是隔离错误。例如,一个崩溃的应用程序(任务)不会因为写入了操作系统或其他应用程序的内存区域而导致整个系统崩溃。

保护功能由硬件实现,同时也有助于应用程序调试。不需要软件频繁干预,因此对系统性能影响很小。

避免了像复杂缓存机制那样不可预测的时间延迟,这对于实时嵌入式系统(如汽车电子控制单元 ECU)至关重要。

三大核心子系统

内存保护不是单一功能,而是由三个相互协作的机制共同完成的。

陷阱系统

当保护硬件检测到未经授权的访问(例如,向只读内存区域进行写入)时,就会发生陷阱。跳转到预设的陷阱处理程序。该程序可能会终止这个出错的任务,并记录错误日志,从而防止错误扩散,实现了错误隔离。

陷阱是由于事件而引发的,例如不可屏蔽中断(NMI)、指令异常或非法访问。TriCore 架构包含八个陷阱类别,这些类别进一步分为同步或异步、硬件或软件。

当发生非法操作(如非法内存访问、除零错误等)时,CPU 会自动"陷入"一个预设的处理程序(陷阱)。这就像是触发了警报,CPU 会立即停止当前任务,转去执行错误处理代码。

  • 同步陷阱: 由当前执行的指令直接导致(例如,执行了一条访问非法地址的指令)。可精确复现。
  • 异步陷阱: 由外部事件引发,与当前指令流无关(例如,一个外部中断请求)。不可精确复现。
  • 硬件/软件陷阱: 硬件陷阱由 CPU 硬件触发,而软件陷阱由指令明确触发。

I/O 特权级别

有三种 I/O 模式:用户-0 模式、用户-1 模式和超级用户模式。CPU 在任何时候都处于以下三种模式之一,模式决定了代码的权限:

  • 超级用户模式: 最高权限。操作系统内核运行于此,可以访问所有资源和执行所有指令。
  • 用户-1 模式: 平衡模式。这是一个精妙的设计,允许应用程序直接、高效地访问一些"非关键"外设(如某个通用定时器),而无需经过操作系统的繁琐切换。这样既保证了效率,又因为权限低于超级用户模式而维护了安全性(应用程序无法访问关键外设,如系统看门狗)。
  • 用户-0 模式: 最低权限。普通的应用程序任务运行于此,对硬件和敏感内存的访问受到严格限制。

内存保护单元 - 两种实现方式

提供对任务允许访问的内存区域以及允许的访问类型的控制。

基于范围

一个保护范围是地址空间的一个连续部分,可以为其指定访问权限。一个保护范围由下边界和上边界定义。满足:)下界(Lower Boundary) <= Address < 上界(Upper Boundary),地址区间为左闭右开。

保护范围分为两类:

类型 控制权限
数据保护范围 读(R)、写(R)权限
代码保护范围 指令取值(X)权限
下边界和上边界的粒度(即最小对齐单位)为:数据保护范围是8字节,代码保护范围是32字节。
数据保护范围


代码保护范围



基于分页

将内存划分为许多固定大小的"页"(如 4KB)。通过 MMU 和 页表,为每一页单独设置访问权限。这使得每个任务都可以拥有独立的、看似连续的虚拟地址空间。细粒度,灵活性高,能实现高级功能(如内存交换到硬盘),但开销较大,复杂性高。 采用 基于页表条目(PTE)的转换,由 MMU 负责将程序看到的虚拟地址转换为实际的物理地址。

保护集

为整个使用的地址空间定义的一整套访问权限,称为保护集。

每个保护集由以下内容组成:

• 代码保护范围的选定组合

• 数据保护范围的选定组合

• 为每个范围定义的访问权限

• 可执行代码保护范围的选定组合

• 可写数据保护范围的选定组合

• 可读数据保护范围的选定组合

保护集同时定义了数据访问权限和指令获取权限。

在一个保护集中,每个数据保护范围都有相关的读使能和写使能标志。每个代码保护范围都有一个相关的执行使能标志。

所提供的内存保护集的数量取决于每个TriCore实现,最少为两个,最多为八个。TC387支持6个保护集。

拥有多个保护集可以在在用户模式和管理模式之间,或不同用户任务之间切换时快速改变整套访问权限。

在任何给定时间,其中一个集合是当前的保护寄存器集,它决定当前任务的内存访问是否合法。PSW.PRS 字段确定当前的保护寄存器集编号。通过硬件支持的原子性切换(修改PSW.PRS),避免了在软件中逐个重新配置几十个保护范围寄存器所带来的巨大时间开销,保证了上下文切换的确定性和速度。

数据读取
数据写入
代码执行

访问权限相交的内存区域

关于内存访问权限在相交内存范围中的处理规则:

  • 采用逻辑OR运算:当多个内存范围重叠时,任意地址的最终权限是包含该地址的所有范围权限的按位或(OR)运算结果
  • 最宽松权限优先:只要有一个内存范围允许某种操作(读/写/执行)。该操作即被允许

例如:

• 范围 A 设置为读/写权限

• 范围 B 设置为只读权限

• 因此,A 和 B 的交叉区域将具有读/写权限

通过区域嵌套机制,在父范围设置基础权限(如只读),通过子范围开放更高权限(如读写)。

跨越内存保护边界

一次内存访问(代码或数据)可能会横跨由保护系统定义的两个区域。

当保护功能启用时,TC1.6.2P 会根据已启用的 MPU 保护范围来检查指令获取和数据访问操作的基地址。如果该基地址不在已启用的保护范围内,将引发陷阱。TC1.6.2P 不会检查指令获取或数据访问的完整范围。因此,一条从一个已启用区域最顶部开始的指令获取或数据访问,可能会延伸到非启用区域,而不会触发陷阱条件。

例如:

一个 4 字节的指令 "DCBA" 被放在保护区域 B 的有效位置 "A",但它延伸到了无效的区域 A。执行该指令不会导致 MPX 陷阱条件,即使该指令的一部分延伸到了无效区域。

启用内存保护

内存保护通过内存保护寄存器组进行控制。注意:将PROTEN设置为1之前,请先初始化保护寄存器组。

0:内存保护禁用

1:内存保护启用

相关推荐
电子科技圈15 小时前
IAR与Quintauris携手推进RISC-V汽车实时应用的功能安全软件开发
嵌入式硬件·安全·设计模式·编辑器·汽车·risc-v
2301_7644413318 小时前
新能源汽车电磁辐射高级预测
python·算法·数学建模·汽车
MOS管-冠华伟业18 小时前
微硕WINSOK高性能MOS管WST2N7002B,赋能汽车多区氛围灯精准控制
汽车
图扑可视化18 小时前
图扑 HT 智慧汽车展示平台全自研技术方案
汽车·数据可视化·组态监控·汽车展示
九河云19 小时前
汽车轻量化部件智造:碳纤维成型 AI 调控与强度性能数字孪生验证实践
人工智能·汽车·数字化转型
3DVisionary19 小时前
DIC技术如何重新定义汽车板料成形测试
人工智能·汽车·材料力学性能·dic技术·汽车板料·成形极限图·非接触式测量
车端域控测试工程师19 小时前
Autosar网络管理测试用例 - TC003
c语言·开发语言·学习·汽车·测试用例·capl·canoe
fengfuyao98519 小时前
Simulink混合动力汽车(HEV)建模与仿真
汽车
天天爱吃肉82181 天前
智能网联汽车信息安全深度解析:从UN-R155与GB44495标准到OBD/UDS技术实践
网络·嵌入式硬件·汽车