ARM920T协处理器以及MMU的分析(一)

本文深入介绍了ARM920T中的存储管理协处理器CP15及其操作指令,以及MMU的地址变换过程,包括基于section base的段基地址查询方式。文章详细阐述了MMU的地址转换条目地址合成方法,一级页表查询,以及段描述符的访问权限和控制位。文中还展示了创建MMU一级页表的代码示例,帮助读者理解MMU的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、ARM中对于存储管理的协处理器CP15

CP15可以包含1632bit的寄存器,分别标记为015。但是对于同一个寄存器的物理寄存器可能会对应多个。

实际上对于CP15的访问的指令相当简单,只有MCRMRC。并且这两个指令的格式是相同的。

MCR/MRC {<cond>} p15, 0 ,<Rd>,<CRn>,<CRm>{ <opcode_2>}

其中Rd ARM的寄存器,CRnCRm为协处理寄存器。CRn为主,而CRmopcode_2为辅助寄存器,主要区分同一编号的不同寄存器。如果不需要的情况下CRmC0,而opcode_20

 

其中c1寄存器的bit0为禁止或者使能MMU

如使能MMU

MRC P15,0,R0,C1,C0,0

ORR R0,#01

MCR P15,0,R0,C1,C0,0

二、MMU的地址变换

ARMTTB(Translation Table Base)中存储了段描述符的物理地址,它必须与16KB对齐,所以低14bit都是零。如下图所示

它将4GB的空间划分为4096X32bit的区域虚拟寻址。这种寻址方式又分为两个步骤进行,分别为一级页表查询和二级页表查询。

       下图为整个寻址方式的总框图:

 

 

从图中我们可以清楚的看到页表的查询分为直接的section base查询和基于二级页表的查询。下面将对这两种查询方式分别讨论和讲解。

1 基于section base

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值