ARM920T = ARM9 core + MMU + Cache
MMU和Cache由CP15的相关寄存器来控制。
一、CP15协处理器
在基于ARM的嵌入式系统中,对存储系统的管理通常是通过设置系统控制协处理器CP15来实现。
1.CP15可以包含16个32位寄存器,其编号由0~15:
其中C1、C7和C9是Cache相关设置;
C1、C2、C3、C8和C10是MMU相关设置。
C0:ID寄存器;包含有当前CPU的ID代码和缓存类型,可以通过读取ID值、判断当前CPU的型号。
C1:控制;ARM的控制寄存器,控制MMU和Cache。
C2:置换表;页表基址寄存器TTB(Translation Table Base),存放页表的基址,MMU会自动去该寄存器中取出基址做VA地址到MVA地址的映射。
C3:访问控制范围;域访问控制寄存器。C4:保留位。
C5:默认状态。
C6:默认地址。
C7:Cache工作;缓存工作寄存器,用以管理指令缓存(I——Cache)和数据缓存(D——Cache)。
C8:TLB运行;TLB工作寄存器,用于管理指令TLB和数据TLB。
C9:Cache上锁。
C10:TLB上锁。
C11:保留位。
C12:保留位。
C13:FCSE PID;快速上下文切换寄存器,其内容为进程的PID,用于用户进程虚拟地址映射。
C14:保留位。
C15:芯片厂商自定义。
2.访问CP15寄存器的ARM指令如下,并且这些指令只能在ARM的特权模式下执行:
MCR:从ARM寄存器到CP15寄存器的数据传送指令
MCR {cond} p15, opcode_1, Rd, CRn, CRm {, opcode_2}
MRC:从CP15寄存器到ARM寄存器的数据传递指令
MRC {cond} p15, opcode_1, Rd, CRn, CRm {, opcode_2}
cond:条件执行条件码;当cond忽略时指令为无条件执行。
opcode_1:协处理器将执行操作的操作码;对于CP15来说,opcode_1永远为0。
Rd:目标通用ARM寄存器;不能是PC。
CRn:协处理器的操作目标寄存器,编号为C0~C15。
==================
CRm和opcode_2是指令选项,具体含义取决于不同寄存器。
CRm:附加的目标寄存器或源操作寄存器;用于区分同一编号的不同物理寄存器,一般为C0。
opcode_2:附件信息,用于区分同一编号的不同物理寄存器;一般为0。