房产智能建站系统,社区团购系统开发,开源企业网站源码,wordpress4.7安装主题1、前言 #xff08;1#xff09;本文描述的是玄铁C906的物理内存保护机制的实现中#xff0c;与RISC-V架构手册中完整PMP机制的差异部分#xff1b; #xff08;2#xff09;RISC-V架构的PMP机制#xff0c;参考博客#xff1a;《RISC-V架构——物理内存属性和物理内存…1、前言 1本文描述的是玄铁C906的物理内存保护机制的实现中与RISC-V架构手册中完整PMP机制的差异部分 2RISC-V架构的PMP机制参考博客《RISC-V架构——物理内存属性和物理内存保护》 2、PMP概览 3、PMP地址寄存器差异 4、PMP地址寄存器差异带来编程差异 1pmp配置项中的NAPOR地址匹配模式是计算pmp地址寄存器中值的低位有多少个零来计算的但是c906的pmp地址寄存器读出来低九位只能是零所以通过读PMP地址寄存器的值来反推保护区域范围就有问题不能直接移植opensbi里的pmp_get函数需要考虑低九位只读且为零的问题 2举例按照NAPOR地址匹配模式写入38’ byy_yyyy_yyyy_yyyy_yyyy_yyyy_yyyy_yy01_1111_1111表示保护区域是2的93次方也就是4KB。但是你将上面的值写入然后从PMP地址寄存器中读出来是38’ byy_yyyy_yyyy_yyyy_yyyy_yyyy_yyyy_yy00_0000_0000因为pmp地址寄存器的低九位只读且为零 5、拓展 问题为什么把低九位设计成只读且为零 个人看法 1芯片支持最小保护区域是4KB也就是保护区域的大小的4KB的整数倍4KB也就2的12次方 2按照NAPOR地址匹配模式计算保护区域大小是2的n3次方其中n是地址最低位连续1的个数。要表示4KB刚好n12-39也就是低九位肯定是连续1既然低九位是固定的那干脆就硬件直接设计成只读为零简化芯片设计