博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ARM协处理器
阅读量:4180 次
发布时间:2019-05-26

本文共 1058 字,大约阅读时间需要 3 分钟。

ARM920T = ARM9 core + MMU + Cache

MMU和Cache由CP15的相关寄存器来控制。

一、CP15协处理器

  在基于ARM的嵌入式系统中,对存储系统的管理通常是通过设置系统控制协处理器CP15来实现。

1.CP15可以包含16个32位寄存器,其编号由0~15:

其中C1、C7和C9是Cache相关设置;

C1、C2、C3、C8和C10是MMU相关设置。

C0:ID寄存器;包含有当前CPU的ID代码和缓存类型,可以通过读取ID值、判断当前CPU的型号。

C1:控制;ARM的控制寄存器,控制MMU和Cache。

C2:置换表;页表基址寄存器TTB(Translation Table Base),存放页表的基址,MMU会自动去该寄存器中取出基址做VA地址到MVA地址的映射。

C3:访问控制范围;域访问控制寄存器。

C4:保留位。

C5:默认状态。

C6:默认地址。

C7:Cache工作;缓存工作寄存器,用以管理指令缓存(I——Cache)和数据缓存(D——Cache)。

C8:TLB运行;TLB工作寄存器,用于管理指令TLB和数据TLB。

C9:Cache上锁。

C10:TLB上锁。

C11:保留位。

C12:保留位。

C13:FCSE PID;快速上下文切换寄存器,其内容为进程的PID,用于用户进程虚拟地址映射。

C14:保留位。

C15:芯片厂商自定义。

2.访问CP15寄存器的ARM指令如下,并且这些指令只能在ARM的特权模式下执行:

MCR:从ARM寄存器到CP15寄存器的数据传送指令

MCR {cond} p15, opcode_1, Rd, CRn, CRm {, opcode_2}

MRC:从CP15寄存器到ARM寄存器的数据传递指令

MRC {cond} p15, opcode_1, Rd, CRn, CRm {, opcode_2}

cond:条件执行条件码;当cond忽略时指令为无条件执行。

opcode_1:协处理器将执行操作的操作码;对于CP15来说,opcode_1永远为0。

Rd:目标通用ARM寄存器;不能是PC。

CRn:协处理器的操作目标寄存器,编号为C0~C15。

==================

CRm和opcode_2是指令选项,具体含义取决于不同寄存器。

CRm:附加的目标寄存器或源操作寄存器;用于区分同一编号的不同物理寄存器,一般为C0。

opcode_2:附件信息,用于区分同一编号的不同物理寄存器;一般为0。

转载地址:http://qrgai.baihongyu.com/

你可能感兴趣的文章
《Android系统学习》之bug定位
查看>>
《Linux内核编程》第七章:USB CORE与USB键鼠驱动
查看>>
《Android系统学习》之JAVA与C混合编程——JNI
查看>>
《C预处理》之#ifndef
查看>>
《Linux内核编程》第十三章:Linux对进程内存的二级页式管理
查看>>
ARM协处理器
查看>>
《miniOS分析》前言
查看>>
《Linux内核编程》第十四章:Linux驱动基础
查看>>
Linux平台下ARM-Linux交叉编译工具链
查看>>
Window平台下ADS自带ARMCC编译工具链
查看>>
micro2440/tiny6410使用JLINK直接烧录nand flash
查看>>
C编译器、连接器与可执行机器码文件
查看>>
android linker 浅析
查看>>
802.11 traffic id
查看>>
Android系统wifi分析-手动连接过程
查看>>
设置IP别名Shell脚本
查看>>
Source Insight 宏-单行注释
查看>>
levelDB源码分析-Arena
查看>>
levelDB源码分析-SSTable
查看>>
平滑升级Nginx的Shell脚本
查看>>