0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PMP物理内存保护介绍

麦辣鸡腿堡 来源:嵌入式Linux充电站 作者: Vincent 2023-10-07 17:49 次阅读

PMP 和 Paging

物理内存保护机制旨在与 RISC‑V 指令集手册,第二卷:特权架构,版本 1.10 中描述的基于页面的虚拟内存系统组合。启用分页后,访问虚拟内存的指令可能会导致多次物理内存访问,包括对页表的隐式引用。PMP 检查适用于所有这些访问。隐式页表访问的有效特权模式是管理员模式。

允许使用虚拟内存的实现以推测方式执行地址转换,并且比显式虚拟内存访问所需的时间更早。可以在地址转换和显式虚拟内存访问之间的任何时候检查结果物理地址的 PMP 设置。到不可执行地址范围的错误预测分支不会生成陷阱。因此,当以影响保存页表的物理内存或页表指向的物理内存的方式修改 PMP 设置时,M 模式软件必须将 PMP 设置与虚拟内存系统同步。这是通过在写入 PMP CSR 后执行 rs1=x0 和 rs2=x0 的 SFENCE.VMA 指令来实现的。

如果未实现基于页面的虚拟内存,或者当它被禁用时,内存访问会同步检查 PMP 设置,因此不需要 fence。

PMP 限制

在包含多个 hart 的系统中,每个 hart 都有自己的 PMP 设备。hart 上的 PMP 权限不能应用于多 hart 系统中其他 hart 的访问。此外, SiFive 设计可能包含一个前端端口,以允许外部总线主控器访问系统的完整内存映射。PMP 无法阻止前端端口上的外部总线主控器的访问。

没有 PMP 保护的区域的行为

如果内存映射的非保留区域没有应用 PMP 权限,则默认情况下,管理员或用户模式访问将失败,而机器模式访问将被允许。

访问设备内存映射中的保留区域(例如中断控制器)读取时将返回 0x0,写入将被忽略。在没有 PMP 保护的情况下访问设备内存映射之外的保留区域将导致总线错误。总线错误可以使用总线错误单元 (BEU) 对 hart 产生中断。

PMP 保护区的缓存刷新行为

当一条线被带入高速缓存并且 PMP 设置为断言锁定 (L) 位以保护该线的一部分时,数据高速缓存刷新指令将生成存储访问错误异常,如果冲洗包括受保护的线路的任何部分。缓存刷新指令执行无效和回写,因此它实际上是在尝试写回受保护的内存位置。

如果缓存刷新发生在未受保护的部分行上,刷新将成功并且不会产生异常。如果需要在没有回写的情况下刷新数据高速缓存,请改用高速缓存丢弃指令,因为这会使该行无效但不会回写。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1309

    浏览量

    39850
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72774
  • 设备
    +关注

    关注

    2

    文章

    4172

    浏览量

    69284
  • PMP
    PMP
    +关注

    关注

    0

    文章

    43

    浏览量

    18068
  • RISC
    +关注

    关注

    6

    文章

    431

    浏览量

    83250
  • sifive
    +关注

    关注

    0

    文章

    34

    浏览量

    9423
收藏 人收藏

    评论

    相关推荐

    管理STM32 MCU中的内存保护单元

    本应用笔记介绍如何管理 STM32 产品中的内存保护单元(MPU)。MPU 是用于存储器保护的可选组件。STM32 微控制器(MCU)中嵌入 MPU 之后变得更稳健可靠。在使用 MPU 之前,必须对其进行编程并加以启用。如果 M
    发表于 12-23 11:04 810次阅读

    STM32H750在使能内存保护后启用cache导致SPI+DMA传输不准确怎么解决?

    STM32H750在使能内存保护后启用cache 导致SPI+DMA传输不准确,具体就是调用HAL_SPI_TransmitReceive_DMA 这个函数,读到的数据全是0,但是拿逻辑分析仪看上面显示的数据是正确的。
    发表于 03-07 06:12

    请问C6678中的内存保护中L2MPFAR寄存器保存的地址是相对于L2 SRAM的偏移地址吗?

    各位专家好:请问在内存保护机制中 L2MPFAR 寄存器保存的是地址是不是相对于L2 SRAM的偏移地址?如果是,那么这个 L2 SRAM 是Local SRAM 还是 CorePac L2 SRAM?
    发表于 01-10 11:37

    玄铁VirtualZone:基于RISC-V架构的安全扩展

    ,RISC-V技术提供了有两种具备安全扩展能力的属性:物理内存保护PMP)和机器特权模式(M-mode)。PMP物理地址
    发表于 09-01 14:38

    如何为MPC5744P配置内存保护单元?

    我想知道更多关于如何为 MPC5744P 配置内存保护单元,我需要知道如何使用这个配置器。
    发表于 04-04 09:03

    Armv8-M内存模型与内存保护用户指南

    本指南概述了Armv8-M内存模型和内存保护单元(MPU)在Cortex-M处理器中实现。本指南使用示例来帮助解释这些概念 它介绍了。 本章概述以下主题: •内存模型 •
    发表于 08-02 08:12

    如何管理STM32产品中的内存保护单元(MPU)

    本应用笔记介绍如何管理 STM32 产品中的内存保护单元(MPU)。MPU 是用于存储器保护的可选组件。STM32 微控制器(MCU)中嵌入 MPU 之后变得更稳健可靠。在使用 MPU 之前,必须
    发表于 09-07 06:23

    Cortex-M内核的MPU内存保护单元

    讲讲Cortex-M内核的MPU内存保护单元
    的头像 发表于 03-04 11:17 3290次阅读
    Cortex-M内核的MPU<b class='flag-5'>内存保护</b>单元

    为什么要使用MPU?MPU如何实现内存保护

    如果你开发的嵌入式项目,因内存溢出,或者内存故障等一些原因,造成了重大经济损失,或者造成了重大事故,你就能体会为什么要使用内存保护单元(MPU)了。
    的头像 发表于 07-05 17:38 6283次阅读
    为什么要使用MPU?MPU如何实现<b class='flag-5'>内存保护</b>?

    管理 STM32 MCU 中的内存保护单元

    管理 STM32 MCU 中的内存保护单元
    发表于 11-21 08:11 3次下载
    管理 STM32 MCU 中的<b class='flag-5'>内存保护</b>单元

    AN4838 管理STM32 MCU中的内存保护单元

    AN4838 管理STM32 MCU中的内存保护单元
    发表于 11-21 17:07 0次下载
    AN4838 管理STM32 MCU中的<b class='flag-5'>内存保护</b>单元

    应用笔记|管理STM32 MCU中的内存保护单元

    中的内存保护单元(MPU)。MPU 是用于存储器保护的可选组件。STM32 微控制器(MCU)中嵌入 MPU 之后变得更稳健可靠。在使用 MPU 之前,必须对其进行编程并加以启用。如果 MPU 没有启用,则
    的头像 发表于 12-21 21:05 668次阅读

    为什么要使用MPU?MPU如何实现内存保护

    如果你开发的嵌入式项目,因内存溢出,或者内存故障等一些原因,造成了重大经济损失,或者造成了重大事故,你就能体会为什么要使用内存保护单元(MPU)了。
    的头像 发表于 02-24 11:59 2108次阅读

    什么是MPU?MPU在哪些方面保护内存安全?

    内存保护单元(MPU)是一种硬件机制,通过只允许代码访问需要的内存和外设来提高嵌入式设备的安全性。
    的头像 发表于 06-12 09:06 7200次阅读
    什么是MPU?MPU在哪些方面<b class='flag-5'>保护</b><b class='flag-5'>内存</b>安全?

    如何管理STM32产品中的内存保护单元(MPU)

    电子发烧友网站提供《如何管理STM32产品中的内存保护单元(MPU).pdf》资料免费下载
    发表于 08-01 09:15 0次下载
    如何管理STM32产品中的<b class='flag-5'>内存保护</b>单元(MPU)