关于ARM9协处理器CP15及MCR和MRC指令.pdf
文本预览下载声明
关于ARM9协处理器CP15及MCR和MRC指令
在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32 的寄存器,其
编号为0~ 15。
访访问问CP15寄寄存存器器的的指指令令
MCR ARM寄存器到协处理器寄存器的数据传送
MRC 协处理器寄存器到ARM寄存器的数据传送
MCR指指令令和和MRC指指令令只只能能在在处处理理器器模模式式为为系系统统模模式式时时执执行行,在用户模式下执行MCR指令和MRC指令将会触发未定义
指令的异常中断。
MCR指令
MCR指令将ARM处理器的寄存器中的数据传送到协处理器寄存器中。如果协处理器不能成功地执行该操作,将产生未定
义的指令异常中断。
指令语法格式
MCR{cond} p, opcode_ 1,Rd,CRn,CRm {,opcode_2}
MCR{cond} p 15,0,Rd,CRn,CRm {,opcode_2}
其中,cond为指令执行的条件码。当cond忽略时指令为无条件执行。
opcode_ 1为协处理器将执行的操作的操作码。对于CP15协处理器来说, opcode_ 1永远为0b000,当 opcode_ 1不
为0b000时,该指令操作结果不可预知。
Rd作为源寄存器的ARM寄存器,其值将被传送到协处理器寄存器中。
CRn作为目标寄存器的协处理器寄存器,其编号可能是C0,C1,…,C15。
CRm和和opcode_2两两者者组组合合决决定定对对协协处处理理器器寄寄存存器器进进行行所所需需要要的的操操作作,,如如果果没没有有指指定定,,则则将将
为为CRm为为C0,,opcode_2为为0,否则可能导致不可预知的结果。
The CRm field and opcode_2 field are used to specify a particular action when addressing registers.The
opcode_1, opcode_2 and CRm fields should be zero, except when the alues specified are used to select the
desired operations, in all instructions which access CP15. Using other alues will result in
unpredictable beha ior. Attempting to read from a non-readable register, or writing to a non-writable
register will cause unpredictable results.
使用示例
下面的指令从ARM寄存器R4中中将数据传送到协处理器CP15的寄存器C1中。其中R4为ARM寄存器,存放源操作
数,C1、C0为协处理器寄存器,为目标寄存器,opcode_ 1为0,opcode_2为0。
MCR p 15, 0, R4, C1, C0, 0
MRC指令
MRC指令将协处理器的寄存器中的数值传送到ARM处理器的寄存器中、如果协处理器不能成功地执行该操作,将产生未
定义的指令异常中断。
指令语法格式
MRC{cond} p, opcode_ 1,Rd,CRn,CRm {,opcode_2}
MRC{cond} p 15,0,Rd,CRn,CRm {,opcode_2}
参数用法同MCR指令
CP15中的寄存器介绍
Regi ter (寄存器) Read Write
C0 ID Code ( 1) Unpredictable
C0 Catch type( 1) Unpredictable
C1 Control Control
C2 Translation table base Translation table base
C3
显示全部