当前位置:文档之家› ARM基础知识详解

ARM基础知识详解

复习问题提纲第一讲基础知识1.什么是嵌入式系统(IEEE定义和国内普遍认同的定义分别是什么)?IEEE(国际电气和电子工程师协会)对嵌入式系统的定义:“用于控制、监视或者辅助操作机器和设备的装置”国内普遍认同的嵌入式系统定义为:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。

更简单的讲:就是嵌入到对象体中的专用计算机系统。

三要素:嵌入、专用、计算机嵌入性:嵌入到对象体系中,有对象环境要求专用性:软、硬件按对象要求裁减计算机:实现对象的智能化功能2.嵌入式系统的特点?1、专用软、硬件可剪裁可配置;2、低功耗、高可靠性、高稳定性;3、软件代码短小精悍;4、代码可固化;5、实时性;6、弱交互性7、嵌入式系统软件开发通常需要专门的开发工具和开发环境;8、要求开发、设计人员有较高的技能。

3.嵌入式系统的组成?嵌入式系统总体上是由硬件和软件组成的,硬件是其基础,软件是其核心和灵魂。

第二讲ARM技术概述(以下指的arm处理器都是指ARM920T)1.arm处理器是32位架构,它支持的基本数据类有哪3个(提示:字节、?、?)?(1)Byte:字节,8bit (2)Halfword:半字,16bit(半字必须与2字节边界对齐)(3)word:字,32bit(字必须与4字节边界对齐)2.什么是存储大小端模式?所谓的大端模式,是指高位字节存放在低地址单元中,而低位字节存放在高地址单元中。

所谓的小端模式,是指低位字节存放在低地址单元中,而高位字节存放在高地址单元中。

3.arm 处理器有哪7种工作模式,每种工作模式下通用工作寄存器有多少个、作用是什么、各个模式间哪些模式下有自己专有的寄存器,哪些寄存器是各个模式彼此公用的,哪些寄存器一般有固定的用途是什么?哪两种模式寄存器完全相同,哪种模式它的专有寄存器最多?(1)ARM微处理器支持7种运行模式,分别为:用户模式(usr):ARM处理器正常的程序执行状态。

(大部分任务执行时)快速中断模式(fiq):用于高速数据传输或通道处理。

(当高优先级中断产生时)外部中断模式(irq):用于通用的中断处理。

(当低优先级中断产生时)特权模式(svc):操作系统使用的保护模式。

(当复位或软中断指令执行时)数据访问中止模式(abt):可用于虚拟存储及存储保护。

(当存取异常时)未定义指令中止模式(und):可用于支持硬件协处理器的软件仿真。

(当未定义的指令执行时)系统模式(sys):运行具有特权的操作系统任务。

(和User模式相同寄存器集的模式)(ARM处理器共有37个寄存器,被分为若干个组(BANK),(2)每种工作模式下通用工作寄存器有:(共15个)这些寄存器包括30个通用寄存器和6个状态寄存器,1个程序计数器(PC指针)及所有寄存器(均为32位)。

未分组寄存器:包括R0~R7。

分组寄存器:包括R8~R14(3) 未分组寄存器(R0-R7)指的都是同一个物理寄存器,但是在异常中断切换时,由于使用相同的物理寄存器,所以和容易使寄存器中的数据被破坏。

对于分组寄存器(R8~R14),他们每一次所访问的物理寄存器与处理器当前的运行模式有关,除FIQ模式外其他寄存器是公用的(R0-R12)。

分组寄存器R13和R14来说,每个寄存器对应6个不同的物理寄存器。

其中的一个是用户模式和系统模式公用的,而另外5个分别用于5种异常模式。

R15用作程序计数器(PC),用来保存读取指令的地址。

(4)R13,R14,CPSR是各个模式专有的,FIQ模式除此之外还有R8-R12.(5)R0~R7是所用模式公用的;R8~R12对于快速中断FIQ模式之外的其他模式都是公用的,而FIQ模式另外有一套自己寄存器R8_fiq~R12_fiq,FIQ处理程序在保存和恢复现场时可以少保存和恢复几个寄存器(R8-R12),从而提高中断处理迅速(6)R13通常用作栈指针寄存器(SP),每一种模式有自己的R13,所以允许每一种异常都有自己的栈指针。

R14用作连接或返回地址寄存器(LR),每一种模式有自己的 R14。

R15用作程序计数器(PC),用来保存读取指令的地址。

程序状态寄存器(CPSR)存储ARM微处理器当前的状态和模式标志。

备份状态寄存器(SPSR)异常模式下的CPSR的备份寄存器,当一个异常发生时保存当前的CPSR 值。

结合连接寄存器可使处理器返回先前的状态。

(7)用户模式(user)和系统模式(sys)寄存器完全相同且这两种模式不能由异常进入(8)快速中断(FIQ)模式最多4.arm处理器有哪2种工作状态,上电复位后进入的是什么状态?(1)第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令,对应ARM指令集;第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令,对应Thumb指令集。

(2)上电复位后,处于ARM状态5.理解流水线是如何提高处理器处理速度的,如假设某嵌入式处理器有3级流水线,每级流水线所耗时间均为为2ms,则执行25条指令需要耗费时间?流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术T=执行一条指令的时间+(指令的条数—1)*流水线周期 6+(25-1)*2=546.充分掌握arm处理器CPSR寄存器每一位的作用。

寄存器R16用作程序状态寄存器CPSR(Current Program Status Register,当前程序状态寄存器)。

在所有处理器模式下都可以访问CPSR。

CPSR包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。

每种异常模式都有一个程序状态保存寄存器SPSR(Saved Program Status Register)。

当异常出现SPSR用于保留CPSR的状态。

CPSR和SPSR的格式如下:(1)条件码标志N、Z、C、V(Negative、Zero、Carry、oVerflow)均为条件码标志位(Condition Code Flags),它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。

CPSR中的条件码标志可由大多数指令检测以决定指令是否执行。

在ARM状态下,绝大多数的指令都是有条件执行的。

在Thumb 状态下,仅有分支指令是有条件执行的。

通常条件码标志通过执行比较指令(CMN、CMP、TEQ、TST)、一些算术运算、逻辑运算和传送指令进行修改。

条件码标志的通常含义如下:N:如果结果是带符号二进制补码,那么,若结果为负数,则N=1;若结果为正数或0,则N=0。

Z:若指令的结果为0,则置1(通常表示比较的结果为“相等”),否则置0。

C:可用如下4种方法之一设置:加法(包括比较指令CMN)。

若加法产生进位(即无符号溢出),则C置1;否则置0。

减法(包括比较指令CMP)。

若减法产生借位(即无符号溢出),则C置0;否则置1。

对于结合移位操作的非加法/减法指令,C置为移出值的最后1位。

对于其他非加法/减法指令,C通常不改变。

V:可用如下两种方法设置,即对于加法或减法指令,当发生带符号溢出时,V置1,认为操作数和结果是补码形式的带符号整数。

对于非加法/减法指令,V通常不改变。

Q标志位:在带DSP指令扩展的ARM v5及更高版,bit[27]被指定用于指示增强的DAP指令是否发生了溢出,因此被称为Q标志位。

同样,在SPSR中bit[27]也被称为Q标志位,用于在异常中断发生时保存和恢复CPSR中的Q标志位(3)控制位程序状态寄存器PSR(Program Status Register)的最低8位I、F、T和M[4:0]用作控制位。

当异常出现时改变控制位。

处理器在特权模式下时也可由软件改变。

a.中断禁止位I:置1,则禁止IRQ中断;F:置1,则禁止FIQ中断。

b.T位T=0 指示ARM执行(即正在执行32位的ARM指令);T=1 指示Thumb执行(即正在执行16位的Thumb指令)。

c.模式控制位并非所有的模式位组合都能定义一种有效的处理器模式。

其他组合的结果不可预知。

(4)其他位程序状态寄存器的其他位保留,用做以后的扩展。

7.arm处理器有哪两个中断?快速中断(FIQ)和标准中断(IRQ)8.掌握s3c2410X单片机他的内核是什么处理器,该单片机有哪两类总线,两类总线分别挂接了哪些接口控制器?(1)S3c2410X单片机的内核ARM920T处理器;S3C2410处理器支持大/小端模式存储字数据,a)其寻址空间可达1GB,b)对于外部I/O设备的数据宽度c)可以是8/16/32位,d)所有的存储器Bank(共有8个)都具有可编程的操作周期,e)而且支持各种ROM引导方式(NOR/Nand Flash、EEPROM等)(2)两类总线分别为:AHB和APB;(3)AHB挂接了LCD、USB主控制、NAND Flash、中断控制、总线控制、内存APB挂接了串口、usb从设备、看门狗定时器、总线控制、SPI、I2C、I2S、GPIO、RTC、ADC、PWM定时器第三讲ARM指令系统1.掌握ARM处理器指令的几种寻址方式和分类,哪两类指令是专门用来访问内存的?哪类指令或伪指令会导致流水线情况(提示:那些会使PC值发生跳变的指令)(1)指令有七种寻址方式:1、立即寻址:ADD R0,R0,#1 ;R0←R0+1MOV R0,#0xff00 ;R0←0xff00在以上两条指令中,第二个源操作数即为立即数,要求以“#”为前缀,对于以十六进制表示的立即数,还要求在“#”后加上“0x”。

2、寄存器寻址:操作数放在寄存器当中,在指令当中只需要给出存放操作数寄存器的名字就可以了,这也是一种执行效率较高寻址方式。

举例:MOV R0,R1 ; R0←R1SUB R0,R1,R2 ;R0←R0-R23、寄存器间接寻址:寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。

ADD R0,R1,[R2] ;R0←R1+[R2]在第一条指令中,以寄存器R2的值作为操作数的地址,在存储器中取得一个操作数后与R1相加,结果存入寄存器R0中。

LDR R0,[R1] ; R0←[R1]第二条指令将以R1的值为地址的存储器中的数据传送到R0中。

4、基址变址寻址:基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。

变址寻址方式常用于访问某基地址附近的地址单元。

LDR R0,[R1,#4] ;R0←[R1+4]在第一条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中。

5、多寄存器寻址:6、相对寻址:7、堆栈寻址:0指令有六类:1、跳转指令 2、数据处理指令 3、程序状态寄存器(PSR)传输指令 4、加载/存储(load/store)指令 5、协处理指令 6、异常中断产生指令根据使用的指令类型不同,指令的寻址方式分为数据处理指令寻址方式和内存访问指令寻址方式。

相关主题