首页 > 其他 > 详细

协处理器CP15

时间:2014-03-18 12:02:00      阅读:346      评论:0      收藏:0      [点我收藏+]

在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32位的寄存器,其编号为0~15。

CP15访问CP15寄存器的指令

MCR ARM寄存器到协处理器寄存器的数据传送

MRC 协处理器寄存器到ARM寄存器的数据传送

MCR指令和MRC指令只能在处理器模式为系统模式时执行,在用户模式下执行MCR指令和MRC指令将会触发未定义指令的异常中断。

MCR指令

MCR指令将ARM处理器的寄存器中的数据传送到协处理器寄存器中。如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。

指令语法格式

bubuko.com,布布扣
MCR{<cond>} <p>,<opcode_1>,<Rd>,<CRn>,<CRm>{,<opcode_2>}
MCR{<cond>} p15,0,<Rd>,<CRn>,<CRm>{,<opcode_2>}
bubuko.com,布布扣

其中,<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,否则可能导致不可预知的结果。

使用示例

下面的指令从ARM寄存器R4中中将数据传送到协处理器CP15的寄存器C1中。其中R4为ARM寄存器,存放源操作数,C1、C0为协处理器寄存器,为目标寄存器,opcode_1为0,opcode_2为0。

bubuko.com,布布扣
MCR p15, 0, R4, C1, C0, 0
bubuko.com,布布扣

MRC指令

MRC指令将协处理器的寄存器中的数值传送到ARM处理器的寄存器中、如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。

指令语法格式

bubuko.com,布布扣
MRC{<cond>} <p>,<opcode_1>,<Rd>,<CRn>,<CRm>{,<opcode_2>}
MRC{<cond>} p15,0,<Rd>,<CRn>,<CRm>{,<opcode_2>}
bubuko.com,布布扣

参数用法同MCR指令

CP15中的寄存器介绍

bubuko.com,布布扣

寄存器0数据格式

bubuko.com,布布扣

寄存器1数据格式

bubuko.com,布布扣

附图1:

bubuko.com,布布扣

附图2:

bubuko.com,布布扣

详见PPT文档,来自于百度文库

转自:http://simengru.blog.163.com/blog/static/54386860201010301111898/

协处理器CP15,布布扣,bubuko.com

协处理器CP15

原文:http://www.cnblogs.com/zhangpengshou/p/3606557.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!