ARM协处理器

来源:互联网 发布:京东内部下单软件 编辑:程序博客网 时间:2024/04/28 20:03

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。