协处理器CP15操作指令

一、指令:mrc 用于读mcr用于写CP15中的寄存器。
1、什么是协处理器:
(1)、SOC内部另一处理核心,协助主CPU实现某些功能,被主CPU调用执行一定的任务。
(2)、ARM设计上支持多达16个协处理器,但一般SOC只实现其中的CP15。
(3)、协处理器和mmu(内在管理单元,是CPU用来管理虚似存储器,提供硬件访问内存机制),cache、TLB(转换检测缓冲区)等处理有关,功能上和操作系统的虚似地址映射,cache管理等有关。
(4)、协处理器里的每一个寄存器都有一个编号,通过操作编号找到寄存器,ARM只有CP15寄存器。
例:mrc p15 ,0, r0, c1, c0, 0
0是第一个参数永远为0,r0是CPU寄存器,C1和C0是协处理器内的寄存器,最后一个参数一般为0或省略。协处理器里的寄存器以C开头,CPU中的寄存器以R开头。
要知道这一名指令的意思必须知道P15协处理器中C1和C0的特定功能(查CP15功能表)。
二、mrc与mcr详解:
1、协处理器的读写:
(1)mrc读:将CPU寄存器中的数据传送到协处理器寄存器中。
(2)、mcr写:将协处理器寄存器中的数据传送到CPU寄存器中。
(3)、读写操作指的是以CPU寄存器为目标去读写。

(4)mrc/mcr指令解读:
MCR{cond} coproc,opcode1,Rd,CRn,CRm,opcode2
MRC {cond} coproc,opcode1,Rd,CRn,CRm,opcode2
Coproc 指令操作的协处理器名 标准名为pn n为0----15。
Opcode1 协处理器的特定操作码,对于CP15寄存器来说,opcode1永远为0,不为0时,操作结果不可预知。
Rd CPU的通用寄存器作为目标。
CRn 协处理器寄存器。
CRm 协处理器寄存器(用来区分同一个编号的不同物理寄存器,当不需要提供附加信息时,指定为C0)
Opcode2 可选的协处理器特定操作码,(用来区分同一个编号的不同物理寄存器,当不需要提供附加信息时,指定为0)在基于ARM的嵌入式系统中,存储系统通常是通过系统控制协处理器CP15完成的。
(5)、CP15可以包含16个32位的特殊功能寄存器寄存器,功能是设计CPU时制定的,其编号为0----15(指令中用C0----C15表示)。操作这些寄存器就是操作这些寄存器的编号,具体功能要查C0—C15的功能表。而具编号寄存每位定义为什么功能也要查表。实际对于某些编号的寄存器可能对应有多个物理寄存器。在指令中指定特定的标志位来区分这些物理寄存器。有些类似于ARM寄存器中,处于不同的处理器模式时,ARM某些寄存器可能不同。

协处理器CP15操作指令_第1张图片

你可能感兴趣的:(协处理器CP15操作指令)