当前位置:首页 > 芯闻号 > 充电吧
[导读]关于MMU编程,有几个是要经常查阅的资料。这里我把它整理成一篇文档,因此篇幅太长,节选发上来,全部内容放在附件的PDF当中。  这个文档主要有三个内容    一.协议处器CP15 中寄存器的全部说明.

关于MMU编程,有几个是要经常查阅的资料。这里我把它整理成一篇文档,因此篇幅太长,节选发上来,全部内容放在附件的PDF当中。
  这个文档主要有三个内容    一.协议处器CP15 中寄存器的全部说明.    二.ARM 协处理指令    三.CP15命令列表
一.协议处器CP15 中寄存器说明 ---------------------------------------------------------------------------


寄存器编号

基本作用

在 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协处理器指令

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



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

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

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

1、CDP 指令

CDP 指令的格式为:

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

器操作码2。

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

指令示例:

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

2、LDC 指令

LDC 指令的格式为:

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

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

指令示例:

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

3、STC 指令

STC 指令的格式为:

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

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

指令示例:

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

4、MCR 指令

MCR 指令的格式为:

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

理器操作码2。

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

指令示例:

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

5、MRC 指令

MRC 指令的格式为:

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

器操作码2。

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

指令示例:

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

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

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


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.)


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭