概述
一、协处理器
SoC内部另一处理核心,协助主CPU实现某些功能,被主CPU调用执行一定任务。ARM设计上支持多达16个协处理器,但是一般
SoC只实现其中的CP15.(cp:coprocessor)
协处理器和MMU、cache、TLB等处理有关,功能上和操作系统的虚拟地址映射、cache管理等有关。
二、CP15协处理器简介
CPl5包含l6个32位寄存器,其编号为0~15。
CPl5中的寄存器可能是只读的,也可能是只写的,还有一些是可读可写的。在对协处理器寄存器进行操作时,需要注意以下几个问题:
1.寄存器的访问类型(只读/只写/可读可写)。
2.不同的访问引发的不同功能。
3.相同编号的寄存器是否对应不同的物理寄存器。
4.寄存器的具体作用。关于详细介绍请看以下博文
https://blog.csdn.net/gameit/article/details/13169405
https://wenku.baidu.com/view/2a74c5a90029bd64783e2cb4.html
三、协处理器cp15操作指令(mcr & mrc)
MCR:将ARM寄存器的值写入CPl5寄存器中;
MRC:将CPl5寄存器的值写入ARM寄存器中。
MCR{<cond>} p15, <opcode1=0>, <Rd>, <Crn>, <CRm> {, <opcode2>}
MRC{<cond>} p15, <opcode1=0>, <Rd>, <Crn>, <CRm> {, <opcode2>}
opcode_1:对于cp15永远为0
Rd:ARM的普通寄存器
Crn:cp15的寄存器,合法值是c0~c15
Crm:cp15的寄存器,一般均设为c0
opcode_2:一般省略或为0(具体看第二篇博文)
使用举例:
mrc p15, 0, r0, c1, c0, 0 其实就是把C1里面的值读到R0
orr r0, r0, #1
mcr p15, 0, r0, c1, c0, 0 R0再 写回去C1最后
以上就是沉静西牛为你收集整理的ARM汇编指令-协处理器cp15操作指令(mcr & mrc)的全部内容,希望文章能够帮你解决ARM汇编指令-协处理器cp15操作指令(mcr & mrc)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复