RISC-V架构——物理内存属性和物理内存保护

1、物理内存属性(PMA:Physical Memory Attributes)

(1)系统内存映射包含各种不同属性的地址空间范围,每个地址空间范围支持的操作不一样;

(2)物理内存属性一般是在芯片设计阶段就固定下来(大部分芯片不支持软件修改),芯片内存有PAM检测器,PMA检测器会对物理地址权限和属性做检查;

2、物理内存保护

2.1、物理内存保护的作用(PMP:Physical Memory Protection)

在RISC-V体系结构中,M模式具有最高权限,拥有访问系统全部资源的权限。默认情况下,S模式和U模式对内存映射的任何区域没有读、写、执行权限,除非配置PMP来允许S模式和U模式访问

(2)在M模式下,只有PMP配置项的L字段是锁定状态,M模式才会去检查PMP权限;

作用:如果我们对某些地址范围有特殊需求,可以通过PMP来设置,防止出错;比如某个地址范围的数据希望只读不可写,可以设置PMP把这段地址范围设置成只读不可写属性,这样当有代码尝试修改数据时就会报错,防止误操作;

2.2、PMP配置寄存器

2.2.1、PMP配置寄存器数量

(1)RISC-V规定最多支持64个PMP配置项,也就是最多支持对64个地址范围做权限设置;

(2)每个地址范围对于的PMP配置表项是8位,要保存64个PMP配置项,64位RISC-V核只需要8个寄存器,32位RISC-V核需要16个寄存器;

(3)为了统一命名,64位RISC-V的pmpcfg寄存器只有pmpcfg0、pmpcfg2,只有双数的;

2.2.2、PMP配置表项

(1)地址匹配模式:怎么去计算配置的地址范围,见下一节;

(2)锁定状态:锁定状态下M模式需要去检查地址范围的权限;非锁定状态下,M模式拥有全部权限,不受PMP配置的权限限制;

2.2.3、地址匹配模式

2.2.3.1、TOR模式

表示地址范围由相邻两个pmpaddr寄存器的值决定;

2.2.3.2、NAPOT模式

表示的地址范围:pmp地址寄存器的值从bit0开始连续1的个数为n,则表示的地址范围是2的(n+3)次方字节;

2.3、PMP地址寄存器

(1)pmp地址寄存器的bit[53:0]保存物理地址范围的bit[55:2];

2.4、如何配置一段物理内存地址的保护属性?

以RAM地址为例:

(1)地址权限是可读可写,所有8位pmp配置项的值为0x9B;

(2)起始地址0x20000000左移2位,变成0x8000000;

(3)RAM的地址范围是0x8000,也就是2的15次方,pmpaddr寄存器中的值需要15-3=12个连续低位1,即0x8000FFF;

相关推荐
国科安芯11 小时前
火箭传感器控制单元的抗辐照MCU选型与环境适应性验证
单片机·嵌入式硬件·架构·risc-v·安全性测试
蒹葭玉树5 天前
【C++上岸】C++常见面试题目--操作系统篇(第三十期)
c++·面试·risc-v
国科安芯7 天前
面向星载芯片原子钟的RISC-V架构MCU抗辐照特性研究及可靠性分析
单片机·嵌入式硬件·架构·制造·risc-v·pcb工艺·安全性测试
思尔芯S2C9 天前
FPGA原型验证实战:如何应对外设连接问题
fpga开发·risc-v·soc设计·prototyping·原型验证
加强洁西卡10 天前
【RISC-V】从C到可执行文件分析链接重定位的过程
c语言·开发语言·risc-v
硬汉嵌入式10 天前
基于Rust构建的单片机Ariel RTOS,支持Cortex-M、RISC-V 和 Xtensa
单片机·rust·risc-v
MounRiver_Studio10 天前
RISC-V IDE MRS2进阶分享(三):MRS语言服务器
ide·mcu·risc-v·嵌入式开发
加强洁西卡10 天前
【RISC-V】解决链接器加入全局变量优化后操作系统无法启动的问题
risc-v
MounRiver_Studio10 天前
RISC-V IDE MRS2进阶分享(四):CH32H417双核芯片项目开发
ide·mcu·risc-v·嵌入式开发
加强洁西卡10 天前
【RISC-V】区分加载地址、链接地址、运行地址
risc-v