协处理器控制位详解cp15.docx

上传人:b****2 文档编号:2256546 上传时间:2023-05-03 格式:DOCX 页数:27 大小:309.78KB
下载 相关 举报
协处理器控制位详解cp15.docx_第1页
第1页 / 共27页
协处理器控制位详解cp15.docx_第2页
第2页 / 共27页
协处理器控制位详解cp15.docx_第3页
第3页 / 共27页
协处理器控制位详解cp15.docx_第4页
第4页 / 共27页
协处理器控制位详解cp15.docx_第5页
第5页 / 共27页
协处理器控制位详解cp15.docx_第6页
第6页 / 共27页
协处理器控制位详解cp15.docx_第7页
第7页 / 共27页
协处理器控制位详解cp15.docx_第8页
第8页 / 共27页
协处理器控制位详解cp15.docx_第9页
第9页 / 共27页
协处理器控制位详解cp15.docx_第10页
第10页 / 共27页
协处理器控制位详解cp15.docx_第11页
第11页 / 共27页
协处理器控制位详解cp15.docx_第12页
第12页 / 共27页
协处理器控制位详解cp15.docx_第13页
第13页 / 共27页
协处理器控制位详解cp15.docx_第14页
第14页 / 共27页
协处理器控制位详解cp15.docx_第15页
第15页 / 共27页
协处理器控制位详解cp15.docx_第16页
第16页 / 共27页
协处理器控制位详解cp15.docx_第17页
第17页 / 共27页
协处理器控制位详解cp15.docx_第18页
第18页 / 共27页
协处理器控制位详解cp15.docx_第19页
第19页 / 共27页
协处理器控制位详解cp15.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

协处理器控制位详解cp15.docx

《协处理器控制位详解cp15.docx》由会员分享,可在线阅读,更多相关《协处理器控制位详解cp15.docx(27页珍藏版)》请在冰点文库上搜索。

协处理器控制位详解cp15.docx

协处理器控制位详解cp15

在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。

CP15包含16个32位的寄存器,其编号为0~15。

访问CP15寄存器的指令

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

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

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

MCR指令

MCR指令将ARM处理器的寄存器中的数据传送到协处理器寄存器中。

如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。

指令语法格式

MCR{}

,,{,}

MCR{}p15,0,,,{,}

其中,为指令执行的条件码。

忽略时指令为无条件执行。

为协处理器将执行的操作的操作码。

对于CP15协处理器来说,永远为0b000,当不为0b000时,该指令操作结果不可预知。

作为源寄存器的ARM寄存器,其值将被传送到协处理器寄存器中。

作为目标寄存器的协处理器寄存器,其编号可能是C0,C1,…,C15。

两者组合决定对协处理器寄存器进行所需要的操作,如果没有指定,则将为为C0,opcode_2为0,否则可能导致不可预知的结果。

TheCRmfieldandopcode_2fieldareusedtospecifyaparticularactionwhenaddressingregisters.Theopcode_1,opcode_2andCRmfieldsshouldbezero,exceptwhenthevaluesspecifiedareusedtoselectthedesiredoperations,inallinstructionswhichaccessCP15.Usingothervalueswillresultinunpredictablebehavior.Attemptingtoreadfromanon-readableregister,orwritingtoanon-writableregisterwillcauseunpredictableresults.

使用示例

下面的指令从ARM寄存器R4中中将数据传送到协处理器CP15的寄存器C1中。

其中R4为ARM寄存器,存放源操作数,C1、C0为协处理器寄存器,为目标寄存器,opcode_1为0,opcode_2为0。

MCRp15,0,R4,C1,C0,0

MRC指令

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

指令语法格式

MRC{}

,,{,}

MRC{}p15,0,,,{,}

参数用法同MCR指令

CP15中的寄存器介绍

Register(寄存器)

Read

Write

C0

IDCode

(1)

Unpredictable

C0

Catchtype

(1)

Unpredictable

C1

Control

Control

C2

Translationtablebase

Translationtablebase

C3

Domainaccesscontrol

Domainaccesscontrol

C4

Unpredictable

Unpredictable

C5

Faultstatus

(2)

Faultstatus

(2)

C6

Faultaddress

Faultaddress

C7

Unpredictable

Cacheoperations

C8

Unpredictable

TLBoperations

C9

Cachelockdown

(2)

Cachelockdown

(2)

C10

TLBlockdown

(2)

TLBlockdown

(2)

C11

Unpredictable

Unpredictable

C12

Unpredictable

Unpredictable

C13

ProcessID

ProcessID

C14

Unpredictable

Unpredictable

C15

Testconfiguration

Testconfiguration

Notes:

1.Registerlocation0providesaccesstomorethanoneregister.Theregisteraccesseddependsuponvaluesoftheopcode_2field.Seetheregisterdescriptionfordetails.

2.Separateregisterforinstructionanddata.Seetheregisterdescriptionfordetails.

寄存器0:

IDCodeRegister(0)

Thisisaread-onlyregisterwhichreturnsa32-bitdeviceIDcode

这是一个只读寄存器,它存放微处理器的标识码。

TheIDcoderegisterisaccessedbyreadingCP15register0withtheopcode_2fieldsettoanyvalueotherthan1(theCRmfieldshouldbezerowhenreading).Forexample:

MRCp15,0,Rd,C0,C0,0

IDCode内容如下:

Registerbits

Function

Value

[31:

24]

Implementor

0x41(‘A’,表示Arm公司)

[23:

20]

Specificationrevision

0x1

[19:

16]

Architectureversion(4T)

0x2(ARM体系版本4T)

[15:

4]

Partnumber

0x920

[3:

0]

Layoutrevision

0x0

寄存器0:

Cachetyperegister

(1)

Thisisaread-onlyregisterwhichcontainsinformationaboutthesizeandarchitectureofthecaches,allowingoperatingsystemstoestablishhowtoperformsuchoperationsascachecleaningandlockdown.

这个只读寄存器包含了高速缓存的大小和类型。

ThecachetyperegisterisaccessedbyreadingCP15register0withtheopcode_2fieldsetto1.forexample:

MRCp15,0,Rd,C0,C0,1;returnscachedetails

Theformatofcachetyperegister(寄存器的数据格式如下)

Registerbits

Function

Value

[31:

29]

Reserved

000

[28:

25]

Cachetype(缓存类型)

0110

[24]

Harvard/Unified

1(definesHarvardcache)

[23:

21]

Reserved

000

[20:

18]

DataCachesize(数据缓存大小)

101(defines16KB)

[17:

15]

DataCacheassociativity

110(defines64way)

[14]

Reserved

0

[13:

12]

DataCachewordsperline

10(defines8wordsperline)

[11:

9]

Reserved

000

[8:

6]

InstructionCachesize(指令缓存大小)

101(defines16KB)

[5:

3]

InstructionCacheAssociativity

110(defines64way)

[2]

Reserved

0

[1:

0]

InstructionCacheperline

10(defines8wordsperline)

寄存器1:

Controlregister

对该寄存器读写指令如下:

MRCp15,0,Rd,c1,c0,0;readcontrolregister

MCRp15,0,Rd,c1,c0,0;writecontrolregister

该寄存器功能如下表

Registebits

Name

Function

Value

31

iAbit

Asynchronousclockselect

见时钟模式表

30

nFbit

notFastBusselect

见时钟模式表

29:

15

-

Reserved

Read=Unpredictable

Write=shouldbezero

14

RRbit

Roundrobinreplacement

0=Randomreplacement

1=Roundrobinreplacement

13

Vbit

Baselocationofexceptionregister(异常寄存器基地址)

0=Lowaddress=0x00000000

1=Highaddress=0xFFFF0000

12

Ibit

Instructioncacheenable

0=Instructioncachedisable

1=Instructioncacheenable

11:

10

-

Reserved

Read=00

Write=00

9

Rbit

ROMprotection

见图1

8

Sbit

Systemprotection

见图1

7

Bbit

Big-endian/little-endian

0=Little-endianoperation

1=Big-endianoperation

6:

3

-

Reserved

Read=1111

Write=1111

2

Cbit

Datacacheenable

0=datacachedisable

1=datacacheenable

1

Abit

Alignmentfaultenable

Dataaddressalignmentfaultchecking

(地址对齐检查)

0=禁用地址对齐检查功能

1=使能地址对齐检查功能

0

Mbit

MMUenable

0=MMUdisable

1=MMUenable

时钟模式表

Clockingmode(时钟模式)

iA

nF

Fastbusmode(快速总线模式)

0

0

Reserved

1

0

Synchronous(同步模式)

0

1

Asynchronous(异步模式)

1

1

寄存器2:

TranslationTableBase(TTB)Register

Registerbits

Function

31:

14

Pointertofirstleveltranslationtablebase.Read/write

13:

0

Reserved

Read=Unpredictable

Write=Shouldbezero

访问C2寄存器指令如下:

MRCp15,0,Rd,C2,C0,0;ReadTTBregister

MCRp15,0,Rd,C2,C0,0;WriteTTBregister

该寄存器存放第一级转换表基地址。

写入时,位[13:

0]必须为0,读出时,位[13:

0]的值不可预知。

 

寄存器3:

DomainAccessControlRegister

寄存器3是可读写的域访问控制寄存器,分为16组,每组占用2个位

访问该寄存器的指令如下:

MRCp15,0,Rd,C3,C0,0;Readdomain15:

0accesspermissions

MCRp15,0,Rd,C3,C0,0;Readdomain15:

0accesspermissions

InterpretingAccessControlBitsinDomainAccessControlRegister

寄存器4:

保留

对该寄存器的读写会产生不可预料的结果。

寄存器5:

FaultStatusRegister

寄存器6:

FaultAddressRegister

寄存器7:

CacheOperations

该寄存器是只写寄存器,用于管理指令缓存和数据缓存。

对该寄存器的写操作所实现的功能,是通过MCR指令中的opcode_2和CRm两者的组合来选择的,具体组合如下。

寄存器8:

TLBOperations

Register8isawrite-onlyregisterusedtomanagethetranslationlookasidebuffer(TLBs),theinstructionTLBandthedataTLB.

FiveTLBoperationsaredefinedandthefunctiontobeperformedisselectedbytheopcode_2andCRmfieldsintheMCRinstructionusedtowriteCP15register8.Writingotheropcode_2orCRmvaluesidunpredictable.ReadingfromCP15register8isunpredictable.

Function

Data

instruction

InvalidateTLB(s)

SBZ

MCRp15,0,Rd,c8,c7,0

InvalidateITLB

SBZ

MCRp15,0,Rd,c8,c5,0

InvalidateITLBsingleentry(usingMVA)

MVAformat

MCRp15,0,Rd,c8,c5,1

InvalidateDTLB

SBZ

MCRp15,0,Rd,c8,c6,0

InvalidateDTLBsingleentry(usingMVA)

MVAformat

MCRp15,0,Rd,c8,c6,1

以下是MMU的初始化实例:

ARM访问CP15寄存器的指令(中文版详解)

访问CP15寄存器指令的编码格式及语法说明如下:

3128

2724

2321

20

1916

1512

118

75

4

30

cond

1110

opcode_1

L

crn

rd

1111

opcode_2

1

crm

说明:

协处理器行为操作码,对于CP15来说,永远为0b000,否则结果未知。

不能是r15/pc,否则,结果未知。

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

附加的目标寄存器或源操作数寄存器,如果不需要设置附加信息,将crm设置为c0,否则结果未知。

提供附加信息比如寄存器的版本号或者访问类型,用于区分同一个编号的不同物理寄存器,可以省略或者将其设置为0,否则结果未知。

指令

说明

语法格式

mcr

将ARM处理器的寄存器中的数据写到CP15中的寄存器中

mcr{}p15,,,,,{}

mrc

将CP15中的寄存器中的数据读到ARM处理器的寄存器中

mcr{}p15,,,,,{}

4.1.2CP15寄存器介绍

CP15的寄存器列表如表4-1所示。

表4-1ARM处理器中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

因不同设计而异

因不同设计而异

因不同设计而异

∙CP15的寄存器C0

CP15中寄存器C0对应两个标识符寄存器,由访问CP15中的寄存器指令中的指定要访问哪个具体物理寄存器,与两个标识符寄存器的对应关系如下所示:

opcode_2编码

对应的标识符号寄存器

0b000

主标识符寄存器

0b001

cache类型标识符寄存器

其他

保留

1)主标识符寄存器

访问主标识符寄存器的指令格式如下所示:

mrcp15,0,r0,c0,c0,0;将主标识符寄存器C0,0的值读到r0中

ARM不同版本体系处理器中主标识符寄存器的编码格式说明如下。

ARM7之后处理器的主标识符寄存器编码格式如下所示:

31242320191615430

由生产商确定

产品子编号

ARM体系版本号

产品主编号

处理器版本号

说明

位[3:

0]

生产商定义的处理器版本号

位[15:

4]

生产商定义的产品主编号,其中最高4位即位[15:

12]可能的取值为0~7但不能是0或7

位[19:

16]

ARM体系的版本号,可能的取值如下:

0x1ARM体系版本4

0x2ARM体系版本4T

0x3ARM体系版本5

0x4ARM体系版本5T

0x5ARM体系版本5TE

其他由ARM公司保留将来使用

位[23:

20]

生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等

位[31:

24]

生产厂商的编号,现在已经定义的有以下值:

0x41=AARM公司

0x44=DDigitalEquipment公司

0x69=Iintel公司

ARM7处理器的主标识符寄存器编码格式如下所示:

312423221615430

由生产商确定

A

产品子编号

产品主编号

处理器版本号

说明

位[3:

0]

生产商定义的处理器版本号

位[15:

4]

生产商定义的产品主编号,其中最高4位即位[15:

12]的值为0x7

位[22:

16]

生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等

续表

说明

位[23]

ARM7支持下面两种ARM体系的版本号:

0x0ARM体系版本3

0x1ARM体系版本4T

位[31:

24]

生产厂商的编号,现在已经定义的有以下值:

0x41=AARM公司

0x44=DDigitalEquipment公司

0x69=IIntel公司

ARM7之前处理器的主标识符寄存器编码格式如下所示:

312423221615430

由生产商确定

A

产品子编号

产品主编号

处理器版本号

说明

位[3:

0]

生产商定义的处理器版本号

位[15:

4]

生产商定义的产品主编号,其中最高4位即为[15:

12]的值为0x7

位[22:

16]

生产商定义的产品子编号,当产品主编号相同时,使用子编号来区分不同的产品子类,如产品中不同的高速缓存的大小等

位[23]

ARM7支持下面两种ARM体系的版本号:

0x0ARM体系版本3

0x1ARM体系版本4T

位[31:

24]

生产厂商的编号,现在已经定义的有以下值:

0x41=AARM公司

0x44=DDigitalEquipment公司

0x69=Iintel公司

2)cache类型标识符寄存器

访问cache类型标识符寄存器的指令格式如下所示:

mrcp15,0,r0,c0,c0,1;将cache类型标识符寄存器C0,1的值读到r0中

ARM处理器中cache类型标识符寄存器的编码格式如下所示:

31292825242312110

000

属性字段

S

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2