您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > ARM9嵌入式复习总结
ARM9嵌入式复习第一章1.嵌入式微处理器的分类。a)什么是嵌入式微处理器?1.嵌入式微处理器是嵌入式系统硬件层的核心,嵌入式微处理器将通用CPU中许多由板卡完成的任务集成到芯片内部,从而有利于系统设计趋于小型化、高效率和高可靠性。嵌入式微处理器大多工作在为特定用户群所专门设计的系统中。2.嵌入式微处理器的体系结构可以采用冯·诺依曼体系结构或哈佛体系结构,指令系统可以选用精简指令系统(ReducedInstructionSetComputer,RISC)和复杂指令集系统CISC(ComplexInstructionSetComputer,CISC)。b)嵌入式微处理器分类1.按照系列分:ARM系列、MIPS系列、PowerPC系列。2.按照指令复杂程度分:CISC和RISC两类2.微处理器划分:a)嵌入式微控制器b)嵌入式微处理器c)DSP处理器d)嵌入式片上系统e)多核处理器3.嵌入式操作系统(EOS)的特性EOS除具备了一般操作系统最基本的任务调度、同步机制、中断处理、文件处理等功能外,还具有如下特点:强实时性;支持开放性和可伸缩性的体系结构,具有可裁减性;提供统一的设备驱动接口;提供操作方便、简单、友好的图形GUI和图形界面;支持TCP/IP协议及其他协议,提供TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,提供强大的网络功能。第二章1.ARM7TDMI命名2.3级流水线与总线架构三级流水线:流水线使用3个阶段,因此指令分为3个阶段执行1.取指:从程序存储器中读取指令,放入流水线中2.译码:操作码和操作数被译码,决定执行什么功能,为下一个始终周期准备数据路径所需要的控制信号。3.执行:执行已译码的指令注:程序计数器(PC)指向被取指的指令,而不是指向正在执行的指令在正常操作的过程中,在执行一条指令的同时对下一条指令进行译码,并将第三条指令从存储器中取出3.ARM的两种状态与7种工作模式a)两种状态。i.ARM状态:32位,这种状态下执行的是字方式的ARM指令;ii.Thumb状态:16位,这种状态下执行半字方式的Thumb指令。注:两个状态之间的切换并不影响处理器模式或寄存器内容,可以使用BX指令切换两种状态.状态寄存器CPSR的T位反应了处理器运行不同指令的当前状态.b)7种工作模式。注:除用户模式外,其它模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。题目:ARM微处理器复位后,PC的地址通常是0x0,初始的工作模式是Supervisor4.ARM常用几个寄存器功能在ARM7TDMI处理器内部有37个用户可见的寄存器。31个通用32位寄存器,6个状态寄存器。a.堆栈寄存器(SP):R13,在ARM指令集当中,没有以特殊方式使用R13的指令或其它功能,只是习惯上都这样使用。但是在Thumb指令集中存在使用R13的指令。b.链接寄存器(LR):R14,在结构上有两个特殊功能:1.在每种模式下,模式自身的R14版本用于保存子程序返回地址;2.当发生异常时,将R14对应的异常模式版本设置为异常返回地址(有些异常有一个小的固定偏移量)。c.程序计数器(PC):R15,在ARM状态,位[1:0]为0,位[31:2]保存PC。在Thumb状态,位[0]为0,位[31:1]保存PC。对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8字节。d.程序状态寄存器(CPSR):R16,在所有处理器模式下都可以访问CPSR。每种异常模式都有一个程序状态保存寄存器(SPSR),在异常发生时,SPSR用于保存CPSR的状态。5.条件代码标志N运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;Z指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;C当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。当进行减法运算(包括CMP指令),并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变;V当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。附:控制位I、F中断控制位——控制允许和禁止中断T控制(标志)位——反映处理器的运行状态M控制位——决定了处理器的运行模式6.中断号、中断向量与优先级。(7种异常)7.存储器格式。a)ARM体系结构使用232个字节的单一、线性地址空间。将字节地址做为无符号数看待,范围为0~232-1b)对于字对齐的地址A,地址空间规则要求如下:●地址位于A的字由地址为A、A+1、A+2和A+3的字节组成;●地址位于A的半字由地址为A和A+1的字节组成;●地址位于A+2的半字由地址为A+2和A+3的字节组成;●地址位于A的字由地址为A和A+2的半字组成。注:这样并不能完全定义字,半字和字节之间的映射。存储器采用下列映射机制中的一种。大端存储:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中小端存储:低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节例如,假设一个32位字长的微处理器上定义一个int类型的常量a,其内存地址位于0x6000处,其值用十六进制表示为0x23456789。如图1.2.2(a)所示,如果按小端法存储,则其最低字节数据0x89存放在内存低地址0x6000处,最高字节数据0x23存放在内存高地址0x6003处。如图1.2.2(b)所示,如果按大端法存储,则其最高字节数据0x23存放在内存的低地址0x6000处,而最低字节数据0x89存放在内存的高地址0x6003处。第三章一:寻址方式。1.寄存器寻址操作数的值在寄存器中,指令中的地址码字段给出的是寄存器编号,寄存器的内容是操作数,指令执行时直接取出寄存器值操作。例如指令:MOVR1,R2;R1←R2SUBR0,R1,R2;R0←R1-R22.立即寻址在立即寻址指令中数据就包含在指令当中,立即寻址指令的操作码字段后面的地址码部分就是操作数本身,取出指令也就取出了可以立即使用的操作数(也称为立即数)。立即数要以“#”为前缀,表示16进制数值时以“0x”表示。SUBSR0,R0,#1;R0减1,结果放入R0,并且影响标志位MOVR0,#0xFF000;将立即数0xFF000装入R0寄存器3.寄存器移位寻址。寄存器移位寻址是ARM指令集特有的寻址方式。当第2个操作数是寄存器移位方式时,第2个寄存器操作数在与第1个操作数结合之前,选择进行移位操作。寄存器移位寻址指令举例如下:MOVR0,R2,LSL#3;R2的值左移3位,结果放入R0,即是R0=R2×8ANDSR1,R1,R2,LSLR3;R2的值左移R3位,然后和R1相“与”操作,结果放入R14.寄存器间接寻址寄存器间接寻址指令中的地址码给出的是一个通用寄存器的编号,所需的操作数保存在寄存器指定地址的存储单元中,即寄存器为操作数的地址指针。寄存器间接寻址指令举例如下:LDRR1,[R2];将R2指向的存储单元的数据读出保存在R1中SWPR1,R1,[R2];将寄存器R1的值和R2指定的存储单元的内容交换5.基址寻址基址寻址就是将基址寄存器的内容与指令中给出的偏移量相加,形成操作数的有效地址。基址寻址用于访问基址附近的存储单元,常用于查表、数组操作、功能部件寄存器访问等。基址寻址指令举例如下:LDRR2,[R3,#0x0C];读取R3+0x0C地址上的存储单元的内容,放入R2STRR1,[R0,#-4]!;先R0=R0-4,然后把R1的值寄存到保存到R0指定的存储单元6.多寄存器寻址多寄存器寻址一次可传送几个寄存器值,允许一条指令传送16个寄存器的任何子集或所有寄存器。多寄存器寻址指令举例如下:LDMIAR1!,{R2-R7,R12};将R1指向的单元中的数据读出到R2~R7、R12中(R1自动加1)STMIAR0!,{R2-R7,R12};将寄存器R2~R7、R12的值保存到R0指向的存储单元中R0自动加17.堆栈寻址堆栈是一个按特定顺序进行存取的存储区,操作顺序为“后进先出”。堆栈寻址是隐含的,它使用一个专门的寄存器(堆栈指针)指向一块存储区域(堆栈),指针所指向的存储单元即是堆栈的栈顶。存储器堆栈可分为两种:向上生长:向高地址方向生长,称为递增堆栈向下生长:向低地址方向生长,称为递减堆栈8.块拷贝寻址多寄存器传送指令用于将一块数据从存储器的某一位置拷贝到另一位置。如:STMIAR0!,{R1-R7};将R1~R7的数据保存到存储器中。;存储指针在保存第一个值之后增加,;增长方向为向上增长。STMIBR0!,{R1-R7};将R1~R7的数据保存到存储器中。;存储指针在保存第一个值之前增加,;增长方向为向上增长。9.相对寻址相对寻址是基址寻址的一种变通。由程序计数器PC提供基准地址,指令中的地址码字段作为偏移量,两者相加后得到的地址即为操作数的有效地址。相对寻址指令举例如下:BLSUBR1;调用到SUBR1子程序BEQLOOP;条件跳转到LOOP标号处...LOOPMOVR6,#1...SUBR1...二:指令集(LDRSTRMOVADDSUB)1.ARM指令集2.Thumb指令集3.常用指令a)LDR:加载字数据b)STR:存储字数据LDR/STR指令寻址非常灵活,它由两部分组成,其中一部分为一个基址寄存器,可以为任一个通用寄存器;另一部分为一个地址偏移量。地址偏移量有以下3种格式:立即数。立即数可以是一个无符号的数值。这个数据可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0,#0x12]寄存器。寄存器中的数值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0,R2]寄存器及移位常数。寄存器移位后的值可以加到基址寄存器,也可以从基址寄存器中减去这个数值。如:LDRR1,[R0,R2,LSL#2]从寻址方式的地址计算方法分,加载/存储指令有以下4种格式:零偏移。如:LDRRd,[Rn]前索引偏移。如:LDRRd,[Rn,#0x04]!程序相对偏移。如:LDRRd,labe1后索引偏移。如:LDRRd,[Rn],#0x04c)MOV:数据传送指令d)ADD:加法运算指令e)SUB:减法运算指令第四章一:最小系统一个嵌入式处理器自己是不能独立工作的,必须给它供电、加上时钟信号、提供复位信号,如果芯片没有片内程序存储器,则还要加上存储器系统,然后嵌入式处理器芯片才可能工作。这些提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成了这个嵌入式处理器的最小系统。而大多数基于ARM7处理器核的微控制器都有调试接口,这部分在芯片实际工作时不是必需的,但因为这部分在开发时很重要,所以也把这部分也归入最小系统中。二:时钟产生单元目前所有的微控制器均为时序电路,需要一个时钟信号才能工作,大多数微控制器具有晶体振荡器。简单的方法是利用微控制器内部的晶体振荡器,但有些场合(如减少功耗、需要严格同步等情况)需要使用外部振荡源提供时钟信号。三:I2C的概念与应用I2CBUS(InterIntegratedCircuitBUS,内部集成电路总线)是由Philips公司推出的二线制串行扩展总线,用于连接微控制器及其外围设备。I2C总线是具备总线仲裁和高低速设备同步等功能的高性能多主机总线,直接用导线连接设备,通信时无需片选信号。如图6.2.1所示,在I2C总线上,只需要两条线—串行数据SDA线和串行时钟SCL线,它们用于总线上器件之间的信息传递。SDA和SCL都是双向的。每个器件都有一个唯一的地址以供识别,而且各器件都可以作为一个发送器或接收器(由器件的功能决定)。2C总线有如下操作模式:主发送模式、主接收模式、从发送模式、从接收模式。下面介绍其通用传输过程、信号及数据格式。*数据有效:在传
本文标题:ARM9嵌入式复习总结
链接地址:https://www.777doc.com/doc-3293311 .html