




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页ARM协处理器指令ARM微处理器可支持多达16个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指令,忽略ARM处理器和其他协处理器的指令。ARM的协处理器指令主要用于ARM处理器初始化ARM协处理器的数据处理操作,以及在ARM处理器的寄存器和协处理器的寄存器之间传送数据,和在ARM协处理器的寄存器和存储器之间传送数据。ARM协处理器指令包括以下5条:
CDP协处理器数操作指令LDC协处理器数据加载指令STC协处理器数据存储指令MCRARM处理器寄存器到协处理器寄存器的数据传送指令MRC协处理器寄存器到ARM处理器寄存器的数据传送指令
CP15系统控制协处理器
CP15—系统控制协处理器(thesystemcontrolcoprocessor)他通过协处理器指令MCR和MRC提供具体的寄存器来配置和控制caches、MMU、保护系统、配置时钟模式(在bootloader时钟初始化用到)
CP15的寄存器只能被MRC和MCR(MovetoCoprocessorfromARMRegister)指令访问一些要说明的内容,摘录见下::
Co-processorsTherearebetweenzeroandthreepossibleco-processors.MostdesktopARMsystemsdonothavelogicforexternalco-processors,sowemayeitherusethatwhichisbuiltintotheARMitself,oranemulatedco-processor.CP15isreservedontheARM3andlaterprocessorsforinternalconfiguration,asdescribedinthisdocument.CP0andCP1isusedbythefloatingpointsystem.Itmayeitherbeanexternalfloatingpointchip(asusedwiththeARM3),hardwarebuiltintotheprocessor(asintheARM7500FE),oratotallysoftware-basedemulation(aswiththeFPEmulatorthatweallknow).Hereisashortexerciseforyou:
10DIMcode%1620P%=code%30[OPT340CDPCP1,0,C0,C1,C2,050ADFSF0,F1,F360MOVPC,R1470]>RUN00008F78OPT300008F78EE010102CDPCP1,0,C0,C1,C200008F7CEE010102ADFSF0,F1,F200008F80E1A0F00EMOVPC,R14>Whatdoyounotice?:-)
WhentheARMexecutesaco-processorinstruction,oranundefinedinstruction,itwillofferittoanyco-processorswhichmaybepresentlyattached.Ifhardwareisavailabletoprocessthegiveninstruction,thenitisexpectedtodoso.Ifitisbusyatthetimetheinstructionisoffered,theARMwillwaitforit.Ifthereisnoco-processorcapableofexecutingtheinstruction,theARMwilltakeitsundefinedinstructiontrap,inwhichcasethefollowingwillhappen:
ThePSRandPCarebothsaved(themethoddiffersfor26bitand32bitARMs)SVCmode(26bit)/UNDmode(32bit)isentered,andtheIbitofthePSRissetTheinstructionataddresstfitted.TheFloatingPointEmulatorworksbydoingthis.Toreturn,simplypullthesavedPCandPSR(dependson26/32bit)andpushthemtothecurrentPCandPSR,likeMOVSPC,R14in26bitsystems.Thiswillpickupwiththeinstructionfollowingtheonewhichcausedthetrap.
Alloftheco-processorinstructionscanbeexecutedconditionally.PleasenotethattheconditionalsrelatetothestatusoftheARMprocessor,andnotthestatusofanyoftheco-processors.ThisisbecausetheARMalwaystriestheinstructionfirst,andoffersitaroundandmaybetakestheundefinedapplicationtrap,sotheconditionsareARMrelated.Tomakethisclearer:
10DIMcode%3220P%=code%30[OPT340FLTSF0,R050FLTSF1,R160FMLSF2,F0,F170FIXR0,F280MOVSPC,R1490]100INPUT"Firstnumber:"A%110INPUT"Secondnumber:"B%120PRINTUSR(code%)ThisprobablywontassemblewithoutanenhancedBASICassembler.Anyway,youmightthinktheARMwillhandovertothefloatingpointco-processortodothefourFPinstructions,thenhandbackafterwards.Ifyoudid,youwouldbeincorrect!
Whatactuallyisexecutedis:
MCRCP1,0,R0,C0,C0MCRCP1,0,R1,C1,C0CDPCP1,9,C2,C0,C1MRCCP1,0,R0,C0,C2Itisworthpointingoutthatobjasmspecifiesco-processorregistersusingtheCRnotation(ie,CR0-CR15),whichisfirstdefinedwiththeCNdirective.Itdoesnotappearasifdefaultco-processorinstructionsaredefinedinNickRobertsASM,thoughIveonlylookedintheinstructionsatthe"definedsymbols"section...DarrenSaltsExtBASICasmprovidestheregisternamesC0-C15torefertotheco-processors.Soifanyoftheseexamplesfailwhenyoutrytoassemblethem,pleasecheckwhatformatyourassemblerprovidestheseinstructions.
MRCTheinstructionMRCtransfersaco-processorregistertoanARMregister.Ittakestheform:MRCmaybeomitted,asitisintheexample,buttheotherpartsoftheMRCinstructionmustbesupplied.
MCRTheinstructionMCRtransfersanARMregistertoaco-processorregister.Ittakestheform:MCR,,,,,Theco-processorisfreetointerpretthefieldsasitdesires,butthestandardinterpretationisthatthecontentsoftheARMregisterarewrittentotheco-processorregisterusingtheoperationcodegiven,whichmaybefurthermodifiedbythesecondco-processorregisterand/orthesecondoperationcode.
在U-Boot中我们用到了c7和c8这两个协处理器,再来看看MCR的详细用法:
MCR指令:
MCR指令将ARM处理器的寄存器中的数据传送到协处理器寄存器中。如果协处理器不能成功地执行该操作,将产生未定义的指令异常中断。
指令语法格式:
MCR{},,,,{,}
MCR{}p15,0,,,{,}
其中
指令执行的条件码.当忽略时指令为无条件执行。
协处理器将执行的操作的操作码。对于CP15协处理器来说,永远为0b000,当不为0b000时,该指令操作结果不可预知。
作为源寄存器的ARM寄存器,其值将被传送到协处理器寄存器中
作为目标寄存器的协处理器寄存器,其编号可能是C0,C1,…,C15。
和两者组合决定对协处理器寄存器进行所需要的操作,如果没有指定,则将为为C0,opcode_2为0
mcrp15,0,r0,c7,c7,0/*flushv3/v4cache*/
可以看出,其中
rd为r0=0
CRn为C7
CRm为C7
对于这行代码的作用,以此按照语法,来一点点解释如下:
首先,mcr做的事情,其实很简单,就是“ARM处理器的寄存器中的数据传送到协处理器寄存器中”,
此处即是,将ARM的寄存器r0中的数据,此时r0=0,所以就是把0这个数据,传送到协处理器CP15中。
而对应就是写入到“”这个“目标寄存器的协处理器寄存器”,此处CRn为C7,即将0写入到寄存器7(Register7)中去。
而上面关于Register7的含义中也说了,“Anydatawrittentothislocationwillcausetheselectedcachetobeflushed”,即你往这个寄存器7中写入任何数据,都会导致对应的缓存被清空。而到底那个缓存被清空呢,即我们这行指令
mcrp15,0,r0,c7,c7,0
起了什么作用呢
那是由“和两者组合决定”的。
而此处CRm为C7,opcode_2为0,而对于C7和0的组合的作用,参见上面的那个表中Register7中的FlashI+D那一行,
当opcode_2为0,CRm为0111=7,就是我们要找的,其作用是“FlushI+D”,即清空指令缓存ICache和数据缓存DCache。
根据该表,同理,如果是opcode_2=0,而CRm=0101b=5,那么对应的就是去“FlushI”,即只清除指令缓存ICache了。
而对应的指令也就是
mcrp15,0,r0,c7,c5,0
此解释说此行代码的作用是,清理v3或v4的缓存
其中v4,我们很好理解,因为我们此处的CPU是ARM920T的核心,是属于ARMV4的,而为何又说,也可以清除v3的cache呢?
那是因为,本身这些寄存器位域的定义,都是向下兼容的,参见上面引用的内容,也写到了:
ARM710
Register7-IDCflush(writeonly)AnydatawrittentothislocationwillcausetheIDC(Instruction/Datacache)tobeflushed.
即,对于ARM7的话,你写同样的这行代码
mcrp15,0,r0,c7,c7,0
也还是向register7中写入了数据0,这也同样满足了其所说的“Anydatawrittentothislocati
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于优化公司业务的解决方案
- 嘉兴冷链物流公司
- 广州交通大学项目可行性研究报告
- 劳动合同法培训教程
- 三农村现代化建设路径研究
- 项目延期的情况说明报告
- 项目启动与实施方案详解
- 高级营养师练习卷附答案
- 农业信息化技术应用与智慧农业发展策略研究制定
- 市场调研报告总结表格-市场趋势总结分析
- 2024年07月上海兴业银行上海分行招考笔试历年参考题库附带答案详解
- 湖北日报传媒集团(湖北日报社)招聘笔试冲刺题2025
- 广东省茂名市2025届高三第二次调研数学试卷含解析
- 公司安全生产事故隐患内部报告奖励工作制度
- 开封市第二届职业技能大赛无人机装调检修项目技术文件(国赛项目)
- 【MOOC】人工智能与信息社会-北京大学 中国大学慕课MOOC答案
- 人美版六年级美术教案下册全册
- 第二十四章 流行性感冒课件
- 教育科学研究方法学习通超星期末考试答案章节答案2024年
- 蚂蚁集团在线素质测评题
- 美容师实习合同协议书范文
评论
0/150
提交评论