Chinaunix首页 | 论坛 | 博客
  • 博客访问: 353542
  • 博文数量: 90
  • 博客积分: 2017
  • 博客等级: 大尉
  • 技术积分: 615
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-19 08:10
文章分类

全部博文(90)

文章存档

2012年(4)

2011年(74)

2010年(11)

2009年(1)

分类: 嵌入式

2011-05-19 21:31:06

Andrew Huang

关于MMU编程,有几个是要经常查阅的资料。这里我把它整理成一篇文档,因此篇幅太长,节选发上来,全部内容放在附件的PDF当中。

  这个文档主要有三个内容
   一.协议处器CP15 中寄存器的全部说明.
   二.ARM 协处理指令
   三.CP15命令列表

一.协议处器CP15 中寄存器说明
---------------------------------------------------------------------------

引自 http://blog.csdn.net/genglei1022/archive/2010/07/05/5712843.aspx


寄存器编号

基本作用

 MMU 中的作用

 PU 中的作用

0

ID 编码(只读)

ID 编码和 cache 类型

 

1

控 制位(可读写)

各 种控制位

 

2

存 储保护和控制

地 址转换表基地址

Cachability 的控制位

3

存 储保护和控制

域 访问控制位

Bufferablity 控制位

4

存 储保护和控制

保 留

保 留

5

存 储保护和控制

内 存失效状态

访 问权限控制位

6

存 储保护和控制

内 存失效地址

保 护区域控制

7

高 速缓存和写缓存

高 速缓存和写缓存控制

 

8

存 储保护和控制

TLB 控制

保 留

9

高 速缓存和写缓存

高 速缓存锁定

 

10

存 储保护和控制

TLB 锁定

保 留

11

保 留

 

 

12

保 留

 

 

13

进 程标识符

进 程标识符

 

14

保 留

 

 

15

因 不同设计而异

因 不同设计而异

因 不同设计而异



二. ARM协处理器指令

----------------------------------------------------------------------------


引自http://blog.csdn.net/aaaaatiger/archive/2007/09/02/1769470.aspx

 

ARM 微处理器可支持多达 16 个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指令,忽略 ARM 处理器和其他协处理器的指令。

ARM 的协处理器指令主要用于 ARM 处理器初始化 ARM 协处理器的数据处理操作,以及在ARM 处理器的寄存器和协处理器的寄存器之间传送数据,和在 ARM协处理器的寄存器和之间传送数据。 ARM 协处理器指令包括以下 5 条:

  • — CDP 协处理器数操作指令
  • — LDC 协处理器数据加载指令
  • — STC 协处理器数据存储指令
  • — MCR ARM 处理器寄存器到协处理器寄存器的数据传送指令
  • — MRC 协处理器寄存器到ARM 处理器寄存器的数据传送指令
  •  

1CDP 指令

CDP 指令的格式为:

CDP{条件协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理

器操作码2

CDP 指令用于ARM 处理器通知ARM 协处理器执行特定的操作,若协处理器不能成功完成特定的操作,则产生未定义指令异常。其中协处理器操作码和协处理器操作码为协处理器将要执行的操作,目的寄存器和源寄存器均为协处理器的寄存器,指令不涉及ARM 处理器的寄存器和存储器。

指令示例:

CDP P3  2  C12  C10  C3  4 ;该指令完成协处理器 P3 的初始化

2LDC 指令

LDC 指令的格式为:

LDC{条件}{L} 协处理器编码,目的寄存器,[源寄存器]

LDC 指令用于将源寄存器所指向的存储器中的字数据传送到目的寄存器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。其中,{L}选项表示指令为长读取操作,如用于双精度数据的传输。

指令示例:

LDC P3  C4  [R0] ;将 ARM 处理器的寄存器 R0 所指向的存储器中的字数据传送到协处理器 P3 的寄存器 C4 中。

3STC 指令

STC 指令的格式为:

STC{条件}{L} 协处理器编码,源寄存器,[目的寄存器]

STC 指令用于将源寄存器中的字数据传送到目的寄存器所指向的存储器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。其中,{L}选项表示指令为长读取操作,如用于双精度数据的传输。

指令示例:

STC P3  C4  [R0] ;将协处理器 P3 的寄存器 C4 中的字数据传送到 ARM 处理器的寄存器R0 所指向的存储器中。

4MCR 指令

MCR 指令的格式为:

MCR{条件协处理器编码,协处理器操作码1,源寄存器,目的寄存器1,目的寄存器2,协处

理器操作码2

MCR 指令用于将ARM 处理器寄存器中的数据传送到协处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码和协处理器操作码为协处理器将要执行的操作,源寄存器为ARM 处理器的寄存器,目的寄存器和目的寄存器均为协处理器的寄存器。

指令示例:

MCR P3  3  R0  C4  C5  6 ;该指令将 ARM 处理器寄存器 R0 中的数据传送到协处理器 P3 的寄存器 C4  C5 中。

5MRC 指令

MRC 指令的格式为:

MRC{条件协处理器编码,协处理器操作码1,目的寄存器,源寄存器1,源寄存器2,协处理

器操作码2

MRC 指令用于将协处理器寄存器中的数据传送到ARM 处理器寄存器中,若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码和协处理器操作码为协处理器将要执行的操作,目的寄存器为ARM 处理器的寄存器,源寄存器和源寄存器均为协处理器的寄存器。

指令示例:

MRC P3  3  R0  C4  C5  6 ;该指令将协处理器 P3 的寄存器中的数据传送到 ARM 处理器寄存器中.

二. 协处理器指令命令列表

-------------------------------------------------------------

引自 http://www.iphonedevwiki.net/index.php/Coprocessors

Register allocation for Opcode 0

cN   ↓

cM   ↓

opcode2   ↓

Register   ↓

Readable (mrc)   ↓

Writable (mcr)   ↓

Comments   ↓

c0

c0

0

Main ID

Privileged

No

Contains vendor, architecture, part number, etc.[2]

c0

c0

1

Cache type

Privileged

No

Size and architecture of cache.[3]

c0

c0

2

Tightly coupled memory (TCM) status

Privileged

No

 

c0

c0

3

Translation look-aside buffer (TLB) type

Privileged

No

 

c0

c0

5

Multiprocessor ID

Privileged

No

(Cortex only.)


阅读(2052) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~