系统控制协处理器CP15

在基于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>} p15,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,否则可能导致不可预知的结果。

  • MRC指令

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

MRC{<cond>} <p><opcode_1><Rd>,<CRn>,<CRm>{,<opcode_2>}
MRC{<cond>} p15,0,<Rd>,<CRn>,<CRm>{,<opcode_2>}
  • CP15中的寄存器介绍
    系统控制协处理器CP15_第1张图片
    寄存器 C1
    CP15中的寄存器C1是一个控制寄存器,它包括以下控制功能:
    禁止或使能MMU以及其他与存储系统相关的功能
    配置存储系统以及ARM处理器中的相关部分的工作
    指令如下:
    mrc p15, 0, r0, c1, c0{, 0} ;将 CP15 的寄存器 C1 的值读到 r0 中
    mcr p15, 0, r0, c1, c0{, 0} ;将 r0 的值写到 CP15 的寄存器 C1 中
    CP15 中的寄存器 C1 的编码格式及含义说明如下:
    系统控制协处理器CP15_第2张图片
    系统控制协处理器CP15_第3张图片
    寄存器7:Cache Operations
    该寄存器是只写寄存器,用于管理指令缓存和数据缓存。
    对该寄存器的写操作所实现的功能,是通过MCR指令中的opcode_2和CRm两者的组合来选择的,具体组合如下。
    系统控制协处理器CP15_第4张图片
    寄存器8:TLB Operations
    系统协处理器CP15的寄存器C8是一个只写的寄存器,被用于管理(Translation Lookaside Buffer:传输后备缓冲器)。TLB是一个内存管理单元用于改进虚拟地址到物理地址转换速度的缓存。有 the instruction TLB 和 the data TLB.
    系统控制协处理器CP15_第5张图片

注:更详细内容可读
http://blog.sina.com.cn/s/blog_858820890102v1gc.html
http://6xudonghai.blog.163.com/blog/static/336406292008724103317304/

你可能感兴趣的:(系统控制协处理器CP15)