协处理器控制位详解cp15.docx
- 文档编号:25228800
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:27
- 大小:154.89KB
协处理器控制位详解cp15.docx
《协处理器控制位详解cp15.docx》由会员分享,可在线阅读,更多相关《协处理器控制位详解cp15.docx(27页珍藏版)》请在冰豆网上搜索。
协处理器控制位详解cp15
在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。
CP15包含16个32位的寄存器,其编号为0~15。
访问CP15寄存器的指令
MCRARM寄存器到协处理器寄存器的数据传送
MRC协处理器寄存器到ARM寄存器的数据传送
MCR指令和MRC指令只能在处理器模式为系统模式时执行,在用户模式下执行MCR指令和MRC指令将会触发未定义指令的异常中断。
MCR指令
MCR指令将ARM处理器的寄存器中的数据传送到协处理器寄存器中。
如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。
指令语法格式
MCR{ , MCR{ 其中, 当 对于CP15协处理器来说, 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{ 参数用法同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来说, 不能是r15/pc,否则,结果未知。 作为目标寄存器的协处理器寄存器,编号为C0~C15。 附加的目标寄存器或源操作数寄存器,如果不需要设置附加信息,将crm设置为c0,否则结果未知。 提供附加信息比如寄存器的版本号或者访问类型,用于区分同一个编号的不同物理寄存器,可以省略 指令 说明 语法格式 mcr 将ARM处理器的寄存器中的数据写到CP15中的寄存器中 mcr{ mrc 将CP15中的寄存器中的数据读到ARM处理器的寄存器中 mcr{ 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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 处理器 控制 详解 cp15