ARM概述
ARM处理器是英国Acorn有限公司规划的低功耗本钱的第一款RISC微处理器。全称为Advanced RISC Machine。ARM处理器自身是32位规划,但也装备16位指令集,一般来讲比等价32位代码节约达35%,却能保存32位体系的一切优势。
ARM的Jazelle技能使Java加快得到比根据软件的Java虚拟机(JVM)高得多的功能,和平等的非Java加快核比较功耗下降80%。CPU功能上添加DSP指令集供给增强的16位和32位算术运算才能,提高了功能和灵敏性。ARM还供给两个前沿特性来辅佐带深嵌入处理器的高集成SoC器材的调试,它们是嵌入式ICE-RT逻辑和嵌入式盯梢宏核(ETMS)系列。
ARM处理器特色
1、体积小、低功耗、低本钱、高功能;
2、支撑Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器材;
3、很多运用寄存器,指令履行速度更快;
4、大多数数据操作都在寄存器中完结;
5、寻址方法灵敏简略,履行效率高;
6、指令长度固定。
ARM首要形式
处理器作业形式 阐明
用户形式(usr) ARM处理器正常的程序履行状况
体系形式(sys) 运转具有特权的操作体系使命
快中止形式(fiq) 支撑高速数据传输或通道处理
管理形式(svc) 操作体系维护形式
数据拜访停止形式(abt) 用于虚拟存储器及存储器维护
中止形式(irq) 用于通用的中止处理
未定义指令停止形式(und) 支撑硬件协处理器的软件仿真
除用户形式外,其他6种形式称为非用户形式或特权形式;用户形式和体系形式之外的5种形式称为反常形式。ARM处理器的运转形式能够经过软件改动,也能够经过外部中止或反常处理改动。
arm的协处理器有几个
ARM可支撑多达16个协处理器,首要的效果:ARM处理器初始化,ARM与协处理器的数据处理操作,ARM的寄存器与协处理器的寄存器之间传送数据,以及ARM协处理器的寄存器和存储器之间传送数据。共有5条:
-CDP协处理器数据操作指令
-LDC协处理器数据加载指令
-STC协处理器数据存储指令
-MCRARM的寄存器到协处理器的寄存器的数据传送
-MRC协处理器的寄存器到ARM的寄存器的数据传送
1、CDP指令
CDP指令的格局为:
CDP{条件}协处理器编码,协处理器操作码1,意图寄存器,源寄存器1,源寄存器2,协处理器操作码2。
CDP指令用于ARM处理器告诉ARM协处理器履行特定的操作,若协处理器不能成功完结特定的操作,则发生未定义指令反常。其间协处理器操作码1和协处理器操作码2为协处理器即将履行的操作,意图寄存器和源寄存器均为协处理器的寄存器,指令不触及ARM处理器的寄存器和存储器。
指令示例:
CDPP3,2,C12,C10,C3,4;该指令完结协处理器P3的初始化
2、LDC指令
LDC指令的格局为:
LDC{条件}{L}协处理器编码,意图寄存器,[源寄存器]
LDC指令用于将源寄存器所指向的存储器中的字数据传送到意图寄存器中,若协处理器不能成功完结传送操作,则发生未定义指令反常。其间,{L}选项标明指令为长读取操作,如用于双精度数据的传输。
指令示例:
LDCP3,C4,[R0];将ARM处理器的寄存器R0所指向的存储器中的字数据传送到协处理器P3的寄存器C4中。
3、STC指令
STC指令的格局为:
STC{条件}{L}协处理器编码,源寄存器,[意图寄存器]
STC指令用于将源寄存器中的字数据传送到意图寄存器所指向的存储器中,若协处理器不能成功完结传送操作,则发生未定义指令反常。其间,{L}选项标明指令为长读取操作,如用于双精度数据的传输。
指令示例:
STCP3,C4,[R0];将协处理器P3的寄存器C4中的字数据传送到ARM处理器的寄存器R0所指向的存储器中。
4、MCR指令
MCR指令的格局为:
MCR{条件}协处理器编码,协处理器操作码1,源寄存器,意图寄存器1,意图寄存器2,协处理器操作码2。
MCR指令用于将ARM处理器寄存器中的数据传送到协处理器寄存器中,若协处理器不能成功完结操作,则发生未定义指令反常。其间协处理器操作码1和协处理器操作码2为协处理器即将履行的操作,源寄存器为ARM处理器的寄存器,意图寄存器1和意图寄存器2均为协处理器的寄存器。
指令示例:
MCRP3,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均为协处理器的寄存器。
指令示例:
MRCP3,3,R0,C4,C5,6;该指令将协处理器P3的寄存器中的数据传送到ARM处理器寄存器中.
CP14调试通讯通道协处理器
调试通讯通道协处理器DCC(the Debug CommunicaTIonsChannel)供给了两个32bits寄存器用于传送数据,还供给了6bits通讯数据操控寄存器操控寄存器中的两个位供给方针和主机调试器之间的同步握手。
此操控寄存器中的两个位供给方针和主机调试器之间的同步握手:
位 1(W 位) 从方针的视点标明通讯数据写入寄存器是否闲暇:
W = 0 方针应用程序能够写入新数据。
W = 1 主机调试器能够从写入寄存器中扫描出新数据。
位 0(R 位) 从方针的视点标明通讯数据读取寄存器中是否有新数据:
R = 1 有新数据,方针应用程序能够读取。
R = 0 主机调试器能够将新数据扫描到读取寄存器中。
留意:
调试器不能运用协处理器 14 直接拜访调试通讯通道,由于这对调试器无意义。但调试器可运用扫描链读写 DCC 寄存器。 DCC 数据和操控寄存器可映射到 EmbeddedICE 逻辑单元中的地址。 若要查看EmbeddedICE 逻辑寄存器,请参阅您的调试器和调试方针的相关文档。
通讯数据读取寄存器
用于接纳来自调试器的数据的 32 位宽寄存器。 以下指令在 Rd 中返
回读取寄存器的值:
MRC p14, 0, Rd, c1, c0
通讯数据写入寄存器
用于向调试器发送数据的 32 位宽寄存器。 以下指令将 Rn 中的值写
到写入寄存器中:
MCR p14, 0, Rn, c1, c0
留意
有关拜访 ARM10 和 ARM11 内核 DCC寄存器的信息,请参阅相应的技能参考手册。 ARM9 之后的各处理器中,所用指令、状况位方位以及对状况位的解说都有所不同。
方针到调试器的通讯
这是运转于 ARM内核上的应用程序与运转于主机上的调试器之间的通讯事情次序:
1. 方针应用程序查看 DCC 写入寄存器是否闲暇可用。为此,方针应用程序运用 MRC 指令读取调试通讯通道操控寄存器,以查看 W 位是否已铲除。
2. 假如 W 位已铲除,则通讯数据写入寄存器已清空,应用程序对协处理器14,运用 MCR 指令将字写入通讯数据写入寄存器。 写入寄存器操作会主动设置W 位。假如 W位已设置,则标明调试器没有清空通讯数据写入寄存器。此刻,假如应用程序需求发送另一个字,它有必要轮询 W 位,直到它已铲除。
3. 调试器经过扫描链 2 轮询通讯数据操控寄存器。 假如调试器发现 W位已设置,则它能够读 DCC 数据寄存器,以读取应用程序发送的信息。 读取数据的进程会主动铲除通讯数据操控寄存器中的 W 位。
以下代码显现了这一进程
AREA OutChannel, CODE,READONLY
ENTRY
MOV r1,#3 ; Number of words to send
ADR r2, outdata ; Address ofdata to send
pollout
MRC p14,0,r0,c0,c0 ; Read controlregister
TST r0, #2
BNE pollout ; if W set, register sTIllfull
write
LDR r3,[r2],#4 ; Read word fromoutdata
; into r3 and update the pointer
MCR p14,0,r3,c1,c0 ; Write word fromr3
SUBS r1,r1,#1 ; Update counter
BNE pollout ; Loop if more words to bewritten
MOV r0, #0x18 ;Angel_SWIreason_ReportExcepTIon
LDR r1, =0x20026 ;ADP_Stopped_ApplicaTIonExit
SVC 0x123456 ; ARM semihosting(formerly SWI)
outdata
DCB “Hello there!”
END
调试器到方针的通讯