代码拉取完成,页面将自动刷新
虚拟内存系统(VMSA)提供了一套内存管理单元(MMU), 它控制着地址转换、访问权限和内存属性的确定和检查。
地址转换过程将CPU使用的虚拟地址(VAs)映射到物理内存系统的物理地址(PAs)上。
在本SDK中 aarch32 state 采用 section 格式的转换表
在本SDK中 aarch64 state 采用 4KB 粒度 格式的转换表
/* 访问权限 */
#define MT_P_NA_U_NA /* higher Exception level access=NA, user=NA */
#define MT_P_RW_U_NA /* higher Exception level access=RW, user=NA */
#define MT_P_RW_U_RO /* higher Exception level access=RW, user=RO */
#define MT_P_RW_U_RW /* higher Exception level access=RW, user=RW */
#define MT_P_RO_U_NA /* higher Exception level access=RO, user=NA */
#define MT_P_RO_U_RO /* higher Exception level access=RO, user=RO */
/* 内存属性参数 */
#define MT_DEVICE_NGNRNE /* Device-nGnRnE , Outer Shareable */
#define MT_DEVICE_NGNRE /* Device-nGnRE , Outer Shareable */
#define MT_NORMAL_WT /* Outer and Inner Write-Through, Read-Allocate No Write-Allocate , Outer Shareable */
#define MT_NORMAL_WB_WCN /* Outer and Inner Write-Back, Read-Allocate No Write-Allocate , Outer Shareable */
#define MT_NORMAL_NC /* Outer and Inner Non-cacheable , Outer Shareable , Outer Shareable */
#define MT_NORMAL /* Outer and Inner Write-Back, Read-Allocate Write-Allocate , Outer Shareable , Outer Shareable */
void FSetTlbAttributes(uintptr addr, fsize_t size, u32 attrib);
Note:
aarch32 state 采用 section 页表,由此addr 建议采用1MB 地址对齐,size 建议为MB的整数倍。
aarch64 state 采用 4KB 粒度 页表,由此addr 建议采用4KB 地址对齐,size 建议为4KB的整数倍。
Input:
- addr , 需要为内存区域设置属性与权限的起始地址
- size , 内存区域的范围
- attrib,指定内存区域的属性 ,内存属性的取值由 访问权限 与 内存属性参数 组成,具体类型参考 ### 5.1 用户定义
Return:
- void
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。