嵌入式考试复习资料_第1页
嵌入式考试复习资料_第2页
嵌入式考试复习资料_第3页
嵌入式考试复习资料_第4页
嵌入式考试复习资料_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PAGE PAGE 26一1.嵌入式系统定义“以应用为中心,以计算机技术为基础,软件硬件可裁剪,功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。”2.嵌入式系统与pc和单片机的区别嵌入式系统 PC机嵌入式系统一般是专用系统,而PC是通用计算平台嵌入式系统的资源比PC少得多嵌入式系统软件故障带来的后果比PC机大得多嵌入式系统一般采用实时操作系统嵌入式系统大都有成本、功耗的要求嵌入式系统得到多种微处理体系的支持嵌入式系统需要专用的开发工具嵌入式系统 单片机系统目前嵌入式系统的主流是以32位嵌入式微处理器为核心的硬件设计和基于实时操作系统(RTOS)的软件设计;单片机系统多为4位、8位、16

2、位机,不适合运行操作系统,难以完成复杂的运算及处理功能;嵌入式系统强调基于平台的设计、软硬件协同设计;单片机大多采用软硬件流水设计;嵌入式系统设计的核心是软件设计(占70%左右的工作量);单片机系统软硬件设计所占比例基本相同。3.实时系统的定义(软、硬)实时系统:如果逻辑和时序出现偏差将会引起严重后果的系统软实时系统:系统的宗旨是使各个任务运行得越快越好,并不要求限定某一任务必须在多长时间内完成(响应时间为数十秒)硬实时系统:各任务不仅要执行无误而且要做到准时(响应时间在ms或us级)二1. BSP的概念和特点BSP(板级支持包)是介于底层硬件和操作系统之间的软件层,它完成系统上电后最初的硬件

3、和软件初始化,并对底层硬件进行封装,使得操作系统不再面对具体的操作。BSP的特点:1)硬件相关性:因为嵌入式系统的硬件具有应用相关性,所以,作为高层软件与硬件之间的接口,BSP必须为操作系统提供操作和控制具体硬件的方法。2)操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,针对不同的操作系统具有特定的接口形式。2. SoC定义SoC 就是System on Chip ,SoC嵌入式系统微处理器就是一种电路系统。SoC是追求产品系统最大包容的集成器件,SOC最大的特点是成功实现了软硬件无缝结合,支持直接在处理器片内嵌入操作系统的代码模块。3.冯诺依曼体系结构/哈佛体系结构冯诺依曼体系的

4、特点:数据与指令都存储在同一存储空间中统一编址,指令和数据通过同一总线访问被大多数计算机所采用ARM7冯诺依曼体系缺点:取指令和存取数据要从同一个存储空间存取,经由同一总线传 输,因而它们无法重叠执行哈佛体系结构的特点: 程序与数据在不同存储空间;每个存储器独立编址、独立访问 使用程序和数据总线(两条独立的总线),使数据吞吐率提高一倍 适合于数字信号处理大多数DSP都是哈佛结构ARM9是哈佛结构由于取指令和存取数据分别经由不同的存储空间和不同的总线,使得各条指令可以重叠执行,这样,也就克服了数据流传输的瓶颈,提高了运算速度。4.CISC/RISCCISC:复杂指令集(Complex Instr

5、uction Set Computer)具有大量的指令和寻址方式8/2原则:80%的程序只使用20%的指令大多数程序只使用少量的指令就能够运行。RISC:精简指令集(Reduced Instruction Set Computer)在通道中只包含最有用的指令确保数据通道快速执行每一条指令使CPU硬件结构设计变得更为简单指令规整、对称、简单,指令小于100条,基本寻址方式只有23种单周期指令,便于流水操作大量的寄存器(不少于32个)类别CISCRISC指令系统指令数量很多较少,通常少于100执行时间有些指令执行时间很长,如整块的存储器内容复制;或将多个寄存器的内容复制到存贮器没有较长执行时间的指

6、令编码长度编码长度可变,1-15字节编码长度固定,通常为4个字节寻址方式寻址方式多样简单寻址操作可以对存储器和寄存器进行算术和逻辑操作只能对寄存器进行算术和逻辑操作,Load/Store体系结构编译难以用优化编译器生成高效的目标代码程序 采用优化编译技术,生成高效的目标代码程序 5.流水线流水线:在CPU中把一条指令分解成多个可单独处理的操作,使每个操作在一个专门的硬件站(stage)上执行,这样一条指令需要顺序地经过流水线中多个站的处理才能完成,但是前后相连的几条指令可以依次流入流水线中,在多个站间重叠执行,因此可以实现指令的并行处理。6.高速缓存Cache的设计思想:把在一段时间内、一定地

7、址范围中被频繁访问的信息集合,成批地从主存中读到一个能高速存取的小容量存储器中存放起来,供程序在这段时间内随时使用,从而减少或不再去访问速度较慢的主存,以加快程序的运行速度。7.IP核知识产权(IP) 电路或核是设计好并经过验证的集成电路功能单元。Soft Cores(“code”)(软核)HDL语言描述;灵活度高,可修改;与工艺独立,可根据具体的加工工艺重新综合;IP很难保护。Firm cores(“code+structure”)(固核)逻辑综合后的描述;与工艺相关。Hard cores(“physical”)(硬核)物理综合后的描述;准备流片;包含工艺相关的布局和时序信息;IP很容易保护

8、,但灵活性和可移植性差。多数的处理器和存储器IP核的商业模型(三种模式)1)设计者提供设计和工具的许可证DSP Group (Pine and Oak Cores), 3Soft, ARM。 提供包括HDL在内的模拟模型,工具或仿真器。使用者负责设计制造。2)核厂商设计并制造集成电路芯片:TI, Motorola, Lucent。VLSI, SSI, Cirrus, Adaptec。3)核厂商卖核, 负责为客户设计并制造芯片:LSI logic, TI, Lucent。8.嵌入式操作系统的分类和特点从应用领域来分面向信息家电的嵌入式操作系统面向智能手机的嵌入式操作系统,如SymbianOS、M

9、S Mobile OS、PalmOS、Embedded Linux等面向汽车电子的嵌入式操作系统 面向工业控制的嵌入式操作系统从实时性的角度来分实时嵌入式操作系统:具有强实时特点,如VxWorks、QNX、Nuclear、OSE、DeltaOS、各种ITRON OS等。非实时嵌入式操作系统:一般只具有弱实时特点,如WinCE、版本众多的嵌入式Linux、PalmOS等。从嵌入式系统的商业模式来分类商用型:功能稳定、可靠,有完善的技术支持和售后服务,开发费用+版税。开源型:开放源码,只收服务费,没有版税。 如Embedded linux,RTEMS,eCOS。嵌入式操作系统可以统称为应用在嵌入式

10、系统的操作系统,它具有一般操作系统的功能,同时具有嵌入式软件的特点,主要有:可固化存储;可配置、可剪裁;独立的板级支持包,可修改;不同的CPU有不同的版本;应用的开发需要有集成的交叉开发工具9.可重入函数可以被一个以上的任务调用,而不必担心数据的破坏。可重入型函数任何时候都可以被中断,一段时间以后又可以运行,而相应数据不会丢失。可重入型函数只使用局部变量,即变量保存在CPU寄存器或堆栈中。一个可重入型函数的例子Void swap (int *x,int*y)int Temp;Temp=*x;*X=*Y;*y=Temp;一个不可重入型函数的例子int Temp;Void swap (int *x

11、,int*y)Temp=*x;*X=*Y;*y=Temp;三1.交叉开发环境交叉开发环境由宿主机和目标机组成,宿主机与目标机之间在物理连接的基础上建立起逻辑连接。交叉开发环境是指用于嵌入式软件开发的所有工具软件的集合,一般包括:1)文本编辑器2)交叉编译器3)交叉调试器4)仿真器5)下载器等2.嵌入式系统的调试方法1)模拟调试(Simulator)调试工具和待调试的嵌入式软件都在主机上运行,由主机提供一个模拟的目标运行环境,可以进行语法和逻辑上的调试。优点:简单方便,不需要目标板,成本低缺点:功能非常有限,无法实时调试大多数调试工具都提供Simulator功能2)软件调试(Debugger)主

12、机和目标板通过某种接口(通常是串口)连接,主机上提供调试界面,待调试软件下载到目标板上运行。这种方式的先决条件是要在Host和Target之间建立起通信联系(目标板上称为监控程序Monitor或Angel)优点:纯软件,价格较低,简单,软件调试能力较强缺点:需要事先烧制Monitor(往往需多次试验才能成功)且目标板工作正常,功能有限,特别是硬件调试能力较差。3)BDM/JTAG调试(BDM/JTAG Debugger)要求有一个硬件调试体。该硬件调试体与目标板通过BDM、JTAG等调试接口相连,与主机通过串口、并口、网口或USB口相连。待调试软件通过BDM/JTAG调试器下载到目标板上运行。

13、优点:方便、简单,无须制作Monitor,软硬件均可调试缺点:需要目标板,且目标板工作基本正常(至少MCU工作正常),仅适用于有调试接口的芯片4)全仿真调试(Emulator)用仿真器完全取代目标板上的MCU,因而目标系统对开发者来说完全是透明的、可控的。仿真器与目标板通过仿真头连接,与主机有串口、并口、网口或USB口等连接方式。由于仿真器自成体系,调试时既可以连接目标板,也可以不连接目标板(Stand alone)。优点:功能非常强大,软硬件均可做到完全实时在线调试 缺点:价格昂贵。3.链接文件的作用.ld文件:描述代码链接定位的有关信息,包括代码段,数据段,地址段等,链接器必须使用该文件对

14、整个系统的代码做正确的定位.map文件:防止软件调试过程中访问非法存储区时产生异常中断;.CS文件:通过一组命令序列来让集成环境自动完成一些特定的功能四1.ARM?ARM微处理器的特点ARM(Advanced RISC Machines)是英国知识产权核(IP)设计公司,既可以认为是一个公司的名字,也可以认为是对一类微处理器的统称,还可以认为是一种技术的名字。ARM 处理器共有37个寄存器,被分为若干个组,这些寄存器包括:31个通用寄存器,包括程序计数器(PC 指针),均为32位的寄存器;6个状态寄存器,用于标识CPU的工作状态及程序的运行状态,均为32位。ARM微处理器的特点:低功耗、低成本

15、、高性能1)采用RISC指令集采用RISC架构的ARM处理器一般具有如下特点:固定长度的指令格式,指令归整、简单,基本寻址方式有23种;使用单周期指令,便于流水线操作执行大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率。2)使用大量的寄存器:ARM 处理器共有37个寄存器,被分为若干个组,这些寄存器包括:31个通用寄存器,包括程序计数器(PC 指针),均为32位的寄存器;6个状态寄存器,用于标识CPU的工作状态及程序的运行状态,均为32位。3)ARM/THUMB指令支持ARM微处理器支持两种指令集:ARM指令集和Thumb指令集。ARM指令

16、为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省3040以上的存储空间,同时具备32位代码的所有优点。4)三/五级流水线除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗。2.ARM微处理器的主要系列Processor FamilyARM7 ARM9ARM10ARM11ARM Cortex结构体系版本(Architecture)ARM v4TARM v5TE ARM v6ARM Cortex (v7)按应用特征分类应用处理器 Application Processor特征:M

17、MU, Cache 最快频率、最高性能、合理功耗 实时控制处理器 Real-time Controller特征:MPU, Cache 实时响应、合理性能、较低功耗 微控制器 Micro-controller特征:no sub-memory system 一般性能、最低成本、极低功耗 3.ARM7TDMI含义1)Thumb 架构扩展, 提供两个独立的指令集:ARM 指令,均为 32位Thumb指令,均为 16位两种运行状态,用来选择哪个指令集被执行2)内核具有Debug扩展结构3)EmbeddedICE 逻辑4)增强乘法器 (32x8) 支持64位结果4.Cache与Buffer的区别Write

18、 Buffer:当数据写到Write Buffer后不需要CPU的任何干预而由Write Buffer控制逻辑自动的将数据写到最终的地方;Cache的回写则需要CPU的干预。Write Buffer较小,通常只有几十个字节。Read Buffer:当读数据时Read Buffer自动多读取一些字节,但是不占用CPU的总线时间,所以能加快读数据的速度;当使用Cache时如果要从内存中读取数据则每个数据都会占用CPU的时间,这是与Read Buffer的最大不同点。Read Buffer较小,通常只有几十个字节。5.Thumb技术产生的原因或特点原因:在ARM技术发展的历程中,尤其是ARM7体系结

19、构被广泛接受和使用时,嵌入式控制器的市场仍然大都由8位、16位的处理器占领。而这些产品却不能满足高端应用(如移动电话、磁盘驱动器、调制解调器等设备)对处理器性能的要求。这些高端消费类产品需要32位RISC处理器性能和更优于16位的CISC处理器的代码密度。这就要求要以更低的成本取得更好的性能和更优于16位的CISC处理器的代码密度。ARM的RISC体系结构的发展中已经提供了低功耗、小体积、高性能的方案。同时为了解决代码长度的问题,ARM体系结构又增加了变种,开发了一种新的指令体系,这就是Thumb指令集。特点:支持Thumb的核有2套独立的指令集,它使设计者得到ARM32位指令的性能,又能享有

20、Thumb指令集产生的代码方面的优势。可以在性能和代码大小之间取得平衡;在需要较低的存储代码时采用Thumb指令系统,但有比纯粹16位系统高的实现性能,因为实际执行的是32位指令,用Thumb指令编写最小代码量的程序,却取得以ARM代码执行的最好性能;独立的两套指令集也使得解码逻辑极其的简单,从而维持了较小的硅片面积,保证了领先的“低功耗、高性能、小体积”的技术要求,满足了对嵌入式系统的设计需求。五1.ARM微处理器的两种工作状态、如何切换ARM状态,处理器执行32位的字对齐的ARM指令;Thumb状态,处理器执行16位的、半字对齐的Thumb指令。在Thumb状态下,程序计数器PC使用位1选

21、择另一个半字。切换:BX 指令以通用寄存器(R0-R15)为操作数,通过拷贝Rn 到PC 来实现4GB 空间范围内的一个绝对跳转。 BX 利用Rn 寄存器中存储的目标地址值的最后一位来判断跳转后的状态。进入Thumb状态:当操作数寄存器Rm的状态位bit0为1时,执行 BX Rm 指令进入 Thumb状态。所有的异常都是在ARM状态下进行,如果处理器在Thumb状态进入异常,则当异常处理(IRQ,FIQ,Undef,Abort和SWI)返回时,自动切换到Thumb状态。进入ARM状态:当操作数寄存器Rm的状态位bit0为0时,执行 BX Rm 指令进入ARM状态。如果处理器进行异常处理(IRQ

22、,FIQ,Undef,Abort和SWI),在此情况下,把PC放入异常模式链接寄存器LR中,从异常向量地址开始执行也可以进入ARM状态。 例:从ARM状态切换到Thumb状态: LDR R0,=Label+1 BX R0从Thumb状态切换到ARM状态: LDR R0,=Label BX R02.七种工作模式、变换过程处理器模式说明备注 用户 (usr)正常程序执行模式不能直接切换到其它模式 系统 (sys)运行操作系统的特权任务与用户模式类似,但具有可以直接切换到其它模式等特权 快中断(fiq)支持高速数据传输及通道处理FIQ异常响应时进入此模式 中断 (irq)用于通用中断处理IRQ异常响

23、应时进入此模式 管理 (svc)操作系统保护模式系统复位和软件中断响应时进入此模式 中止 (abt)用于支持虚拟内存和/或存储器保护在ARM7TDMI没有大用处 未定义 (und)支持硬件协处理器的软件仿真未定义指令异常响应时进入此模式1异常模式:主要是在外部中断或者程序执行非法操作时会触发2特权模式可以存取系统中的任何资源3七种模式由CPSR4:0组合决定 管理模式(Supervisor)多种特权模式变化 设置成用户程序运行模式 复位后的初始模式 (堆栈初始化阶段) 注意不要进入用户模式 用户选择1)在最后阶段才能把模式转换成最终应用程序运行所需的模式(用户模式);2)内核级的中断使能也要考

24、虑在用户模式进行。过早地打开中断可能会造成系统死机。3.ARM寄存器组成ARM处理器总共有37个寄存器,这37个寄存器按它在用户编程中的功能划分,可以分为以下两类寄存器: 31个通用寄存器:包括了程序计数器(PC),这些寄存器都是32位的。R0R15R13_svc、R14_svc;R13_abt、R14_abt;R13_und、R14_und;R13_irq、R14_irq;R8_frqR14_frq。 6个状态寄存器 CPSR;SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fiq。6个状态寄存器也是32位的,但目前只使用了其中的12-14位 4.SPSR的

25、功能1)保存ALU中的当前操作信息2)控制允许/禁止中断3)设置处理器的运行模式5.ARM的异常定义及分类定义:当正常的程序执行流程发生暂时的停止时,称之为异常ARM体系结构中的异常,与8位/16位体系结构的中断有很大的相似之处,但异常与中断的概念并不完全等同。 异常的产生必须考虑与处理器时钟的同步。实际上,异常往往被称为同步中断。异常是由内部或者外部原因引起的,当异常发生时CPU将暂停执行当前指令,自动到指定的向量地址读取指令并且执行。分类:类别原因异步/同步返回行为中断来自I/O设备的信号异步总是返回到下一条指令陷井有意的异常同步总是返回到下一条指令故障潜在可恢复的错误同步可能返回到当前指

26、令终止不可恢复的错误同步不会返回异常类型向量地址优先级异常中断含义复位(Reset)0 x000000001(最高)当处理器的复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行。 复位异常中断通常用在下面几种情况下: 系统加电时 系统复位时 跳转到复位中断向量处执行,称为软复位未定义的指令(undefined instruction)0 x000000046当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义(undefined instruction)的指令异常中断。可以通过该异常中断机制仿真浮点向量运算软件中断(SWI)0 x000000086(最低

27、)这是一个由用户定义的中断指令。可用于用户模式下的程序调用特权操作指令预取中止(Prefech Abort)0 x0000000C5如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当该被预取的指令执行时,处理器产生指令预取中止(Prefech Abort)异常中断数据访问中止(Data Abort)0 x000000102如果数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问中止异常中断外部中断请求(IRQ)0 x000000184当处理器的外部中断请求引脚有效,而且CPSR寄存器的I控制位被清除时,处理器产生外部中断请求(IRQ)异常中断。系统中各

28、外设通常通过该异常中断请求处理器服务快速中断请求(FIQ)0 x0000001C3当处理器的外部快速中断请求引脚有效,而且CPSR寄存器的F控制位被清除时,处理器产生外部中断请求(FIQ)6.ARM的异常响应(包括返回)过程及伪代码描述当发生异常时,除了复位异常立即中止当前指令外,处理器尽量完成当前指令,然后脱离当前的指令处理序列去处理异常。ARM处理器对异常中断的响应过程如下 :将CPSR的内容保存到将要执行的异常中断对应的SPSR中,以实现对处理器当前状态、中断屏蔽位以及各条件标志位的保存。各异常中断模式都有自己相应的物理SPSR寄存器。设置当前状态寄存器CPSR中的相应位:设置CPSR模

29、式控制位CPSR4:0,使处理器进入相应的执行模式;设置中断标志位(CPSR7=1),禁止IRQ中断;当进入Reset或FIQ模式时,还要设置快速中断标志位(CPSR6=1),禁止FIQ中断。将引起异常指令的下一条指令的地址保存到新的异常工作模式的R14即R14_mode中,使异常处理程序执行完后能正确返回原程序。给程序计数器(PC)强制赋值,使程序从相应的矢量地址开始执行中断处理程序,一般地说,矢量地址处将包含一条指向相应程序的转移指令,从而可跳转到相应的异常中断处理程序处执行异常中断处理程序。异常响应伪代码2731N Z C V Q2867I F T mode1623 815 54024f

30、sxc U n d e f i n e dJ若处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。ARM微处理器对异常的响应过程用伪码可以描述为:R14_ = Return LinkSPSR_ = CPSRCPSR4:0 = Exception Mode NumberCPSR5 = 0 保障在ARM状态下执行CPSR7 = 1 禁止新的IRQ中断If = Reset or FIQ thenCPSR6 = 1 当Reset或FIQ时,禁止新的FIQ中断PC = Exception Vector Address 转入异常入口地址7.异常中断向量表中断向量表中指定了各

31、异常中断向量与其处理程序的对应关系。它通常存放在存储地址的低端。在ARM体系结构中,异常中断向量表的大小为32字节。其中,每个异常中断占据4个字节大小,保留了4个字节空间。每个异常中断对应的中断向量表的4个字节的空间中存放一个跳转指令或者一个向PC寄存器中赋值的数据访问指令。通过这两种指令,程序将跳转到相应的异常中断处理程序处执行。存储器的前8个字中除了地址0 x00000014之外,全部被用作异常矢量地址。(地 址异 常进入模式0 x0000,0000复位管理模式0 x0000,0004未定义指令未定义模式0 x0000,0008软件中断管理模式0 x0000,000C中止(预取指令)中止模

32、式0 x0000,0010中止(数据)中止模式0 x0000,0014保留保留0 x0000,0018IRQIRQ0 x0000,001CFIQFIQ8.存储器大小端模式存储器格式是指字、半字、字节在存储器中存放的方式,也反映了存储器中字、半字、字节之间的映射关系。ARM体系结构可以用两种方法存储字数据,称之为大端模式和小端模式 (ARM处理器能方便的配置为其中任何一种存储器方式,但它们的缺省设置为小端格式)大端模式字数据的高位字节存储在低地址中字数据的低位字节存放在高地址中小端模式低地址中存放字数据的低字节高地址中存放字数据的高字节9.片上总线的基本概念片上总线OCB(OnChip Bus)

33、技术的产生背景:使片上不同IP核的连接实现标准化。基于IP核互联标准技术的发展,目前形成较有影响力的3种总线标准:IBM公司的CoreConnect、ARM公司的AMBA和Silicore Corp公司的Wishbone。AMBA规范定义了三种总线:AHB(Advanced High-performance Bus):用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序参考同一个时钟沿。ASB(Advanced System Bus):用于连接高性能系统模块,它支持突发数据传输模式。APB(Advance Peripheral Bus):是一个简单接口,支持低性能的外围接

34、口。六1.ARM指令集特点ARM面向嵌入式应用,是典型的RISC体系结构。与基于传统CISC结构的指令集相比,具有简洁、高效和便于实现的特点。ARM微处理器的指令集是加载/存储型的,也即大部分指令仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载/存储指令来完成(Load-store 结构)。向后兼容:新版本增加指令,并保持指令向后兼容;Load-store 结构*在通用寄存器中操作(指令集仅能处理寄存器中的数据)load/store 从存储器中读某个值,在寄存器中操作完 后再将其放回存储器中指令分类数据处理指令 使用和改变寄存器的值数据传送指令 把

35、存储器的值拷贝到寄存器中 (load) 或者把寄存 器中的值拷贝到存储器中(store)控制流指令 分支分支和链接, 保存返回的地址,以恢复最先的次序陷入系统代码2.寻址方式寻址方式就是处理器根据指令中给出的地址信息来寻找真实操作数地址(物理地址)的方式。 ARM指令系统支持如下几种常见的寻址方式:1)立即寻址 操作数在指令中2)寄存器寻址 操作数在寄存器中3)寄存器间接寻址 操作数在存储器中4)基址加偏址寻址 多寄存器寻址(一次把内存中多个值传送到多个寄存器或把多个寄存器的值一次传递到内存中)5)块拷贝寻址 6)堆栈寻址7)相对寻址立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就

36、在指令中给出,只要取出指令也就取到了操作数,这个操作数被称为立即数。 例如以下指令: ADDR0,R0,1/*R0R01*/ ADDR0,R0,0 x3f /*R0R00 x3f*/ 在以上两条指令中,第二个源操作数即为立即数,要求以“”为前缀,对于以十六进制表示的立即数,还要求在“”后加上“0 x”或“&” ,0b或“%”表示二进制,0d或缺省表示十进制。注意:32位有效立即数是间接得到的(如果直接用它,就可能完全占据32位编码空间,而使指令的操作码等无法体现在编码中)3.32位有效立即数在32位指令编码中存放32位立即数的方法是: 在ARM数据处理指令中,当参与操作的第二操作数为立即数型时

37、,每个立即数都是采用一个8位的常数循环右移偶数位而间接得到的。其中,循环右移的位数由一个4位二进制的两倍表示,如果立即数记作,8位常数记作immed_8,4位的循环右移值记作rotate_imm,有效的立即数是由一个8位的立即数循环右移偶数位得到。 有效立即数immediate可以表示成:=immed_8 循环右移(2rotate_imm)注意:并不是每一个32位的常数都是合法的立即数,只有用上面构造方法得到的才是。立即数方式ARM指令中的立即数,由一个8bit的常数循环右移偶数位得到:立即数 =(0-255) 循环右移 2N位(N最大为16)例子:合法立即数:0 x3fc,0 x0,0 xf

38、0000000, 0 xf0000001非法立即数:0 x1fe,0 xffff,0 x1010,0 xf0000010同一个立即数可能有多种表示方法。如:0 x3f0 = 0 x3f 循环右移 28位0 x3f0 = 0 xfc 循环右移 30位对立即数的编码规则:如果立即数在0 0 xff之间,移位数为0。否则,就取决于编译器了。指令“mov r0, #0 x3f0”在ADS1.2中被编译为0 xe3a00ffc,在arm-elf-gcc-2.95.3中被编译为0 xe3a00e3f。对于有互补操作的指令,编译器可以做智能的转换,比如:mvn r1, 0 xffffff00-mov r1,

39、 0 xffadd r1, r1, #0 xffffff00-sub r1, r1, #0 x100adc r1, r1, #0 xffffff00-sbc r1, r1, #0 xffand r1, r1,#0 xffffff00-bic r1, r1, #0 xff这样,一些原本非法的立即数也可以正常编译通过。如果一个立即数,经过上述转换后是合法的,那么它也可以用在数据操作指令中。SP4.基址变址寻址的三种形式前变址模式:(基址寄存器存放的地址先变化,然后执行指令的操作)LDR R0,R1,4;R0R14自动变址模式:(实现基址寄存器自动修改,可让程序追踪一个数据表)LDR R0,R1,4

40、!;R0R14、R1R14 (惊叹号!表示在完成数据传送后将更新基址寄存器即自动加上前变址的字节数)后变址模式:(实质是基址寄存器不加偏移作为传送地址使用,然后更新 基址寄存器内容)LDR R0,R1 ,4;R0R1、R1R14基址加偏址寻址变址模式数据基址寄存器示例自动(回写型前)变址membase+offset基址寄存器加上偏移LDR r0,r1,#4!前变址membase+offset不变LDR r0,r1,#4后变址membase基址寄存器加上偏移LDR r0,r1,#45.堆栈寻址实例堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称

41、作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack)。访问存储器时,存储器的地址向高地址方向生长,称为递增堆栈(Ascending stack); 存储器的地址向低地址方向生长,称为递减堆栈(Descending stack)。 四种类型的堆栈工作方式 满递增堆栈(FA):堆栈指针指向最后压入的数据,且由低地址向高地址生成。满递减堆栈(FD) :堆栈指针指向最后压入的数据,且由高地址向低地址生成。空递增堆栈(EA) :堆栈指针指向

42、下一个将要放入数据的空位置,且由低地址向高地址生成。空递减堆栈(ED) :堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成6.块拷贝寻址实例寻址模式描述起始地址结束地址Rn!IA执行后增加RnRn+4*(N-1)Rn+4*NIB执行前增加Rn+4Rn+4*NRn+4*NDA执行后减少RnRn-4*(N-1)Rn-4*NDB执行前减少Rn-4Rn-4*NRn-4*N注:!决定Rn的值是否随着传送而改变7.SWP指令单寄存器交换指令(SWP)交换指令把字或无符号字节的读取和存入组合在一条指令中。通常都把这两种传送结合成为一个不能被外部存储器的访问(例如来自DMA控制器的访问)分隔开的

43、基本的存储器操作,因此本指令一般用于处理器之间或处理器与DMA控制器之间共享的信号量、数据结构进行互斥的访问。 SWP指令应用示例:SWPR1,R1,R0;将R1的内容与R0指向的存储单元的内容进行互换 SWPBR1,R2,R0;将R0指向的存储单元低字节数据读取到R1中 ;(高24位清零),并将R2的内容写入到该内存单元中 ;(最低字节有效) SWP条件 目的寄存器,源寄存器1,源寄存器2SWP 指令用于将源寄存器2所指向的存储器中的字数据传送到目的寄存器中,同时将源寄存器1中的字数据传送到源寄存器2所指向的存储器中。显然,当源寄存器1和目的寄存器为同一个寄存器时,指令交换该寄存器和存储器的

44、内容。SWP条件B 目的寄存器,源寄存器1,源寄存器2SWPB 指令用于将源寄存器2所指向的存储器中的字节数据传送到目的寄存器中,目的寄存器的高24位清零,同时将源寄存器1中的字节数据传送到源寄存器2所指向的存储器中。注意:PC不能用作指令中的任何寄存器基址寄存器Rn不应与源寄存器Rm或目标寄存器Rd相同,但Rm和Rd可以相同指令示例:SWP R0,R1,R2 ;将R2所指向的存储器中的字数据传送到R0,同时将R1中的字数据传送到R2所指向的存储单元。SWP R0,R0,R1 ;将R1所指向的存储器中的字数据与R0中的字数据交换。 SWPB R0,R1,R2 ;将R2所指向的存储器中的字节数据

45、传送到R0,R0的高24位清零,同时将R1中的低8位数据传送到R2所指向的存储单元。SWPB R0,R0,R1 ;该指令完成将R1所指向的存储器中的字节数据与R0中的低8位数据交换。 8.程序状态寄存器与通用寄存器之间的传送指令ARM指令中有两条指令,用于在状态寄存器和通用寄存器之间传送数据。修改状态寄存器一般是通过“读取修改写回”三个步骤的操作来实现的。 这两条指令分别是:状态寄存器 通用寄存器的传送指令(MRS)通用寄存器 状态寄存器的传送指令(MSR) 注意:不能试图通过MSR指令直接修改CPSR中的T控制位直接将程序切换到Thumb状态,而必须通过BX等指令来完成程序状态的切换。9.转

46、移指令 转移指令用于实现程序流程的跳转,在ARM程序中有两种方法可以实现程序流程的跳转: 使用专门的跳转指令。 直接向程序计数器PC写入跳转地址值。通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令,可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用。ARM的转移指令可以从当前指令向前或向后的32MB的地址空间跳转,根据完成的功能它可以分为以下4种 : B 转移指令 BX 带状态切换的转移指令 BL带链接的转移指令 BLX 带链接和状态切换的转移指令 10.部分简单常用伪指令/伪操作ARM伪指令不属于

47、ARM指令集中的指令,是为了编程方便而定义的。伪指令可以像其它ARM指令一样使用,但在编译时这些指令将被等效的一条或多条ARM指令所代替。ARM伪指令有四条,分别为ADR伪指令、ADRL伪指令、LDR伪指令、NOP伪指令。 七1.ARM汇编中的主要文件格式源程序文件文件名说 明汇编程序文件*.S用ARM汇编语言编写的ARM程序或Thumb程序。C程序文件*.C用C语言编写的程序代码。头文件*.H为了简化源程序,把程序中常用到的常量命名、宏定义、数据结构定义等单独放在一个文件中,一般称为头文件。注意:在ARM的一个工程中,可以包含多个汇编源文件或多个C程序文件,或汇编源文件与C程序文件的组合,但

48、是至少要包含一个汇编源文件或C语言源文件。 2.ADS环境下ARM汇编语句书写格式ARM汇编语言语句格式如下所示:symbolinstruction|directive | pseudo-instruction;comment 其中:1)instruction为指令。(指令不能从一行的行头开始,在一行语句指令的前面必须有空格或符号) directive为伪操作。 3)pseudo-instruction为伪指令。 4)symbol为符号。(符号必须从一行的行头开始,并且符号中不能包含空格) 5)comment为语句的注释。(以“;”开头) 注意:标号必须从一行的行头开始。并且标号中不能包含空格

49、。在指令和伪指令中标号用作地址标号;在有些伪操作中标号用作变量或者常量;指令不能从一行的行头开始,必须从第二列或能区分标号的地方开始书写。在一行语句中,指令的前面必须有空格或符号;注释以“;”开头,注释的结尾即为一行的结尾,注释也可单独占用一行。 在汇编语言程序设计中,每一条指令的助记符可以全部用大写、或全部用小写,但不允许在一条指令中大、小写混用。如果一条语句太长,可将该长语句分为若干行来书写,在行的末尾用“”表示下一行与本行为同一条语句,在“”之后不能有其他字符,包括空格和制表符。源程序中,在语句之间适当地插入空行,可以提高源代码的可读性。 ;标号START没有顶格写;标号后不能带:(AD

50、S环境);指令不允许顶格书写;指令中大小写混合;无法跳转到Loop标号处 START MOV R0,#1ABC: MOV R1,#2MOV R2,#3loop Mov R2,#3 B Loop3.ATPCSATPCS(ARM-Thumb Procedure Call Standard)规定了一些子程序间调用的基本规则,这些规则包括子程序调用过程中寄存器的使用规则,数据栈的使用规则,参数的传递规则。有了这些规则之后,单独编译的C语言程序就可以和汇编程序相互调用。使用ADS的C语言编译器编译的C语言子程序本身就能满足指定的ATPCS类型。而对于汇编语言来说,则需要用户来保证各个子程序满足ATPCS

51、的要求。八1.预处理伪指令的特点、三种类型预处理伪指令的特点 把文件包含的正文替换进来,如标准头文件和自定义头文件,其内容包括符号常量、复合变量原型、用户自定义的变量类型和函数原型说明等; 对宏定义进行宏扩展,减少编程量,改进源程序的可读性,参数宏更减少了函数调用的开销;条件编译改善了编程的灵活性,也改善了可移植性。预处理伪指令有三种:文件包含、宏定义和条件编译。 2.使用宏的好处使用宏的好处:改动此寄存器的设置 利用宏还可以提高代码运行效率,子程序调用需要压栈/出栈,该过程如果过于频繁会耗费大量的CPU资源。一些代码量小但运行频繁的代码如果采用带参数宏来实现会提高代码的运行效率, 3.参数宏

52、和函数的异同参数宏和函数的异同:相同点:可以一次编码多次使用,都可以带有参数。参数宏和函数的重要区别: 一是参数宏的形式参数表中没有类型说明符; 二是参数宏在时空的开销上比函数都要小。4.const、volatile修饰符const修饰符:常量修饰符。C语言中,内存中单独开辟有一个常量区用于存放const变量。变量被const修饰后就不再变了。const修饰符的作用:通知编译器保护参数不被修改;使代码紧凑;便于用户阅读和减少待清理垃圾的出现。const int * ptr = &a/*说明指针指向的对象是常量,是常量指针*/int * const ptr = &b/*说明指针本身是常量,是指针

53、常量*/volatile修饰符:易失性修饰符,说明所定义的变量或指针可以被多种原因修改。例如,有的变量在中断服务程序中会被修改,有的会被I/ O修改,这种修改带有随机性,为防止丢失任何一次这种修改,要把它修饰为易失性的变量。注意,禁止把它作为寄存器变量处理,也禁止对它进行任何形式的优化。九1.嵌入式系统的初始化过程2.BootLoader及两种操作模式BootLoader是系统加电后首先运行的一段程序代码.目的:将系统的软硬件环境带到一个合适的状态,为调用操作系统内核准备好正确的环境。对于不使用操作系统的嵌入式系统,应用程序的运行同样需要依赖这样一个准备良好的软硬件环境. BootLoader

54、是依赖于目标硬件实现的,可以从两个方面来理解:不同嵌入式微处理器体系结构都有不同的BootLoader.BootLoader还依赖于具体的嵌入式板级硬件设备配置。两种操作模式:1)启动加载模式:也称为“自主”(Autonomous)模式。即BootLoader从目标机上的某个固态存储设备上将操作系统加载到RAM中运行,整个过程没有用户的介入,是BootLoader的正常工作模式。当嵌入式系统以产品形式发布的时候,Bootloader必须工作在这种模式下 。 2)下载模式:目标机上的BootLoader将通过串口或网络连接等通信手段从主机下载文件,比如:下载应用程序、数据文件、内核映像等。从主机

55、下载的文件通常首先被BootLoader保存到目标机的RAM中,然后再被 BootLoader写到目标机上的固态存储设备中。BootLoader的这种模式通常在系统更新时使用。工作于这种模式下的 BootLoader通常都会向它的终端用户提供一个简单的命令行接口。 3.地址重映射 :整个过程是把启动代码从ROM(EEPROM或者Flash)拷贝到SDRAM运行,同时在拷贝完毕后进行内存的重新映射,把SDRAM映射到原来的ROM地址(0 x00000000)中,这样就可以用SDRAM中的代码写Flash,使得程序代码得以更新 。ROM地址的重映射(remap)0 x0200(boot code)

56、0 x0100(Reset_handler)B Reset_Handler0 x0000Flash(remap)0 x0204(boot code)0 x0200(Reset_handler)B Reset_Handler0 x0000RAMROM地址重映射的实现为保证重映射之后提供正确的中断入口地址,在重映射之前就必须把中断和异常向量表拷贝到内部RAM中。其程序实现如下:mov r8,#RAM_BASE_BOOT/RAM_BASE_BOOT是重映射前内部RAM区地址 add r9, pc #VectorTale /VectorTale是异常向量表入口ldmia r9!, r0-r7 /读8个异常向量 stmia r8!, r0-r7 /保存8个异常向量到RAM区ldmia r9!, r0-r4 /读5个异常处理程序绝对地址stmia r8!, r0-r4 /保存5个异常处理

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论