嵌入式电子系统电子课件教案-第3讲-ARM处理器综述、开发与仿真.pptx_第1页
嵌入式电子系统电子课件教案-第3讲-ARM处理器综述、开发与仿真.pptx_第2页
嵌入式电子系统电子课件教案-第3讲-ARM处理器综述、开发与仿真.pptx_第3页
嵌入式电子系统电子课件教案-第3讲-ARM处理器综述、开发与仿真.pptx_第4页
嵌入式电子系统电子课件教案-第3讲-ARM处理器综述、开发与仿真.pptx_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

1,ARM处理器综述、开发及仿真(一),嵌入式电子系统,内容提要,1.本次课目标2.ARM简介3.ARM内核体系结构,2,1.本次课要达到的目标,了解ARM发展、体系结构基础知识。,3,内容提要,1.本次课目标2.ARM简介3.ARM内核体系结构,4,2.ARM简介,ARM的三种含义:一个公司的名称一类微处理器的通称一种技术的名称,5,ARM公司,ARM公司1990年11月成立于英国剑桥前身为Acorn计算机公司AdvanceRISCMachine(ARM)主要设计ARM系列RISC处理器内核授权ARM内核给生产和销售半导体的合作伙伴ARM公司不生产芯片IP(IntelligenceProperty),6,ARM公司把ARM作为知识产权IP(IntellectualProperty)推向嵌入式处理器市场,目前,已占有RISC处理器80左右的市场。ARM公司拥有广泛的全球技术合作伙伴(超过100个),其中包括领先的半导体系统厂商、实时操作系统(RTOS)开发商、电子设计自动化工具供应商、应用软件公司、芯片制造商和设计中心。,7,8,ARM应用领域,工业控制无线通信网络应用消费类电子产品成像和安全产品,9,内容提要,1.本次课目标2.ARM简介3.ARM内核体系结构,10,3.ARM内核体系结构,ARM作为嵌入式系统中的处理器,具有低电压、低功耗等特点;并具有开放和可扩性。事实上已成为嵌入式系统首选的处理器体系结构。,11,3.1RISC架构3.2AMBA总线架构3.3运行模式3.4指令集与工作状态3.5寄存器组,12,3.6异常与中断处理3.7存储管理3.8存储数据类型3.9存储格式3.10存储映射的I/O,3.1RISC架构,嵌入式微处理器分为:CISC(ComplexInstructionSetComputer)架构:大多数PC机均使用CISC微处理器,如Intel的X86;RISC(ReducedInstructionSetComputer)架构SiliconGraphics的MIPS(MicroprocessorwithoutInterlockedPipelineStages)技术ARM公司的AdvancedRISCMachines技术Hitachi公司的SuperH技术,13,RISC和CISC是目前设计制作微处理器的两种典型技术,它们都试图在体系结构、指令集、软硬件、编译时间和运行时间等诸多因素中做出平衡,以求达到高效的目的,只是采用的方法不同。,14,CISC架构1960年前后的主流架构新的指令不断引入,计算机体系结构变得复杂20%的指令经常使用,占80%程序代码量;80%的指令较少使用,占20%程序代码量不合理,15,RISC架构1979年加州大学伯克利分校提出目的是使计算机体系结构更合理,提高运算速度选取使用频繁的简单指令,固定指令长度,减少指令类型和寻址方式,以逻辑控制为主。,16,RISC和CISC的差异(1)指令系统RISC设计者把主要精力放在经常使用的指令上,使其具有简单高效的特点。对于不常用的功能,通常通过指令组合来实现。CISC指令系统丰富,有专用指令完成特定功能,处理特殊任务效率较高。,17,(2)存储器操作RISC对存储器操作指令少,控制简单化。CISC存储器操作指令多,操作直接。(3)程序RISC汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计。CISC汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。,18,(4)中断RISC在一条指令执行的适当地方可以响应中断;CISC在一条指令执行结束后响应中断。(5)CPURISC包含较少的单元电路,面积小,功耗低;CISC:包含丰富的电路单元,功能强、面积大、功耗大。,19,(6)设计周期RISC结构简单,布局紧凑,设计周期短,易于采用最新技术;CISC结构复杂,设计周期长。(7)易用性RISC结构简单,指令规整,性能容易把握,易学易用;CISC结构复杂,功能强大,实现特殊功能容易。,20,(8)应用范围RISC指令系统与特定的应用领域有关,更适于嵌入式系统应用;CISC更适合于通用计算机。,21,22,RISC架构的特点:采用固定长度的指令格式使用单周期指令,便于流水线操作执行使用很少的指令类型和寻址模式,基本寻址方式只有2、3种大量使用寄存器,数据处理指令只对寄存器操作,以提高指令的执行效率。,23,尽管RISC架构有很多优点,但是决不能认为RISC架构就能够替代CISC架构,两者是各有优势,而且界限并不明显。一些现代CPU外围采用CISC的外围,内部加入RISC的特性,如超长指令集CPU融合了RISC和CISC的优势,成为未来CPU发展方向之一。,24,3.2AMBA总线架构,典型的AMBA总线构架,25,AMBA(AdvancedMicrocontrollerBusArchitecture,高级微控制器总线结构),是ARM公司设计的一种用于高性能嵌入式系统的总线标准。它独立于处理器和制造工艺技术,增强了各种应用中的外设和系统宏单元的可重用性。AMBA总线规范是一个开放标准,可免费从ARM获得。,26,目前,AMBA拥有众多第三方支持,被ARM公司90%以上的合作伙伴采用,在基于ARM处理器内核的SoC设计中,已经成为广泛支持的现有互联标准之一。,27,AMBA总线规范2.0于1999年发布,该规范引入的先进高性能总线(AHB)是现阶段AMBA实现的主要形式。,28,目前AMBA总线规范的版本为3.0,它定义了三组不同的总线:高性能总线AHB(AdvancedHigh-performanceBus)高性能系统总线ASB(AdvancedSystemBus)高性能外设总线APB(AdvancedPeripheralBus),29,高性能系统总线(AHB或ASB)主要用以满足CPU和存储器之间的带宽要求。CPU、片内存储器和DMA等高速设备连接在系统总线上,而系统的大部分低速外设则连接在低带宽总线APB上。系统总线和外设总线之间用一个桥接器(AHB/ASB-APB-Bridge)连接。,30,在不必使用AHB的高速特性时,可选择ASB作为系统总线。ASB也支持CPU、片上存储器和片外处理器接口与低功耗外部宏单元之间的连接。,31,APB非常简单,适用于低速、低功耗的外设,只有一个总线主设备控制器,最大支持32位数据总线宽度,读、写数据总线分开。适合于作为传送速度较低的外围设备总线,驱动速度较慢的设备。,32,APB桥桥单元把系统总线传输转化为APB总线传输。,33,APB桥的功能锁存地址并在整个传输过程中保持其有效,直到数据传送完成;地址译码并且生成一个外部选择信号PSELx,在一次传输期间只有一个选择信号有效;读写数据驱动;触发使能信号PENABLE,使其有效。,34,35,AMBA总线系统,AHB/ASB连接CPU和存储器等高性能片内模块,支持流水线技术、突发传输、分离事务和仲裁器,APB连接低速外设不执行流水线操作外设工作在从模式,3.3运行模式,ARM体系结构支持7种处理器模式,分别为:用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。,36,37,38,用户模式:操作系统的Task一般以这种模式执行。UserMode是ARM唯一的非特权模式,这表示如果CPU处于这种模式下,很多指令将不能够执行,因此操作系统的资源得以保护。,39,除用户模式外,其它6种模式均为特权模式。ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。此外,特权模式可以自由的切换处理器模式,而用户模式不能直接切换到别的模式。,40,这五种模式称为异常模式。它们除了可以通过程序切换进入外,也可以由特定的异常进入。当特定的异常出现时,处理器进入相应的模式。每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。系统复位后进入管理模式。,41,用户和系统模式:这两种模式都不能由异常进入,而且它们使用完全相同的寄存器组。系统模式是特权模式,不受用户模式的限制。操作系统在该模式下访问用户模式的寄存器就比较方便,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。,模式切换是如何进行,(1)执行SWI或Reset指令。如果在User模式下执行SWI指令,CPU就进入Supervisor模式。当然,在其它模式下执行SWI指令,也会进入Supervisor模式,不过一般操作系统不会这么做。因为除了User模式是非特权模式下,其他模式都属于特权模式。执行SWI一般是为了访问系统资源,在特权模式下可以访问所有的系统资源。SWI指令一般用来用来为操作系统提供API接口。,42,(2)有外部中断发生。如果发生了外部中断,CPU就会进入IRQ或FIQ模式,具体是哪种模式,得看外部的中断源是接到CPU的那个Pin。(3)CPU执行过程中产生异常。最典型的异常是由于MMU保护所引起的内存访问异常,此时CPU会切换到Abort模式。如果是无效指令,则会进入Undefined模式。,43,有一种模式是CPU无法自动进入的,这种模式就是System模式。要进入System模式必须由程序员自己编写指令来实现。在任何特权模式下改变CPSR的MODE域为System模式所对应得数字即可。进入System模式一般是为了利用“System模式”和“User模式”下的寄存器是一样的。因此一般操作系统在通过SWI进入Supervisor模式后,做一些简单处理后,就进入System模式。,44,3.4指令集与工作状态,ARM支持2种指令集:32位ARM指令集16位Thumb指令集,45,Thumb指令集具有灵活、小巧的特点,ARM指令集支持ARM核所有的特性,具有高效、快速的特点,ARM指令集效率高,但是代码密度低;而Thumb指令集具有较高的代码密度,却仍然保持ARM的大多数性能上的优势,它是ARM指令集的子集。所有的ARM指令都是可以有条件执行的,而Thumb指令仅有一条指令具备条件执行功能。ARM程序和Thumb程序可相互调用,相互之间的状态切换开销几乎为零。,46,开发过程中,根据需要选择32位的ARM指令集,或者是16位的Thumb指令集,或者是两者混合使用。对应指令集,ARM处理器有2种工作状态:ARM状态:32位,这种状态下执行的是字方式的ARM指令;Thumb状态:16位,这种状态下执行半字方式的Thumb指令。注意:两个状态之间的切换并不影响处理器模式或寄存器内容。,47,3.5寄存器组,ARM处理器内部有37个32位寄存器。在不同的工作模式和处理器状态下,程序可以访问的寄存器也不尽相同。,48,49,ARM状态各模式下的寄存器,所有的37个寄存器,分成两大类:31个通用32位寄存器;6个状态寄存器。,50,ARM状态各模式下可以访问的寄存器,51,一般的通用寄存器,寄存器R0R13为保存数据或地址值的通用寄存器。,52,一般的通用寄存器,其中R0R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。,53,一般的通用寄存器,寄存器R8R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式。,54,一般的通用寄存器,寄存器R8R12有两个分组的物理寄存器。一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。这样在发生FIQ中断后,可以加速FIQ的处理速度。,55,一般的通用寄存器,寄存器R13、R14分别有6个分组的物理寄存器。一个用于用户和系统模式,其余5个分别用于5种异常模式。,56,堆栈指针寄存器R13(SP),寄存器R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。而在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。,57,链接寄存器R14(LR),R14为链接寄存器(LR),在结构上有两个特殊功能:在每种模式下,模式自身的R14版本用于保存子程序返回地址;当发生异常时,将R14对应的异常模式版本设置为异常返回地址。,58,R14寄存器与子程序调用,MOVPC,LR,R14(地址A),1.程序A执行过程中调用程序B;,操作流程,2.程序跳转至标号Lable,执行程序B。同时硬件将“BLLable”指令的下一条指令所在地址存入R14;,3.程序B执行最后,将R14寄存器的内容放入PC,返回程序A;,R14寄存器与异常发生异常发生时,程序要跳转至异常服务程序,对返回地址的处理与子程序调用类似,都是由硬件完成的。,59,R14寄存器注意要点当发生异常嵌套时,这些异常之间可能会发生冲突。例如:如果用户在用户模式下执行程序时发生了IRQ中断,用户模式寄存器不会被破坏。但是如果允许在IRQ模式下的中断处理程序重新使能IRQ中断,并且发生了嵌套的IRQ中断时,外部中断处理程序保存在R14_irq中的任何值都将被嵌套中断的返回地址所覆盖。,60,61,R14寄存器注意要点,a,return,地址A,1.执行用户模式下的程序;,2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;,3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;,未被破坏,62,R14寄存器注意要点,a,地址A,1.执行用户模式下的程序;,2.发生IRQ中断,硬件将某个地址存入IRQ模式下的R14_irq寄存器,用户模式下的R14没有被破坏;,3.IRQ服务程序A执行完毕,将R14_irq寄存器的内容减去某个常量后存入PC,返回之前被中断的程序;,未被破坏,a,return,地址B,4.如果在IRQ处理程序中打开IRQ中断,并且再次发生IRQ中断,或者调用子程序;,5.硬件将返回地址保存在R14_irq寄存器中,原来保存的返回地址将被覆盖,造成错误;,被破坏,6.在程序B返回到程序A,然后再返回到用户模式下被中断的程序时,发生错误,将不能正确返回;,return,return,解决办法是确保R14的对应版本在发生中断嵌套时不再保存任何有意义的值(将R14入栈),或者切换到其它处理器模式下。,63,程序计数器R15(PC),寄存器R15为程序计数器(PC),它指向正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。,正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。,64,65,程序状态寄存器CPSR,寄存器CPSR为程序状态寄存器,在异常模式中,另外一个寄存器“备份程序状态保存寄存器(SPSR)”可以被访问。每种异常都有自己的SPSR,在因为异常事件而进入异常时它保存CPSR的当前值,异常退出时可通过它恢复CPSR。,Thumb状态寄存器Thumb状态寄存器集是ARM状态集的子集,可以直接访问的寄存器为:8个通用寄存器R0R7;程序计数器(PC);堆栈指针(SP);链接寄存器(LR);有条件访问程序状态寄存器(CPSR)。,66,67,Thumb状态各模式下的寄存器,注意:括号内为ATPCS(ARM-ThumbProcedureCallStandard)中寄存器的命名,ADS1.2的汇编程序直接支持这些名称,但注意a1a4,v1v4必须用小写。,68,Thumb状态下的通用寄存器,寄存器R0R7为保存数据或地址值的通用寄存器。对于任何处理器模式,它们中的每一个都对应于相同的32为物理寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊的用途,并且可用于任何使用通用寄存器的指令。,69,Thumb状态下的堆栈指针寄存器(SP),堆栈指针SP对应ARM状态的寄存器R13。每个异常模式都有其自身的SP分组版本,SP通常指向各异常模式所专用的堆栈。注意:在发生异常时,处理器自动进入ARM状态。,70,Thumb状态下的链接寄存器R14(LR),链接寄存器LR对应ARM状态寄存器R14,在结构上有两个特殊功能。注意:在发生异常时,处理器自动进入ARM状态。,ARM状态和Thumb状态之间寄存器的关系Thumb状态R0R7与ARM状态R0R7相同;Thumb状态CPSR和SPSR与ARM状态CPSR和SPSR相同;Thumb状态SP对应ARM状态R13;Thumb状态LR对应ARM状态R14;Thumb状态PC对应ARM状态PC(R15)。,71,72,Thumb状态寄存器到Arm状态寄存器上的对应关系,低寄存器,高寄存器,在Thumb状态中访问高寄存器在Thumb状态中,高寄存器(R8R15)不是标准寄存器集的一部分。汇编程序对它们的访问受到限制,但可以将它们用于快速暂存。可以使用MOV、CMP和ADD指令对高寄存器操作。,73,程序状态寄存器ARM内核包含1个CPSR(currentprogramstatusregister,当前程序状态寄存器)和5个备份的CPSRSPSR。CPSR:程序状态寄存器,CPSR在用户级编程时用于存储条件码。CPSR包含条件码标志,中断禁止位,当前处理器模式以及其他状态和控制信息。SPSR(savedprogramstatusregister):程序状态保存寄存器。SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。,74,每一种处理器模式下都有一个专用SPSR。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSR。用户模式和系统模式不是异常中断模式,所以没有SPSR。当用户在用户模式或系统模式访问SPSR,将产生不可预知的后果。,75,CPSR反映了当前处理器的状态,其包含:4个条件代码标志(负(N)、零(Z)、进位(C)和溢出(V));2个中断禁止位,分别控制一种类型的中断;5个对当前处理器模式进行编码的位;1个用于指示当前执行指令(ARM还是Thumb)的位。,76,77,条件代码标志,保留,控制位,溢出标志,进位或借位扩展,零,负或小于,IRQ禁止,FIQ禁止,状态位,模式位,N,Z,C,V,I,T,F,78,条件代码标志及其含义N(Negative)运算结果的最高位反映在该标志位。对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;Z(Zero)指令结果为0时Z=1(通常表示比较结果“相等”),否则Z=0;,C(Carry)当进行加法运算(包括CMN指令),并且最高位产生进位时C=1,否则C=0。当进行减法运算(包括CMP指令),并且最高位产生借位时C=0,否则C=1。对于结合移位操作的非加法/减法指令,C为从最高位最后移出的值,其它指令C通常不变;V(oVerflow)当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。,79,80,控制位CPSR的最低8位为控制位,当发生异常时,这些位被硬件改变。当处理器处于一个特权模式时,可用软件操作这些位。中断禁止位;T位;(状态控制位)模式位。,中断禁止位包括I和F位:当I位为1时,IRQ中断被禁止;当F位为1时,FIQ中断被禁止。T位反映了正在操作的状态:当T位为1时,处理器正在Thumb状态下运行;当T位为0时,处理器正在ARM状态下运行。,81,模式位包括M4、M3、M2、M1和M0,这些位可以控制处理器的操作模式。注意:不是所有模式位的组合都定义了有效的处理器模式,如果使用了错误的设置,将引起一个无法恢复的错误。,82,83,CPSR模式位设置表,84,保留位CPSR中的保留位被保留将来使用。为了提高程序的可移植性,当改变CPSR标志和控制位时,不要改变这些保留位。另外,请确保程序的运行不受保留位的值影响,因为将来的处理器可能会将这些位设置为1或者0。,3.6异常与中断处理,正常的程序流程发生暂停时,称之为异常(Exception)。在处理异常之前,必须保留当前处理器的状态,这样处理完异常后,当前程序才能继续执行。ARM内核允许多个异常同时发生,按照固定的优先级顺序进行处理。,85,86,87,异常向量表,88,注:表中的I和F表示不对该位有影响,保留原来的值,异常响应过程1.在相应的LR中保存下一条指令的地址,当异常入口来自:ARM状态,那么将当前指令地址加4或加8复制(取决于异常的类型)到LR中;为Thumb状态,那么将当前PC的偏移量复制到LR中。,89,2.将CPSR复制到适当的SPSR中;3.将CPSR模式位强制设置为与异常类型相对应的值;4.强制PC从相关的异常向量处取指。,90,内核在中断异常时置位中断禁止标志,这样可以防止不受控制的异常嵌套。注:异常总是在ARM状态中进行处理。当处理器处于Thumb状态时发生了异常,在异常向量地址装入PC时,会自动切换到ARM状态。,91,当异常结束时,异常处理程序必须:1.将LR中的值减去偏移量后存入PC,偏移量根据异常的类型而有所不同;2.将SPSR的值复制回CPSR;3.清零在入口置位的中断禁止标志。注:恢复CPSR的动作会将T、F和I位自动恢复为异常发生前的值。,92,93,图示进入异常过程,1.程序在系统模式下运行用户程序,假定当前处理器状态为Thumb状态、允许IRQ中断;,2.用户程序运行时发生IRQ中断,硬件完成以下动作:,置位I位(禁止IRQ中断)清零T位(进入ARM状态)设置MOD位,切换处理器模式至IR

温馨提示

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

评论

0/150

提交评论