内存保护

简介

为保障系统的可靠性与安全性,防止软件缺陷或恶意代码对关键内存区域进行非法访问,芯片为不同类型的 CPU 内核提供了针对性的硬件内存保护机制。用户可以通过软件配置来实现灵活的硬件保护。

各个 CPU 的内存保护模块类型和区域数量如下表所示:

RTL8721Dx:

处理器

内存保护模块

区域数量

KM4

Non-Secure MPU

8

Secure MPU

4

KM0

Non-Secure MPU

4

备注

  • 支持 TrustZone 的 CPU 各自拥有独立的安全 MPU(Secure MPU)和非安全 MPU(Non-Secure MPU)。

  • 安全 MPU 仅在 Secure World 中生效,保护安全内存区域不被非安全代码访问;非安全 MPU 在 Non-Secure World 中生效,用于普通应用代码的内存保护。两者相互独立,区域配置互不干扰。

内存保护单元 (Arm®v8-M)

Arm®v8-M 内存保护单元 (Memory Protection Unit, MPU) 是 ARM Cortex-M 处理器中用于管理内存访问权限的硬件组件。它允许特权软件定义内存区域(Regions),并给每个区域分配特定的访问权限和存储器属性,为内存系统提供细粒度的硬件控制。

MPU 可以通过以下方式提高系统的安全性和可靠性:

  • 访问控制:可将内存区域设置为只读(Read-Only)或禁止执行(No-Execute,XN)等属性,防止代码段被意外覆写、数据段被非法执行。

  • 属性管理:控制 Cache 策略(Cacheable、Bufferable)和设备内存的共享属性,确保对内存的访问行为可预期。

  • 故障检测:当访问违反 MPU 配置的区域时,触发 MemManage 异常,帮助用户快速定位越界访问或权限错误。

MPU 区域编号越大,优先级越高。若两个区域地址范围存在重叠,该重叠区域的属性以编号较大的区域定义为准。

备注

  • 未被 MPU 配置的区域,或 MPU 被全局禁用时,处理器使用系统默认地址映射的内存属性访问该区域。

  • MPU 区域的起始地址和大小均须按 32 字节的倍数对齐。

备注

有关 ARM Cortex-M MPU 的更多信息,参考 Arm®v8-M Architecture Reference Manual

内存保护单元 (HiFi 5 DSP)

HiFi 5 DSP 集成了一个基于 Xtensa 架构的内存保护单元(Memory Protection Unit,MPU)。该模块为 DSP 程序提供内存访问控制与属性管理机制,允许特权软件定义多个独立的内存区域,并为每个区域分配特定的访问权限和内存类型。

DSP MPU 的主要功能包括:

  • 内存隔离:区分内核模式(Kernel/Privileged)和用户模式(User/Non-privileged)的访问权限,防止用户态代码访问特权内存区域。

  • 访问控制:可将内存区域配置为只读(Read-Only)或禁止执行(No-Execute,XN),实现精细化权限管理。

  • 缓存策略:定义特定内存区域是可缓存(Cacheable,Write-Back/Write-Through)还是不可缓存(Uncached/Device),影响 DSP 的访问延迟和一致性行为。

  • 访问检测:拦截未授权的读、写或执行操作,并触发异常,便于定位运行时内存错误。

当 MPU 被禁用时,处理器使用默认的后台映射。此时,整个 4GB 物理地址空间具有统一的默认属性。后台映射的属性配置如下:

字段

描述

AccessRights [3:0]

0x7

内核全权限,用户无权限

  • Kernel: 可读 (R)、可写 (W)、可执行 (X)

  • User: 无访问权限 (No Access)

MemoryType [8:0]

0x6

设备内存 (Device / Strong Ordered)

  • Cache: Never (永不缓存)

  • Shareable: Yes (可共享)

  • Bufferable: No (不可缓冲)

  • Interruptible: No (不可中断)

物理内存保护单元 (RISC-V PMP)

RISC-V 处理器集成了物理内存保护(Physical Memory Protection,PMP)单元。PMP 直接作用于物理地址空间,允许机器模式(M-Mode)软件为每个定义的内存区域独立配置读(Read)、写(Write)和执行(Execute)权限,从而在不依赖 MMU 的前提下实现硬件级访问隔离。

RISC-V 处理器集成了物理内存保护(Physical Memory Protection,PMP)单元。PMP 允许特权软件定义多个独立的内存区域(Regions),并为每个区域分配特定的访问权限。

PMP 的主要功能包括:

  • 机器模式专属配置:PMP 控制寄存器(CSR)仅能在机器模式(M-Mode)下进行配置,确保最高特权级的安全控制权不可被低特权代码篡改。

  • 细粒度权限管理:可为每个物理内存区域独立指定读/写/执行权限,支持灵活的访问控制策略。

  • 与 PMA 并行检查:PMP 的权限检查与物理内存属性(PMA,Physical Memory Attributes)检查并行执行,只有两者均允许时,访问请求才会被放行。

备注

  • PMP 仅控制 R/W/X 访问权限,不能控制缓存属性(缓存策略由 PMA 决定)。

  • PMP 内存保护的最小粒度为 1 KB,配置区域的起始地址和大小须满足对齐要求。

备注

有关 PMP 的更多信息,参考 RISC-V Privileged Architecture Specification