




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ARM 协处理器指令ARM 微处理器可支持多达 16 个协处理器,用于各种协处理操作,在程序执行的过程中,每个协处理器只执行针对自身的协处理指令,忽略 ARM 处理器和其他协处理器的指令。ARM 的协处理器指令主要用于 ARM 处理器初始化 ARM 协处理器的数据处理操作,以及在ARM 处理器的寄存器和协处理器的寄存器之间传送数据,和在 ARM 协处理器的寄存器和存储器之间传送数据。 ARM 协处理器指令包括以下 5 条: CDP 协处理器数操作指令 LDC 协处理器数据加载指令 STC 协处理器数据存储指令 MCR ARM 处理器寄存器到协处理器寄存器的数据传送指令 MRC 协处理器寄存器到
2、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
3、条件L 协处理器编码, 目的寄存器,源寄存器LDC 指令用于将源寄存器所指向的存储器中的字数据传送到目的寄存器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。其中,L选项表示指令为长读取操作,如用于双精度数据的传输。指令示例:LDC P3 , C4 , R0 ;将 ARM 处理器的寄存器 R0 所指向的存储器中的字数据传送到协处理器 P3 的寄存器 C4 中。3、STC 指令STC 指令的格式为:STC条件L 协处理器编码, 源寄存器,目的寄存器STC 指令用于将源寄存器中的字数据传送到目的寄存器所指向的存储器中,若协处理器不能成功完成传送操作,则产生未定义指令异常。其中,L选项表示
4、指令为长读取操作,如用于双精度数据的传输。指令示例:STC P3 , C4 , R0 ;将协处理器 P3 的寄存器 C4 中的字数据传送到 ARM 处理器的寄存器R0 所指向的存储器中。4、MCR 指令MCR 指令的格式为:MCR条件 协处理器编码,协处理器操作码1,源寄存器,目的寄存器1,目的寄存器2,协处理器操作码2。MCR 指令用于将ARM 处理器寄存器中的数据传送到协处理器寄存器中, 若协处理器不能成功完成操作,则产生未定义指令异常。其中协处理器操作码1 和协处理器操作码2 为协处理器将要执行的操作,源寄存器为ARM 处理器的寄存器,目的寄存器1 和目的寄存器2 均为协处理器的寄存器。
5、指令示例: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 P
6、3 , 3 , R0 , C4 , C5 , 6 ;该指令将协处理器 P3 的寄存器中的数据传送到 ARM 处理器寄存器中.ARM920T 有两个具体协处理器:CP14和CP15CP14调试通信通道协处理器调试通信通道协处理器DCC(the Debug Communications Channel 提供了两个32bits 寄存器用于传送数据,还提供了6bits 通信数据控制寄存器控制寄存器中的两个位提供目标和主机调试器之间的同步握手。通信数据控制寄存器以下指令在 Rd 中返回控制寄存器的值:MRC p14, 0, Rd, c0, c0 此控制寄存器中的两个位提供目标和主机调试器之间的同步握手:
7、位 1(W 位) 从目标的角度表示通信数据写入寄存器是否空闲:W = 0 目标应用程序可以写入新数据。W = 1 主机调试器可以从写入寄存器中扫描出新数据。位 0(R 位) 从目标的角度表示通信数据读取寄存器中是否有新数据:R = 1 有新数据,目标应用程序可以读取。R = 0 主机调试器可以将新数据扫描到读取寄存器中。注意调试器不能利用协处理器 14 直接访问调试通信通道,因为这对调试器无意义。 但调试器可使用扫描链读写 DCC 寄存器。 DCC 数据和控制寄存器可映射到 EmbeddedICE 逻辑单元中的地址。 若要查看 EmbeddedICE 逻辑寄存器,请参阅您的调试器和调试目标的相
8、关文档。通信数据读取寄存器用于接收来自调试器的数据的 32 位宽寄存器。 以下指令在 Rd 中返回读取寄存器的值:MRC p14, 0, Rd, c1, c0通信数据写入寄存器用于向调试器发送数据的 32 位宽寄存器。 以下指令将 Rn 中的值写到写入寄存器中:MCR p14, 0, Rn, c1, c0注意有关访问 ARM10 和 ARM11 内核 DCC 寄存器的信息,请参阅相应的技术参考手册。 ARM9 之后的各处理器中,所用指令、状态位位置以及对状态位的解释都有所不同。目标到调试器的通信这是运行于 ARM 内核上的应用程序与运行于主机上的调试器之间的通信事件顺序:1. 目标应用程序检查
9、 DCC 写入寄存器是否空闲可用。 为此,目标应用程序使 用 MRC 指令读取调试通信通道控制寄存器,以检查 W 位是否已清除。2. 如果 W 位已清除,则通信数据写入寄存器已清空,应用程序对协处理器 14 使用 MCR 指令将字写入通信数据写入寄存器。 写入寄存器操作会自动设置W 位。如果 W 位已设置,则表明调试器尚未清空通信数据写入寄存器。此时,如果应用程序需要发送另一个字,它必须轮询 W 位,直到它已清除。3. 调试器通过扫描链 2 轮询通信数据控制寄存器。 如果调试器发现 W 位已设 置,则它可以读 DCC 数据寄存器,以读取应用程序发送的信息。 读取数据的进程会自动清除通信数据控制
10、寄存器中的 W 位。以下代码显示了这一过程AREA OutChannel, CODE, READONLYENTRYMOV r1,#3 ; Number of words to sendADR r2, outdata ; Address of data to sendpolloutMRC p14,0,r0,c0,c0 ; Read control registerTST r0, #2BNE pollout ; if W set, register still fullwriteLDR r3,r2,#4 ; Read word from outdata; into r3 and update th
11、e pointerMCR p14,0,r3,c1,c0 ; Write word from r3SUBS r1,r1,#1 ; Update counterBNE pollout ; Loop if more words to be writtenMOV r0, #0x18 ; Angel_SWIreason_ReportExceptionLDR r1, =0x20026 ; ADP_Stopped_ApplicationExitSVC 0x123456 ; ARM semihosting (formerly SWIoutdataDCB "Hello there!"END调
12、试器到目标的通信这是运行于主机上的调试器向运行于内核上的应用程序传输消息的事件顺序:1. 调试器轮询通信数据控制寄存器的 R 位。 如果 R 位已清除,则通信数据读 取寄存器已清空,可将数据写入此寄存器,以供目标应用程序读取。2. 调试器通过扫描链 2 将数据扫描到通信数据读取寄存器中。 此操作会自动 设置通信数据控制寄存器中的 R 位。3. 目标应用程序轮询通信数据控制寄存器中的 R 位。 如果该位已经设置,则 通信数据读取寄存器中已经有数据,应用程序可使用 MRC 指令从协处理器14 读取该数据。 同时,读取指令还会清除 R 位。以下显示的目标应用程序代码演示了这一过程AREA InCha
13、nnel, CODE, READONLYENTRYMOV r1,#3 ; Number of words to readLDR r2, =indata ; Address to store data readpollinMRC p14,0,r0,c0,c0 ; Read control registerTST r0, #1BEQ pollin ; If R bit clear then loopreadMRC p14,0,r3,c1,c0 ; read word into r3STR r3,r2,#4 ; Store to memory and; update pointerSUBS r1,r
14、1,#1 ; Update counterBNE pollin ; Loop if more words to readMOV r0, #0x18 ; Angel_SWIreason_ReportExceptionLDR r1, =0x20026 ; ADP_Stopped_ApplicationExitSVC 0x123456 ; ARM semihosting (formerly SWIAREA Storage, DATA, READWRITEindataDCB "Duffmessage#"ENDCP15系统控制协处理器CP15 系统控制协处理器 (the system
15、 control coprocessor )他通过协处理器指令MCR 和MRC 提供具体的寄存器来配置和控制caches 、MMU 、保护系统、配置时钟模式(在bootloader 时钟初始化用到)CP15的寄存器只能被MRC 和MCR (Move to Coprocessor from ARM Register )指令访问 MCRcond p15,MRCcond p15,Cond 是条件码,bit 20是L 位,表示该指令是读还是写,如果L=1就表示Load ,从外面读到CPU 核中,也就是mrc 指令,如果L=0就表示Store ,也就是mcr 指令。11:8这四个位是协处理器编号,CP1
16、5的编号是15,因此是4个1。CRn 是CP15寄存器编号,Rd 是CPU 核寄存器编号,各占4个位。对于CP15协处理器,规定opcode1应该为0,opcode2和CRm 是指令的选项,具体含义取决于不同的寄存器。CP15包括15个具体的寄存器如下: -R0:ID 号寄存器-R0:缓存类型寄存器-R1:控制寄存器-R2:转换表基址寄存器(Translation Table Base -TTB)-R3:域访问控制寄存器(Domain access control )-R4:保留-R5:异常状态寄存器(fault status -FSR)-R6:异常地址寄存器(fault address -F
17、AR)-R7:缓存操作寄存器-R8:TLB 操作寄存器-R9:缓存锁定寄存器-R10:TLB 锁定寄存器-R11-12&14:保留-R13:处理器ID-R15:测试配置寄存器 2-24要注意有2个R0,根据MCR 操作数的不同传送不同的值,这也一个只读寄存器-R0:ID 号寄存器 这是一个只读寄存器,返回一个32位的设备ID 号,具体功能参考ARM 各个系列型号的的CP15 Register 0说明.MRC p15, 0, , c0, c0, 0, 3-7 ;returns ID以下为ID Code 详细描叙(ARM926EJ-S; ARM920T Part Number 为0x920
18、,Architecture (ARMv4T 为0x2具体可参照ARM各型号. -R0:缓存类型寄存器(CACHE TYPE REGISTER),包含了caches 的信息。读这个寄存器的方式是通过设置协处理操作码为1.MRC p15, 0, , c0, c0, 1; returns cache details以下为CP15的一些应用示例U32 ARM_CP15_DeviceIDRead(voidU32 id;_asm MRC P15, 0, id, c0, c0; return id;void ARM_CP15_SetPageTableBase(P_U32 TableAddress_asm M
19、CR P15, 0, TableAddress, c2, c0, 0; void ARM_CP15_SetDomainAccessControl(U32 flags _asm MCR P15, 0, flags, c3, c0, 0; void ARM_CP15_ICacheFlush(unsigned long dummy;_asm MCR p15, 0, dummy, c7, c5, 0; void ARM_CP15_DCacheFlush(unsigned long dummy;_asm MCR p15, 0, dummy, c7, c6, 0; void ARM_CP15_CacheFlush(unsigned long dummy;_asm MCR p15, 0, dummy, c7, c7, 0; void ARM_CP15_TLBFlush(voidunsigned long dummy;_asm MCR P15, 0, dummy, c8, c7, 0; void ARM_CP15_ControlRegisterWrite(U32 flags _asm MCR P15, 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国吡啶硫酮锌粉市场销售模式与项目投资可行性报告
- 2025-2030中国半导体级异丙醇市场深度调查及发展趋势研究报告
- 2025-2030中国净水材料市场竞争格局与未来发展预测分析报告
- 2025-2030中国全氟聚醚油市场发展态势与未来供需平衡趋势预测报告
- 2025-2030中国光伏检测行业趋势预判与可持续发展建议报告
- 2025-2030中国保健枕头市场营销渠道与企业竞争力分析报告
- 2025-2030中国乙二醇(EG)市场前景预测及发展趋势预判报告
- 新闻专业考试试题及答案
- 重庆市忠县2023-2024学年六年级下学期科学期末试题(含答案)
- 镗工考试考试试题及答案
- 合规考试试题大全及答案
- 《胫骨平台骨折》课件
- 用药错误应急预案处理
- 胸痛健康知识讲座课件
- 瓷砖加工费协议合同
- 名创优品加盟合同协议
- GB 7718-2025食品安全国家标准预包装食品标签通则
- GB/T 45403-2025数字化供应链成熟度模型
- QGDW11337-2023输变电工程工程量清单计价规范
- 生活垃圾焚烧发电厂自动监测设备运行维护技术规范
- 病区安全管理工作
评论
0/150
提交评论