《《嵌入式总复习》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《嵌入式总复习》PPT课件.ppt(573页珍藏版)》请在三一办公上搜索。
1、东南大学成贤学院计算机系 吴强,嵌入式系统,配套教材:ARM嵌入式系统结构与编程邱铁 编著,清华大学出版社,2009,3 嵌入式系统基于SEP3203微处理器的应用开发时龙兴等 编著,电子工业出版社,2006.10,第1章绪论,本章主要介绍嵌入式系统的发展历史和相关概念,当前嵌入式技术的主要应用以及市场上最流行的嵌入式产品,通过典型产品实例使读者了解当前嵌入式技术的应用状况和研究方向。最后介绍了嵌入式技术未来的发展趋势。,内容提要,1.1嵌入式系统定义1.2嵌入式操作系统1.3嵌入式技术在工程领域的应用1.4典型应用:嵌入式机器人控制系统1.5嵌入式技术的发展趋势,1.1嵌入式系统定义,近年来
2、,以集成电路为代表的微电子技术取得了重大突破,这使计算机技术、微控制器技术得到了迅速发展,再加上网络技术的应用与普及,加速了21世纪工业生产、军工国防、消费电子、商业活动、科学实验和家庭生活等领域的自动化和信息化进程,这些为嵌入式技术的大规模发展提供了强大的产业支撑。,111嵌入式系统发展历程,Intel公司于1971年开发出第一片具有4位总线结构的微处理器4004,当时主要用于电子玩具、家用电器,电子控制及简单的计算工具。1976年Intel公司推出功能相对较完备的单片机8048。Motorola同时推出了68HC05,Zilog公司推出了Z80系列。在80年代初,Intel又进一步完善了8
3、048,在它的基础上研制成功了8051,这在单片机的历史上是值得纪念的一页。51系列的单片机仍然在市场上占有很大的比例,在各种产品中有着非常广泛的应用。,在80年代早期,出现了商业级的“实时操作系统内核”,嵌入式系统开发的程序员开始在实时内核下编写嵌入式应用软件,从而使新产品的研制可以获取更短的开发周期、更低的开发资金和更高的开发效率。,嵌入工实时操作系统具有以下特点:(1)采用抢占式的调度策略,任务的实时性好,并且执行时间是确定的;(2)具有可裁剪性(根据任务的需要与否进行添加或删除操作系统模块)和可移植性(移植到各种处理器上);(3)具有较好的可靠性和可扩展性,适合嵌入式产品的应用开发。,
4、进入90年代,随着任务复杂性的不断增加,软件规模也越来越大,实时核也随之逐渐发展并完善,并由此发展成为实时多任务操作系统(RTOS),并作为一种可移植的软件平台成为当前国际嵌入式系统的应用软件支撑。这一阶段在国际上相继出现了Palm OS,WinCE,嵌入式Linux,Nucleux等嵌入式操作系统,进入21世纪,嵌入式系统得到了极大的发展。在硬件上,MCU的性能得到了极大的提升,特别是ARM技术的出现与完善,为嵌入式操作系统提供了功能强大的硬件载体。Intel、Sansung、Motorola、Phlips和Atmel纷纷采用ARM技术,再加上其公司先进的外围接口技术与先进的制造技术,设计出
5、功能完备的MCU,应用到工业自动化、消费类电子、航空航天、军事工业等各个领域。,112嵌入式系统的定义与特点,IEEE的定义:Devices used to control,monitor,or assist the operation of equipment,machinery or plants.从中可以看出,嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置,我国嵌入式系统的行业定义,我国嵌入式系统的行业定义以应用为中心,以计算机技术为基础,软件硬件可裁剪适应应用系统对功能、可靠性、成本、功耗严格要求的专用计算机系统。,从这个定义可以看出嵌入式系统是与应用紧密结合的,它具有很强的
6、专用性,必须结合实际系统需求进行合理的裁剪利用。因此有人把嵌入式系统比作是一个针对特定的应用而“量身定做”的专用计算机系统。,1.2嵌入式操作系统,嵌入式操作系统(Embedded Operation System)产生于20世纪80年代,当时国际上一些IT公司开始进行商用嵌入式操作系统和专用操作系统的设计与开发。到目前为止,已经出现了很多嵌入式操作系统,在嵌入式产品开发中发挥着重要作用。,121嵌入式实时操作系统,嵌入式实时操作系统是指在限定的时间内对输入进行快速处理并作出响应的嵌入式操作系统。实时操作系统具有实时性,必须有相应的硬件支持才能达到实时控制的目的。,嵌入式实时操作系统大体可分为
7、商用型和免费型(开源)两种。商用型的实时操作系统功能稳定、可靠,有完善的技术支持和售后服务,但价格一般较高。典型的商用嵌入式实时操作系统有VxWorks,QNX,OSE,ECOS,PSOS,Windows CE等等。,嵌入式Linux:嵌入式Linux操作系统是针对嵌入式微控制器的特点而量身定做的一种Linux操作系统,包括常用的嵌入式通信协议和常用驱动,支持多种文件系统。,嵌入式实时操作内核C/OS-II:C/OS-是一个实时操作系统内核,只包含了任务管理、任务调度、时间管理、内存管理和任务间的通信与同步等基本功能。没有提供文件系统、网络驱动及管理、图形界面等模块。但是由于C/OS-的可移植
8、性和开源性,用户可以根据功能需求添加所需的各种服务,典型嵌入式操作系统介绍,C/OS-II 嵌入式操作系统内核 VxWorks嵌入式实时操作系统 WinCE操作系统 Linux操作系统,C/OS-II 嵌入式操作系统内核,C/OS-II是一个可裁减的、源码开放的、结构小巧、可剥夺型的实时多任务内核,主要面向中小型嵌入式系统,具有执行效率高、占用空间小、可移植性强、实时性能优良等特点。C/OS-II中最多可以支持64个任务,分别对应优先级063,其中0为最高优先级。实时内核在任何时候都是运行就绪了的最高优先级的任务。C/OS-II最大程度上使用ANSI C语言开发,现已成功移植到近40多种处理器
9、体系上。,WinCE操作系统,Microsoft Windows CE是针对有限资源的平台而设计的多线程、完整优先权、多任务的操作系统。高度模块化是WinCE的一个特性,有利于对从掌上电脑到专用的工业控制器的用户电子设备进行定制。WinCE操作系统的基本内核需要至少200K的ROM,它支持 Win32 API子集、多种用户界面硬件、多种的串行和网络通讯技术、COM/OLE和其他的进程间通讯的先进方法。Microsoft公司为Windows CE提供了Platform Builder和Embedded Visual Studio开发工具。,WinCE操作系统,Windows CE嵌入式操作系统能
10、提供与PC机类似的图形界面和主要的应用程序。这样只要是对PC机上的Windows比较熟悉的用户,可以很快地使用移植有Windows CE嵌入式操作系统的设备。,1.5嵌入式技术的发展趋势,时代的发展使得嵌入式产品获得了巨大的商机,为嵌入式产品提供了广阔的市场前景,同时也对嵌入式生产厂商提出了新的挑战。,1随着信息化与数字化的发展,嵌入式设备进行网络互联是未来发展的趋势。未来的嵌入式设备为了适应信息化与数字化的发展,网络化成为发展的方向。要进行网络互联,在硬件设计上要提供各种网络通信接口。在应用软件方面,要提供可以在设备上安装嵌入式Web浏览器,实现网页浏览和远程数据库的访问。,2优化嵌入式系统
11、软硬件内核,提高系统运行速度,降低功耗和硬件成本。嵌入式产品是软件和硬件相结合的设备,为了提高运行速度、降低功耗和成本,要求开发人员尽量裁剪系统的硬件资源和软件内核,利用最少的硬件资源和软件结构实现最多的功能。在实现过程中要不断的优化硬件电路并改进算法,达到最佳的控制功能。,3指令级的并行计算技术将引入嵌入式微处理器。在工程的实际应用中会出现大量的数据执行相同的运算功能,比如向量计算,这就需要在单个时钟周期内实现多个数据的运算操作。在CPU中设计多个执行部件来完成此功能,这种CPU的架构形式称为单指令流多数据流体系结构,也称之为指令级的并行计算技术。,4嵌入式微处理器将会向多核技术发展。无所不
12、在的智能必将带来无所不在的计算,大量的图像信息也需要高速的处理器来处理,面对海量数据,单个处理器可能无法在规定的时间完成处理。引入并行计算技术,可以采用多个执行单元同时处理,这就是处理器的多核技术。,5嵌入式技术将引领信息时代嵌入式产品具有自身的优点,如体积小、低功耗等,这也正是在走可持续发展的战略;使我们无论身处何时、何地,想要什么信息都可以信手拈来;“无所不在的智能”的观点,它是嵌入式系统应用的最高境界。,第2章 ARM技术与ARM体系结构,本章主要介绍ARM处理器的产生及版本发展历史,以及各个版本的典型处理器及应用情况和性能分析;ARM处理器的内核调试结构,重点分析了ARM7TDMI-S
13、、ARM9TDMI两种结构;ARM处理器的工作模式及寄存器组织结构,分析了在什么情况下进入到相应的工作模式;ARM处理器支持的内存数据存储格式,分为大端格式和小端格式;最后介绍了ARM7的三级流水线运行机制和ARM9的五级流水线运行机制。,内容提要,21 ARM体系结构版本与内核22 ARM内核模块23 ARM处理器的工作模式24 ARM内部寄存器25 ARM异常处理26 存储方式与存储器映射机制27 ARM流水线技术分析,21 ARM体系结构版本与内核,第一片ARM处理器是1983年10月到1985年4月间在位于英国剑桥的Acorn Computer公司开发 1990年,ARM公司成立20世
14、纪90年代,ARM快速进入世界市场1995年 StrongARM 问世 XScale是下一代StrongARM芯片的发展基础 ARM10TDMI是ARM处理器核中的高端产品 ARM11是ARM家族中性能最强的一个系列,211ARM体系结构版本,ARM7TDMI,4T,1,支持Halfword 和signed halfword/byte 和System mode,支持Thumb指令集,2,4,ARM9TDMI,ARM720T,ARM940T,改良的ARM/Thumb 交互作用以及CLZ 指令,5TE,Saturated mathsDSP multiply-accumulate instructi
15、ons,XScale,ARM1020E,ARM9E-S,ARM966E-S,3,早期的ARMs,ARM9EJ-S,5TEJ,ARM7EJ-S,ARM926EJ-S,Jazelle支持Java字节码,6,ARM11,SIMD,SISIMDMD,S,SIMD,7,ARM Cotex,第一阶段:版本V1、V2、V3这3个早期ARM版本功能单一,没有大范围占领市场,主要是处于开发和实验阶段 第二阶段:从ARM4开始,ARM体系结构处于完善和提高阶段,版本4与以前版本相比增加了下列指令:有符号、无符号的半字和有符号字节的load和store指令。增加了T变种,处理器可以工作于Thumb状态,在该状态下的
16、指令集是16位的Thumb指令集。增加了处理器的特权模式。在该模式下,使用的是用户模式下的寄存器。,版本5主要由两个变型版本5T、5TE组成 相比与版本4,版本5的指令集有了如下的变化:提高了T变种中ARM/Thumb混合使用的效率。增加前导零记数(CLZ)指令,该指令可使整数除法和中断优先级排队操作更为有效;增加了BKPT(软件断点)指令;为协处理器设计提供了更多的可供选择的指令;更加严格地定义了乘法指令对条件码标志位的影响。,ARM体系版本6是2001年发布的。新架构v6在降低耗电量的同时还强化了图形处理性能。通过追加有效进行多媒体处理的SIMD功能,将语音及图像的处理功能提高到了原机型的
17、4倍。ARM体系版本6首先在2002年春季发布的ARM11处理器中使用。,ARM体系版本7包括三个系列:A系列(ARMv7A)CortexA8(应用处理器)R系列(ARMv7R)CortexR4(实时处理器)M系列(ARMv7M)CortexM3、M0(微处理器),2.1.2 ARM体系结构的基本版本命名规则,ARMxyzTDMIEJF-S大括号内的字母是可选的,各个字母的含义如下:x系列号,例如ARM7中的“7”、ARM9中的“9”;y内部存储管理/保护单元,例如ARM72中的“2”、ARM94中的“4”;z内含有高速缓存Cache;T技持16位的Thumb指令集;D支持JTAG片上调试;M
18、支持用于长乘法操作(64位结果)的ARM指令,包含快速乘法器;I带有嵌入式追踪宏单元ETM(Embedded Trace Macro),用来设置断点和观察点的调试硬件;,续,E增强型DSP指令(基于TDMI);J含有Java加速器Jazelle,与Java虚拟机相比,Java加速器Jazelle使Java代码运行速度提高了8倍,功耗降低到原来的80%;F向量浮点单元;S可综合版本,意味着处理器内核是以源代码形式提供的。这种源代码形式又可以被编译成一种易于EDA工具使用的形式。,ARM体系结构的基本版本,2.2ARM内核模块,ARM处理器一般都带有嵌入式追踪宏单元ETM(Embedded Tra
19、ce Macro),它是ARM公司自己推出的调试工具,ARM调试结构,221ARM7TDMI-S内核结构,ARM7TDMI-S是一款32位嵌入式RISC处理器。它作为优化的硬核是性能、功耗和面积特性的最佳组合。使用ARM7TDMI核使得系统设计师能够设计出小尺寸、低功耗以及高性能的嵌入式设备。,ARM7TDMI,ARM7TDMI 是基于 ARM7 内核3 级流水线-0.9MIPS/MHz冯.诺依曼架构CPI(Cycle Per Instruction)约为1.9 T-Thumb 架构扩展,提供两个独立的指令集:ARM 指令,均为 32位Thumb指令,均为 16位两种运行状态,用来选择哪个指令
20、集被执行D-内核具有Debug扩展结构M-增强乘法器 支持64位结果.I-EmbeddedICE-RT逻辑-提供片上断点和调试点支持,ARM7TDMI 内核信号,ARM7TDMI 方框图,ARM7TDMI内核,TAP 控制器,JTAG 接口,数据总线,控制信号,D31:0,地址总线,A31:0,DIN31:0,DOUT31:0,BUSSplitter,EmbeddedICE逻辑,乘法器,ARM7TDMI 内核,指令解码,地址自增器,nRESET,nMREQ,SEQ,ABORT,nIRQ,nFIQ,nRW,MAS1:0,LOCK,nCPI,CPA,CPB,nWAIT,MCLK,nOPC,BIGE
21、ND,ISYNC,nTRANS,nM4:0,D31:0,桶形移位器,32 位 ALU,DBE,写数据 寄存器,读数据 寄存器,地址寄存器,寄存器,A31:0,ABE,及,控制 逻辑,PC Update,解码站,指令 解码,Incrementer,PC,ABus,BBus,ALUBus,外部地址产生,PC31:2 ARM StatePC31:1 Thumb State,ALU31:0,INC,自增器,A31:0,向量,0 x1C,0 x00,地址寄存器,特 点:32/16 位RISC架构(ARM v4T)。具有最高性能和灵活性的32位ARM指令集。代码紧凑的16位Thumb指令集。统一的总线接口
22、,指令与数据都在32位总线上传输。3级流水线。32位算术逻辑单元(ALU)。极小的核心尺寸以及低功耗。完全的静态操作。协处理器接口。扩展的调试设备:,T标志位的作用,16,16,32-bit data,16,A1,Mux,Thumb指令解码,Mux,Mux,T标志,ARM指令解码,阶段 1,阶段 2,D31:0,0,1,1,0,Fetch,Decode,Execute,参考教材P.21 T指令执行的状态控制位,用来说明本指令是ARM指令还是Thumb指令。,带Cache的ARM7TDMI,ARM710T8K 统一的 cache 完整的内存管理单元(mmu),支持虚拟地址和存储器保护写缓冲,AR
23、M720T同ARM710T,但支持 WinCEARM740T8K 统一的 cache内存管理单元写缓冲,ARM7TDMI内核,地址,地址,数据读,AMBA接口,写缓冲,MMU,数据写,数据,ARM7xxT,控制逻辑,Cache,AMBA总线接口,JTAG 和非 AMBA 信号,CP15,ARM7系列内核采用了三条流水线的内核结构,三级流水线分别为取指(Fetch)、译码(Decode)、执行(Execute),取指:将指令从存储器中取出,放入指令Cache中。译码:由译码逻辑单元完成,是将在上一步指令Cache中的指令进行解释,告诉CPU将如何操作。执行:这阶段包括移位操作、读通用寄存器内容、
24、输出结果、写通用寄存器等。,需要注意的是,PC指向正被取指的指令而不是正在执行的指令:,详细信息见教材ARM嵌入式系统结构与编程第16页,222 ARM9内核结构,ARM920是一款32位嵌入式RISC处理器内核。在指令操作上采用5级流水线.取指:从指令Cache中读取指令。译码:对指令进行译码,识别出是对哪个寄存器进行操作并从通用寄存器中读取操作数。执行:进行ALU运算和移位操作,如果是对存储器操作的指令,则在ALU中计算出要访问的存储器地址。存储器访问:如果是对存储器访问的指令,用来实现数据缓冲功能(通过数据Cache)。寄存器回写:将指令运算或操作结果写回到目标寄存器中。,ARM920
25、的5级流水线操作,2.3ARM处理器的工作模式,ARM技术的设计者将ARM处理器在应用中可能产生的状态进行了分类,并针对同一类型的异常状态设定了一个固定的入口点,当异常产生时,程序会自动跳转到对应异常入口处进行异常服务。,ARM处理器共有7种工作模式,1用户模式:非特权模式,也就是正常程序执行的模式,大部分任务在这种模式下执行。在用户模式下,如果没异常发生,不允许应用程序自行改变处理器的工作模式,如果有异常发生,处理器会自动切换工作模式2FIQ模式:也称为快速中断模式,支持高速数据传输和通道处理,当一个高优先级(fast)中断产生时将会进入这种模式。,3IRQ模式:也称为普通中断模式,:当一个
26、低优先级(normal)中断产生时将会进入这种模式。在这模式下按中断的处理器方式又分为向量中断和非向量中断两种。通常的中断处理都在IRQ模式下进行。4SVC模式:称之为管理模式,它是一种操作系统保护模式。当复位或软中断指令执行时处理器将进入这种模式。,5中止模式:当存取异常时将会进入这种模式,用来处理存储器故障、实现虚拟存储或存储保护。6未定义指令异常模式:当执行未定义指令时会进入这种模式,主要是用来处理未定义的指令陷阱,支持硬件协处理器的软件仿真,因为未定义指令多发生在对协处理器的操作上。7系统模式:使用和User模式相同寄存器组的特权模式,用来运行特权级的操作系统任务。,在这7种工作模式中
27、,除了用户模式以外,其他6种处理器模式可以称为特权模式,在这些模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。在这6种特权模式中,除了系统模式外的其他5种特权模式又称为异常模式,每种异常都对应有自己的异常处理入口点。,2.4内部寄存器,ARM处理器共有37个寄存器,这些寄存器包括以下两类寄存器。(1)31个通用寄存器:包括程序计数器PC等,这些寄存器都是32位寄存器。(2)6个状态寄存器:状态寄存器也是32位的寄存器,但是目前只使用了其中的14位。,ARM 寄存器,寄存器组织概要,Usermoder0-r7,r15,andcpsr,r8,r9,r10,r11,r12,r1
28、3(sp),r14(lr),spsr,FIQ,User,r13(sp),r14(lr),spsr,IRQ,Usermoder0-r12,r15,andcpsr,r13(sp),r14(lr),spsr,Undef,Usermoder0-r12,r15,andcpsr,r13(sp),r14(lr),spsr,SVC,Usermoder0-r12,r15,andcpsr,r13(sp),r14(lr),spsr,Abort,Usermoder0-r12,r15,andcpsr,Thumb stateLow registers,Thumb stateHigh registers,Note:Syst
29、em模式使用user模式寄存器集,ARM 寄存器,ARM 有37个32-Bits长的寄存器.1 个用作PC(program counter)1个用作CPSR(current program status register)5个用作SPSR(saved program status registers)30 个通用寄存器,当前处理器的模式决定着哪组寄存器可操作.任何模式都可以存取:相应的r0-r12子集相应的 r13(the stack pointer,sp)and r14(the link register,lr)相应的 r15(the program counter,pc)相应的CPSR(c
30、urrent program status register,cpsr)特权模式(除system模式)还可以存取;相应的 spsr(saved program status register),程序状态寄存器,条件位:N=1-结果为负,0-结果为正或0Z=1-结果为0,0-结果不为0C=1-进位,0-借位V=1-结果溢出,0结果没溢出Q 位:仅ARM 5TE/J架构支持指示增强型DSP指令是否溢出J 位仅ARM 5TE/J架构支持J=1:处理器处于Jazelle状态,中断禁止位:I=1:禁止 IRQ.F=1:禁止 FIQ.T Bit仅ARM xT架构支持T=0:处理器处于 ARM 状态T=1:
31、处理器处于 Thumb 状态Mode位(处理器模式位):0b10000User0b10001FIQ0b10010IRQ0b10011Supervisor0b10111Abort0b11011Undefined0b11111System,当处理器执行在ARM状态:所有指令 32 bits 宽所有指令必须 word 对齐所以 pc值由bits 31:2决定,bits 1:0 未定义(所以指令不能halfword/byte对齐).,程序指针PC(r15),当处理器执行在Thumb状态:所有指令 16 bits 宽所有指令必须 halfword 对齐所以 pc值由bits 31:1决定,bits 0
32、未定义(所以指令不能 byte对齐).,2.5 ARM异常处理,异常通常定义为:处理器需要中止指令正常执行的任何情形并转向相应的处理,包括ARM内核产生复位,取指或存储器访问失败,遇到未定义指令,执行软件中断指令,或者出现外部中断等。大多数异常都对应一个软件的异常处理程序,也就是在异常发生时执行的软件程序。,251异常入口,ARM处理器的异常分为数据中止、快速中断请求、普通中断请求、预取指中止、软件中断、复位及未定义指令共7种。,1复位具有最高的优先级,是系统启动(或芯片复位)时调用的程序。复位程序对异常处理程序和系统进行初始化(包括配置储存器和Cache)。同时要保证在IRQ和FIQ中断允许
33、之前初始化外部中断源,避免在没有设置好相应的处理程序前产生中断。还要设置好各种处理器模式的堆栈指针。,2引起未定义指令异常:ARM 试图执行一条真正的未定义指令;ARM 遇到一条协处理器指令,可是系统中的协处理器硬件并不存在;ARM 遇到一条协处理器指令,系统中协处理器硬件也存在,可是ARM 不是在超级用户模式。解决方法:在处理程序中执行软协处理器仿真;禁止在非超级用户模式下操作;报告错误并退出。,3数据中止异常指示访问了无效的存储器地址,或者当前代码没有正确的数据访问权限。,4预取指中止由于处理器预取的指令地址不存在,或者地址无法访问,当被预取的指令执行时,发生预取指中止异常。,5.FIQ中
34、断的优先级比IRQ中断的优先级要高,且内核进入FIQ处理程序时,把FIQ和IRQ都禁止 6软中断(SWI)和未定义指令异常的优先级最低,共享同一优先级,两者不可能同时出现。,26 存储方式与存储器映射机制,ARM处理器地址空间大小为4G字节,这些字节的单元地址是一个无符号的32位数值,其取值范围为0232-1。各存储单元地址作为32位无符号数,可以进行常规的整数运算。当程序正常执行时,每执行一条ARM指令,当前指令计数器加4个字节;每执行一条Thumb指令,当前指令计数器加2个字节。,261数据存储格式,小端存储格式(Little-Endian),大端存储格式(Big-Endian),2.7
35、ARM流水线技术分析,ARM7流水线技术 与三级流水线运行情况分析 ARM9流水线技术与五级流水线互锁分析ARM10E 系列概述,流水线分析部分详细信息参考教材ARM嵌入式系统结构与编程第二章2.7节,第3章ARM指令集寻址方式,ARM指令寻址方式可分为四大类:数据处理指令寻址Load/Store指令的寻址批量Load/Store指令的寻址协处理指令寻址。,内容提要,31 ARM指令的编码格式32 数据处理指令寻址方式33 Load/Store指令寻址34 批量Load/Store指令寻址方式35 协处理器指令寻址方式,31 ARM指令的编码格式,一般编码格式指令条件码,一般编码格式,每条AR
36、M指令占有4个字节,其指令长度为32位,cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码,cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码,cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码,cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码,cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码,cond(bit31:28)指令执行的条件码;type(bit27:26)指令类型码,cond(bit31:28)4 指令执行的条
37、件码type(bit27:26)2指令类型码 opcode(bit24:21)4指令操作码;S(bit20)1决定指令的操作结果是否影响CPSR;Rn(bit19:16)4包含第一个操作数的寄存器编码;Rd(bit15:12)4目标寄存器编码;Operand2(bit11:0)12指令第二个操作数。,ARM汇编指令语法格式:S,指令条件码,0000 EQ 相等 Z=10001 NE 不相等 Z=00010 CS/HS 无符号大于等于 C=10011 CC/LO 无等号小于 C=00100 MI 负数 N=10101 PL 非负数 N=00110 VS 上溢出 V=10111 VC 没有上溢出
38、V=01000 HI 无符号数大于 C=1且Z=01001 LS 无符号小于等于 C=0或Z=11010 GE 有符号数大于等于 N=1且V=1 或 N=0且V=0 1011 LT 有符号数小于 N=1且V=0 或 N=0且V=11100 GT 有符号数大于 Z=0且N=V1101 LE 有符号数小于/等于 Z=1或N!=V1110 AL 无条件执行,3.2 数据处理指令寻址方式,数据处理指令第2操作数的构成方式具体寻址类型,数据处理指令第2操作数的构成方式,立即数方式每个立即数由一个8位的常数进行32位循环右移偶数位得到,其中循环右移的位数由一个4位二进制的两倍表示。即:=immed_8进行
39、32位循环右移(2*rotate_4)位,合法的立即数:0 xff=11111111B(循环右移32次得到)0 x104=000100000100(循环右移30次得到)不合法的立即数:0 x101=000100000001(超过8位)0 x102=000100000010(虽然是8位,但需循环右移31次得到),寄存器方式操作数即为寄存器的数值如:MOV R3,R2 ADD R0,R1,R2,寄存器移位方式操作数为寄存器的数值做相应的移位而得到。在ARM指令中移位操作包括逻辑左移LSL、逻辑右移LSR、算术左移ASL、算术右移ASR、循环右移ROR和带扩展的循环右移RRX(6种)其中:算术左移A
40、SL逻辑左移LSL,具体寻址类型,1第二操作数为立即数汇编语法格式:#,例:MOV R0,0 xfc0;R00 xfc00 xfc0=11111100 00 008位常数是:00111111经过循环右移26次得到111111000000,2第二操作数为寄存器汇编语法格式:,例:ADD R0,R1,R2;R0R1R2,3第二操作数为寄存器移位方式,且移位的位数为一个5位的立即数汇编语法格式:,#,4第二操作数为寄存器移位方式,且移位数值放在寄存器中汇编语法格式:,,5第二操作数为寄存器进行RRX移位得到汇编语法格式:,RRX,3.3 Load/Store指令寻址,Load/Store指令是对内存
41、进行加载/存储数据操作的指令,根据访问的数据格式的不同,将这类指令的寻址分为字、无符号字节的Load/Store指令寻址和半字、有符号字节Load/Store指令寻址两大类。Load指令从存储器中读出数据Store指令将数据存入存储器,数据处理指令第二操作数的构成方式是寻址部分重点掌握的内容,具本参考教材ARM嵌入式系统结构与编程第3章3.2节,地址计算方法,1寄存器间接寻址 寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令:LDR R0,R1;R0 R1 STR R0,R1;R1 R0,2.基址加变址寻址 前变址法:基地址寄存器中的值和地址偏移量先作
42、加减运算,生成的操作数作为内存访问的地址。后变址法:将基地址寄存器中的值直接作为内存访问的地址进行操作,内存访问完毕后基地址寄存器中的值和地址偏移量作加减运算,并更新基地址寄存器。,字、无符号字节寻址,汇编指令语法格式为:LDR BT,STR BT,1Addressing_mode中的偏移量为立即数前变址不回写形式:,#+/-前变址回写形式:,#+/-!后变址回写形式:,#+/-,偏移量为立即数的指令编码类型W P汇编语法格式0 1,#+/-1 0,#+/-1 1,#+/-!,2Addressing_mode中的偏移量为寄存器的值前变址不回写形式:,+/-前变址回写形式:,+/-!后变址回写形
43、式:,+/-,偏移量为寄存器的指令编码类型对应关系W P汇编语法格式0 1,+/-1 0,+/-1 1,+/-!,3Addressing_mode中的偏移量通过寄存器移位得到前变址不回写形式:,+/-,#shift_amount 前变址回写形式:,+/-,#shift_amount!后变址回写形式:,+/-,#shift_amount,偏移量为移位寄存器的指令编码类型对应关系W P汇编语法格式0 1,+/-,#shift_amount1 0,+/-,#shift_amount1 1,+/-,#shift_amount!,半字、有符号字节寻址,这类指令可用来加载有符号字节、加载有符号半字、加载/
44、存储无符号半字。Load/Store指令对半字、有符号字节操作指令编码格式如下:,加载有符号字节到寄存器:LDR SB,加载有符号半字到寄存器:LDR SH,加载无符号半字到寄存器:LDR H,存储无符号半字到内存:STR H,1Addressing_mode中的偏移量为立即数前变址不回写形式:,#+/-前变址回写形式:,#+/-!后变址回写形式:,#+/-,偏移量为立即数的指令编码类型W P汇编语法格式0 1,#+/-1 0,#+/-1 1,#+/-!,2Addressing_mode中的偏移量为寄存器的值前变址不回写形式:,+/-前变址回写形式:,+/-!后变址回写形式:,+/-,偏移量为
45、寄存器值的指令编码类型对应关系W P汇编语法格式0 1,+/-1 0,+/-1 1,+/-!,3.4 批量Load/Store指令寻址方式,ARM指令系统提供了批量Load/Store指令寻址方式,即通常所说的多寄存器寻址,也就是一次可以传送几个寄存器的值,允许一条指令最多传送16个寄存器。,编码格式,批量加载:LDM!,批量存储:STM!,register_list表示要加载或存储的寄存器列表,bit15:0可以表示16个寄存器,如果某位为1,则该位的位置作为寄存器的编号,此寄存器参预加载或存储。S用于恢复CPSR和强制用户位。当程序计数器PC包含在LDM指令的register_list中,
46、且S为1时,则当前模式的SPSR被拷贝到CPSR中,使处理器的程序返回和状态的恢复成为一个原子操作。如果register_list中不包含程序计数器PC,S为1则加载或存储的是用户模式下的寄存器组。,注意事项:*指令中寄存器和连续内存地址单元的对应关系:编号低的寄存器对应内存低地址单元,编号高的寄存器对应内存高地址单元。,内存操作,后增IA(Increment After):每次数据传送后地址加4;先增IB(Increment Before):每次数据传送前地址加4;后减DA(Decrement After):每次数据传送后地址减4;先减DB(Decrement Before):每次数据传送前
47、地址减4;,它们与指令编码中P、U的对应关如下表所示LDM/STM的地址变化方式addr_modePUDA00IA01DB10IB11,堆栈操作,满堆栈(Full Stack):当堆栈指针指向最后压入堆栈的数据时;空堆栈(Empty Stack):当堆栈指针指向下一个将要放入数据的空位置时;根据堆栈的生成方式,又可以分为递增堆栈和递减堆栈:递增堆栈(Ascending Stack):当堆栈由低地址向高地址生成时;递减堆栈(Decending Stack):当堆栈由高地址向低地址生成时;,块拷贝与栈操作的对应关系,3.5 协处理器指令寻址方式,协处理器加载/存储指令的寻址方式 协处理器数据处理指
48、令的寻址方式,L,其中:opcode为指令操作码;coproc为协处理器名称;addressing_mode为指令寻址模式。,1.内存地址索引格式前变址不回写形式:,#+/-*4 前变址回写形式:,#+/-*4!后变址回写形式:,#+/-*4,2内存地址非索引格式这种指令寻址汇编语法格式为,,第4章ARM指令集系统,ARM微处理器的指令集可以分为数据处理指令、跳转指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和杂类指令六大类。本章将分类介绍ARM指令语法格式、指令编码格式和ARM指令的详细功能。,内容提要,41 数据处理指令42 ARM分支指令43 加载/存储指令44 批
49、量加载/存储指令45 交换指令46 程序状态寄存器PSR访问指令47 协处理器操作指令48 异常产生指令,41 数据处理指令,基本数据处理指令乘法指令,基本数据处理指令,ARM基本的数据处理指令可以分为4类:数据传送指令、算术运算指令、逻辑运算指令和比较指令。ARM基本的数据处理指令汇编指令语法格式:S,1.数据传送指令MOV指令MOV指令的汇编语法格式为MOVcondS Rd,operand2将第二操作数operand2表示的数据传送到目标寄存器Rd中;如果指令包含后缀“S”,则根据操作结果或移位情况更新CPSR中的相应条件标志位。,P.52 例41MOV R1,#0 x80;R1 0 x8
50、0MOV PC,LR;PC LR,可以用作子程序返回指令(详细含义见P.20)MOVS R1,R2,LSL,#0 x02;R1 R24 同时影响CPSR中的标志位N,Z和C,MVN指令MNV指令的汇编语法格式为MVNcondS Rd,operand2将第二操作数operand2表示的数据按位取反后传送到目标寄存器Rd中;如果指令包含后缀“S”,则根据操作结果或移位情况更新CPSR中的相应条件标志位。,P.52 例42MVN R1,#0 xFF00;R1 0 xFFFF00FFMVNS R1,R2,LSL,#0 x02;R1(R24的反码),同时影响CPSR中的标志位N,Z和C,2算术运算指令(