欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    arm嵌入式原理技术及应用ch.ppt

    • 资源ID:5415674       资源大小:1.07MB        全文页数:130页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    arm嵌入式原理技术及应用ch.ppt

    2023/7/5,2010.12,陈 赜,ARM嵌入式技术原理与应用,2023/7/5,第二章 ARM体系结构及编程模型,2023/7/5,了解ARM技术的应用领域 熟悉ARM微处理器系列的基本类型和主要特点 理解ARM微处理器的工作状态和工作模式 掌握ARM微处理器的存储器系统和寄存器组织以及异常中断的应用。,2023/7/5,2.1 ARM微处理器的特点,ARM(Advanced RISC Machines,ARM)既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。,2023/7/5,ARM公司于1990年11月在英国剑桥成立,前身为Acorn计算机公司。ARM公司是全球领先的16/32位嵌入式RISC微处理器解决方案供应商。ARM公司是知识产权(IP)公司,本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。,2023/7/5,目前,全世界有几十家著名的半导体公司都使用ARM公司的授权,其中包括MOTOROLA、IBM、Intel、LG、SONY、NEC、ATMEL等,从而保证了大量的开发工具和丰富的第三方资源,它们共同保证了基于ARM处理器核的设计可以很快投入市场。ARM公司已成为移动通信、手持设备、多媒体数字消费嵌入式解决方案的RISC标准。,2023/7/5,采用RISC指令集,低功耗、低成本、高性能,使用大量的寄存器,ARM/THUMB指令支持,三/五级流水线,ARM微处理器特点:,2023/7/5,采用RISC架构的ARM处理器一般具有如下特点:,固定长度的指令格式,指令归整、简单、基 本寻址方式有23种;,使用单周期指令,便于流水线操作执行;,大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率。,2023/7/5,ARM 处理器共有37个寄存器,被分为若干个组,这些寄存器包括:,31个通用寄存器,包括程序计数器(PC 指针),均为32位的寄存器;,6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位。,2023/7/5,ARM微处理器支持两种指令集 ARM指令集和Thumb指令集,ARM指令为32位的长度,Thumb指令为16位长度 Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省3040以上的存储空间,同时具备32位代码的所有优点。,2023/7/5,除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗。,所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。,可用加载/存储指令批量传输数据,以提高数据的传输效率。,可在一条数据处理指令中同时完成逻辑处理和移位处理。,在循环处理中使用地址的自动增减来提高运行效率。,2023/7/5,2.2 ARM微处理器系列介绍,1.ARM7系列 ARM7采用冯诺依曼(Von-Neumann)结构,数据存储器和程序存储器使用同一存储空间,用相同的指令访问。此结构也被大多数计算机所采用。ARM7为三级流水线结构(取指,译码,执行),平均功耗为0.6mW/MHz,时钟速度为66MHz,每条指令平均执行1.9个时钟周期。,2023/7/5,ARM7系列微处理器包括如下几种类型的核:ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属低端ARM处理器核。TDMI的基本含义为(对其它系列也适用):T:支持16为压缩指令集Thumb,称为T变种D:支持片上Debug,称为D变种M:内嵌硬件乘法器 Multiplier,称为M变种I:嵌入式ICE,支持片上断点和调试,称为I变种,2023/7/5,表2-1 ARM7系列产品,2023/7/5,2.ARM9系列ARM7采用的冯诺依曼 Von Neumann结构,取指令和取操作数都是通过一条总线分时进行,这样,在高速运算时,不但不能同时取指令和取操作数,而且还会造成传输通道上的瓶颈现象。ARM9采用哈佛(Harvard)结构,程序存储器与数据存储器分开,提供了较大的存储器带宽。同时,大多数DSP都采用此结构。,2023/7/5,ARM9为五级流水(取指,译码,执行,缓冲/数据,回写),平均功耗为0.7mW/MHz。时钟速度为120MHz-200MHz,每条指令平均执行1.5个时钟周期。ARM9系列微处理器包含ARM920T、ARM922T和ARM940T三种类型,主要应用在手持产品、视频电话、PDA、数字消费产品、机顶盒、家用网关等方面。,2023/7/5,表2-2 ARM9系列产品,2023/7/5,3.ARM9E系列 ARM9E系列微处理器包括如下4种类型的核:ARM926EJ-S、ARM946E-S和ARM966E-S,见表2-3。,2023/7/5,表2-3 ARM9E系列产品,2023/7/5,ARM9E系列是一种包含有微控制器、DSP、Java功能的综合处理器,强化了数字信号处理能力,适用于需要DSP和微控制器结合使用的情况,并且把Thumb技术和DSP都扩展到了ARM指令中,并且具有EmbededICE-RT逻辑,更好地适应了实时系统开发的需要。同时ARM9E使用了Jazelle增强技术,该技术支持一种新的Java操作状态,在硬件中执行Java字节码。,2023/7/5,4.ARM10系列 ARM10系列微处理器包括:ARM1020E和ARM1022E等型号,见表2-4。ARM10系列采用了新的体系结构,其核心为使用了向量浮点单元,有强大的浮点运算能力,并且增加了Cache容量和总线宽度,并且具有低功耗的特点。ARM10系列微处理器主要应用于下一代无线设备、视频消费品等。,2023/7/5,表2-4 ARM10系列产品,2023/7/5,5.ARMStrong/Xscale系列 StrongARM是采用ARM体系结构高度集成的32位RISC微处理器。它融合了Intrl公司的设计技术,以及ARM体系结构的电源效率,其体系结构在软件上兼容ARMv4,同时又具有Intel技术优点。,2023/7/5,StrongARM是Intrl公司为手持消费类电子和移动计算与通信设备生产的嵌入式处理器。采用StrongARM架构的处理器有:SA-1、SA-110、SA-1100、SA1110和IXP1200。Xscale是基于ARMv5体系结构的解决方案,是一款性能全、性价比高、功耗低的处理器,支持16位的Thumb和DSP指令集,主要应用于数字移动电话、个人数字助理和网络产品等。Xscale架构的处理器有:PXA250、PXA255和PXA270等。,2023/7/5,6.ARM11系列 ARM11系列微处理器内核最新内核:ARM1156T2-S内核、ARM1156T2F-S内核、ARM1176JZ-S内核和ARM11JZF-S内核。,2023/7/5,7.SecurCore系列 SecurCore系列微处理器除了具有ARM体系结构各种主要特点外,还在系统安全方面具有如下的特点:(1)带有灵活的保护单元,确保操作系统和应用数据的安全;(2)采用软内核技术,防止外部对其进行扫描探测;(3)可集成用户自己的安全特性和其他协处理器。,2023/7/5,8.ARM Cortex 系列 ARM Cortex发布于2005年,ARM Cortex系列的三款产品全都集成了Thumb-2 指令集,可满足各种不同的日益增长的市场需求。ARM Cortex系列的三款处理器:1)ARM Cortex-A 系列:针对复杂操作系统以及用户应用设计的应用处理器;2)ARM Cortex-R系列:实时系统专用嵌入式处理器;3)ARM Cortex-M系列:针对微控制器和低成本应用专门优化的深嵌入式处理器。,2023/7/5,9.基于32位ARM核微处理器基于32位ARM核微处理器的主要公司有:1)ST(意法半导体)公司32位ARM核微处理器。主要有:STR7、STR9和STM32系列。2)Freescale公司32位微控制器与处理器,主要是MCF52xx系列。3)OKI公司 32位ARM7DMI核微处理器,主要是ML67xx系列。4)ATMEL 公司微控制器,主要是AT91FR、AT91M、AT91RM、AT91SAM等系列。,2023/7/5,5)PHILIPS飞利浦/NXP恩智浦 ARM单片机,主要是LPC21xx,LPC22xx等系列。6)Intel 公司的Strong ARM 系列和XScale 系列。7)SamSung 公司的ARM系列,主要有S3C44B0X、S3C2410X、S3C2440X、S3C5410X等系列。8)TI公司的ARM 处理器主要是OMAP、C5470/C5471等系列。9)Cirrus Logic公司的ARM 处理器系列,主要是EP9xxx等系列。,2023/7/5,ARM系列产品命名规则,2023/7/5,1.ARM体系结构的特点,总体思想 在不牺牲性能的同时,尽量简化处理器。同时从体系结构的层面上灵活支持处理器扩展。这种简化和开放的思路使得ARM处理器采用了很简单的结构来实现。,2.3 ARM体系结构,2023/7/5,ARM处理器是最先进的 目前,ARM32位体系结构被公认为业界领先的32位嵌入式RISC微处理器核,所有ARM处理器都共享这一体系结构。,2023/7/5,1)RISC型处理器结构ARM采用RISC结构,在简化处理器结构,减少复杂功能指令的同时,提高了处理器的速度。考虑到处理器与存储器打交道的指令执行时间远远大于在寄存器内操作的指令执行时间,RISC型处理器采用了Load/Store(加载/存储)结构,即只有Load/Store指令可与存储器打交道,其余指令都不允许进行存储器操作。,2023/7/5,为了进一步提高指令和数据的存取速度,RISC型处理器增加了指令高速缓冲I-Cache和数据高速缓冲D-Cache及多处理器结构,使指令的操作尽可能在寄存器之间进行。,2023/7/5,只能对寄存器执行算术和逻辑操作,Load/Store体系结构,2023/7/5,2)Thumb指令集虽然ARM处理器本身是32位设计,但考虑到RISC型处理器的指令功能相对较弱,新型的ARM体系结构中定义了16位的Thumb指令集。Thumb指令集比通常的8/16位CISC/RISC处理器有更好的代码密度,而芯片面积只增加6%,却可以使程序存储器更小。,2023/7/5,3)多处理器状态模式ARM体系结构定义了7种处理器模式:用户、快中断、中断、管理、终止、未定义和系统模式,大大提高了ARM处理器的效率。4)两种处理器工作状态ARM状态(执行32位ARM指令)Thumb状态。(执行16位Thumb指令),2023/7/5,5)嵌入式在线仿真调试ARM体系结构的处理器芯片都嵌入了在线仿真ICE-RT逻辑,便于通过JTAG来仿真调试芯片,省去了价格昂贵的在线仿真器。,2023/7/5,6)灵活方便的接口ARM体系结构具有协处理器接口,允许接16个协处理器。既可以使基本的ARM处理器内核尽可能小,方便地扩充ARM指令集,也可以通过未定义指令来支持协处理器的软件仿真。7)低电压功耗的设计考虑到ARM处理器主要用于手持式嵌入式系统中,在设计中就十分注意功耗的设计。,2023/7/5,2023/7/5,2.ARM9体系结构比较最常用的是ARM920T内核,ARM920T结构主要部分有7部分构成:ARM9TDMI内核CPU MMU Cache 协处理器接口 运行跟踪信息接口(ETM)JTAG调试接口 总线接口,2023/7/5,ARM9TDMI体系结构框图,2023/7/5,ARM920T体系结构框图,2023/7/5,ARM920T体系结构框图,2023/7/5,ARM9TDMI核性能,0.25微米的ARM9TDMI核在执行32位ARM代码时的特性综述于下表3。核的版图示于下页图。,2023/7/5,2.4 ARM流水线结构,1.流水线技术概述 流水线方式 是把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程同时进行。由于这种工作方式与工厂中的生产流水线十分相似,因此,把它称为流水线工作方式。,2023/7/5,处理器按照一系列步骤来执行每一条指令。典型的步骤为:1)从存储器读取指令(fetch)2)译码以鉴别它是哪一类指令(dec)3)从寄存器组取得所需的操作数(reg)4)将操作数进行组合以得到结果或存储器地址(exe)5)如果需要,则访问存储器存取数据(mem)6)将结果回写到寄存器组(res),2023/7/5,2.ARM7的三级流水线1取指:从程序存储器中取指令,放入指令流水线。(占用存储器访问操作)2译码:指令译码。(占用译码逻辑)3执行:执行指令/读写REG。(占用ALU及数据路径),2023/7/5,下图为3个单周期指令在流水线上的情况。一条指令有3个时钟周期的执行时间,但吞吐量是每个周期1条指令。,t,123,PC值如何计算?,PC 指向处于读取级的指令地址,而不是处于执行级的指令地址PC=当前执行指令地址+8,ARM单周期指令的3级流水线操作,2023/7/5,优秀的流水线结构,2023/7/5,3.ARM9TDMI的五级流水线,ARM7TDMI与ARM9TDMI流水线比较,2023/7/5,4.ARM7和ARM9流水线比较 5级流水线的ARM9内核是哈佛架构,拥有独立的指令和数据总线;指令和数据的读取可以在同一周期进行;3级流水的ARM7内核是指令和数据总线复用的冯.诺依曼架构,指令和数据的读取不能在同一周期进行;5级流水线设计把寄存器读取、逻辑运算、结果回写分散在不同的流水当中,每一级流水的操作简洁,提升了处理器的主频。,2023/7/5,随着流水线深度(级数)的增加,每一段的工作量被削减了,这使得处理器可以工作在更高的频率,同时改进了处理器的性能;负面作用是增加了系统的延时,即内核在执行一条指令前,需要更多的周期来填充流水线;流水线级数的增加也意味着在某些段之间会产生数据相关。,2023/7/5,ARM处理器性能比较,2023/7/5,25 ARM总线结构,ARM微控制器使用的是AMBA总线体系结构AMBA(Advanced Microcontroller Bus Architecture)是ARM公司公布的总线标准,先进的AMBA规范定义了三种总线:,2023/7/5,AHB总线(Advanced High-performance Bus):用于连接高性能系统模块。它支持突发数据传输方式及单个数据传输方式,所有时序 参考同一个时钟沿。ASB总线(Advanced System Bus):用于连接高性能系统模块,它支持突发数据传输模式。APB总线(Advance Peripheral Bus):是一个简单接口支持低性能的外围接口。,2023/7/5,从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:,ARM状态,此时处理器执行32位的字对齐的ARM指令;,Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。,ARM处理器有两种工作状态和7种工作模式。,26 ARM微处理器的工作状态与模式,1.ARM处理器的两种工作状态,2023/7/5,THUMB指令是ARM指令的子集,可以相互调用,只要遵循一定的调用规则,Thumb指令与ARM指令的时间效率和空间效率关系为:,存储空间约为ARM代码的6070,指令数比ARM代码多约3040,存储器为32位时ARM代码比Thumb代码快约40,存储器为16位时Thumb比ARM代码快约4050,使用Thumb代码,存储器的功耗会降低约30,2023/7/5,ARM指令集和Thumb指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,,在开始执行代码时,应该处于ARM状态。,状态切换方法,两种状态可以切换 程序执行过程中,通过执行带状态切换的分支指令BX,随时在两种工作状态之间进行切换。并且,处理器工作状态的转变,并不影响处理器的工作模式和相应寄存器中的内容。,2023/7/5,进入Thumb状态,当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。此为主动切换。,当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。此为自动切换。,2023/7/5,切换到ARM状态,在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。,有两种情况ARM处理器自动切换到Thumb状态。,(1)执行BX指令,当操作数寄存器的位0为0时,则微处理器从Thumb状态切换到ARM状态。(2)当处理器在Thumb状态时发生异常(如IRQ、FIQ、Undef等),则处理器从Thumb状态自动切换到ARM状态进行异常处理,2023/7/5,例:状态切换程序;从ARM状态切换到Thumb状态LDRR0,=Lable+1BXR0;从Thumb状态切换到ARM状态LDRR0,=LableBXR0注意:ARM和Thumb之间状态的切换不影响处理器的模式或寄存器的内容。ARM处理器在开始执行代码时,只能处于ARM状态。,2023/7/5,1)处理器模式,用户模式(usr):ARM处理器正常的程序执行状态,大部分任务执行在这种模式。,快速中断模式(fiq):当一个高优先级(fast)中断产生时将会进入这种模式,用于高速数据传输或通道处理,外部中断模式(irq):当一个低优先级(normal)中断产生时将会进入这种模式。用于通用的中断处理,2.ARM处理器的工作模式,2023/7/5,管理模式(svc):当复位或软中断指令执行时将会进入这种模式,供操作系统使用的一种保护模式。,中止模式(abt):当存取异常时将会进入这种模式,用于虚拟存储及存储保护。,系统模式(sys):供需要访问系统资源的操作系统任务使用,运行具有特权的操作系统任务,未定义模式(und):当执行未定义指令时会进入这种模式,软件仿真硬件协处理器。,2023/7/5,2)模式特点(1)用户模式特点:应用程序不能够访问受操作系统保护的系统资源。应用程序不能进行处理器模式的切换。(2)系统模式特点:不属于异常模式,不是通过异常进入的。系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行模式的切换。它主要供操作系统使用。,2023/7/5,(3)特权模式及其特点:特权模式:除用户模式之外的工作模式又称为特权模式特点:应用程序可以访问所有的系统资源可以任意地进行处理器模式的切换,2023/7/5,(4)异常模式及其特点:异常模式:除用户模式、系统模式之外的五种模式称为异常模式。特点:以各自的中断或异常方式进入,并且处理各自的中断或异常。,2023/7/5,对管理模式(svc)进入方式和处理内容有:系统上电复位后进入管理模式,运行系统初始化程序,如中断允许/禁止,主时钟设置,SDRAM配置,各个功能模块初始化等。当执行软件中断指令SWI时,进入管理模式。,2023/7/5,3)模式切换,处理器模式可以通过软件进行切换,也可以通过外部中断或者异常处理过程进行切换。,当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式下都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器不被破坏。,2023/7/5,处理器模式的切换方式:软件控制进行切换。通过外部中断和异常进行切换处理器启动时的模式转换图,管理模式(Supervisor),多种特权模式变化,用户程序的运行模式,复位后的缺省模式,主要完成各模式的堆栈设置,注意不要进入用户模式,一般为用户模式User,2023/7/5,系统模式并不是通过异常进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换。,2023/7/5,系统模式它主要供操作系统任务使用 通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏。,2023/7/5,2.7 ARM体系结构的存储器格式1.ARM处理器支持以下6种数据类型:8位有符号和无符号字节(Byte)。16位有符号和无符号半字(Halfword)它们必须以两字节的边界对齐(半字对齐)。32位有符号和无符号字(word)它们必须以4字节的边界对齐(字对齐)。,2023/7/5,字对齐:字单元地址的低两位 A1A0=0b00。即地址末位为0 x0,0 x4,0 x8,0 xc。半字对齐:半字单元地址的最低位 A0=0b0(地址末位为0 x0,0 x2,0 x4,0 x6,0 x8,0 xa,0 xc,0 xe)。,2023/7/5,对于指令,ARM指令系统分为32位ARM指令集和16位的Thumb指令集,在存储时分别以32位和16位的两种不同长度存储。对于数据,ARM支持对32位字数据,16位半字数据,8位字节数据操作。因此数据存储器可以存储32位,16位,8位三种不同长度数据。,2023/7/5,在ARM内部,所有操作都面向32位的操作数,只有数据传送指令支持较短的字节和半字的数据类型。当从存储器读入一个字节或半字时,根据其数据类型将其扩展到32位。,2023/7/5,2.ARM存储器组织 ARM存储器以8位为一个单元存储数据(一个字节),每个存储单元分配一个存储地址。ARM将存储器看作是从零地址开始的字节的线性组合。作为32位的微处理器,ARM体系结构所支持的最大寻址空间为4GB(232字节)。,2023/7/5,从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。32位的字数据要使用4个地址单元,16位半数据要使用2个地址单元。这样,就存在一个所存储的字或半字数据的排列顺序问题。ARM体系结构可以用两种方法存储字数据,称为大端格式和小端格式。,2023/7/5,大端格式(big-endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端格式(low-endian):与大端存储格式相反。低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。缺省设置为小端格式。,2.7 ARM存储器格式,2023/7/5,3.ARM存储器层次 微处理器希望存储器容量大、速度快。但容量大者速度慢;速度快者容量小。解决方法是构建一个由多级存储器组成的复合存储器系统。两级存储器方案一般包括:一个容量小但速度快的从存储器一个容量大但速度慢的主存储器宏观上看这个存储器系统像一个即大又快的存储器。这个容量小但速度快的元件是Cache,它自动地保存处理器经常用到的指令和数据的拷贝。,2023/7/5,多级存储器系统,寄存器组 访问时间约为几个ns。片上RAM 与片外RAM比速度快、功耗小、容量小。读写时间约为几个ns。片上Cache 832KB,访问时间约为十几个ns。主存储器 一般为几兆字节1GB 的动态存 储器,访问时间约 50ns。,CPU,寄存器组,片上RAM,片上Cache,主存储器,硬盘,2023/7/5,2.8寄存器组织,ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14R0、程序计数器PC、一个或两个状态寄存器都是可访问的。,2023/7/5,1.ARM状态下的寄存器组织,通用寄存器:通用寄存器包括R0R15,可以分为三类:,未分组寄存器R0R7,分组寄存器R8R14,程序计数器PC(R15),2023/7/5,ARM状态下的寄存器组织,2023/7/5,未分组寄存器R0R7,在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。,2023/7/5,分组寄存器R8R12,每次所访问的物理寄存器与处理器当前的运行模式有关,R8R12:每个寄存器对应两个不同的物理寄存器,当使用fiq模式时,访问寄存器R8_fiqR12_fiq;,当使用除fiq模式以外的其他模式时,访问寄存器R8_usrR12_usr。,2023/7/5,分组寄存器R13R14,R13、R14:每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式,采用以下的记号来区分不同的物理寄存器:,R13_,R14_,mode为以下几种之一:usr、fiq、irq、svc、abt、und。,2023/7/5,堆栈指针R13,R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。,在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。,由于处理器的每种运行模式均有自己独立的物理寄存器R13,在初始化部分,都要初始化每种模式下的R13,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复。,2023/7/5,子程序连接寄存器R14,R14也称作子程序连接寄存器或连接寄存器LR。当执行BL子程序调用指令时,可以从R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。,在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。,BLSUB1SUB1:STMFDSP!,LR/*将R14存入堆栈*/LDMFDSP!,PC/*完成子程序返回*/,2023/7/5,程序计数器PC(R15),ARM状态下,位1:0为0,位31:2用于保存PC;,Thumb状态下,位0为0,位31:1用于保存PC;,R15虽然也可用作通用寄存器,但一般不这么使用,因为对R15的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。,由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节。,2023/7/5,程序状态寄存器(CPSR/SPSR),寄存器R16用作CPSR(当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。,每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(备份的程序状态寄存器),异常发生时,SPSR用于保存CPSR的值,从异常退出时则可由SPSR来恢复CPSR。,2023/7/5,由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。,2023/7/5,Thumb状态下的寄存器组织,Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。,同样,每一种特权模式下都有一组SP、LR和SPSR。,2023/7/5,Thumb状态下的寄存器组织图,2023/7/5,Thumb状态下的寄存器与ARM状态下的寄存器关系,Thumb状态下和ARM状态下的R0R7是相同的。,Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。,Thumb状态下的SP对应于ARM状态下的R13。,Thumb状态下的LR对应于ARM状态下的R14。,Thumb状态下的程序计数器对应于ARM状态下R15。,2023/7/5,Thumb状态下的寄存器与ARM状态下的寄存器关系图,2023/7/5,访问THUMB状态下的高位寄存器(Hi-registers),在Thumb状态下,高位寄存器R8R15并不是标准寄存器集的一部分,但可使用汇编语言程序受限制的访问这些寄存器,将其用作快速的暂存器。,使用带特殊变量的MOV指令,数据可以在低位寄存器和高位寄存器之间进行传送;高位寄存器的值可以使用CMP和ADD指令进行比较或加上低位寄存器中的值。,2023/7/5,程序状态寄存器作用,ARM体系结构包含一个当前程序状态寄存器(CPSR)和五个备份的程序状态寄存器(SPSRs),(1)当前程序状态寄存器 CPSR(Current Program Status Register)-用来保存当前程序状态的寄存器。-所有处理器模式下都可以访问当前程序状态寄存器CPSR。仅一个CPSR。,2023/7/5,(2)保存程序状态寄存器SPSR_mode(Saved Program Status Register)SPSR_mode用来进行异常处理,其功能包括:保存ALU中的当前操作信息 当异常发生时,用来保存CPSR的值,从异常返回时,将 SPSR_mode复制到CPSR中,恢复CPSR的值。控制允许和禁止中断 修改SPSR的值 设置处理器的运行模式修改SPSR的值,2023/7/5,程序状态寄存器的每一位的安排,2023/7/5,程序状态寄存器的条件码标志,N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行,在ARM状态下,绝大多数的指令都是有条件执行的。,在Thumb状态下,仅有分支指令是有条件执行的。,2023/7/5,影响标志位的指令,2023/7/5,程序状态寄存器的控制位,状态寄存器的低8位(I、F、T和M4:0)称为控制位,发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。,中断禁止位I、F:I=1 禁止IRQ中断;I0 允许IRQ中断 F=1 禁止FIQ中断;F0 允许FIQ中断,T标志位:该位反映处理器的运行状态 T=1时,程序运行于Thumb状态 T=0时,程序运行于ARM状态,运行模式位M4:0是模式位,决定处理器的运行模式,2023/7/5,处理器运行模式及可以访问的寄存器,2023/7/5,1.中断和异常的概念 1)中断 当CPU正在执行程序时,系统发生了一件急需处理的事件,CPU暂时停下正在执行的程序,转去处理相应的事件,事件处理完后,CPU再返回执行原来的程序,这种情况称为中断。,2.9 异 常,2023/7/5,中断事件:引起CPU产生中断、并且与CPU当前所执行的程序无关的、由外部硬件产生的事件,也叫中断源。中断事件也常称为外中断。中断是计算机系统基本的功能 利用中断,外设可以与CPU并行工作,当外设需要传输数据或控制时,向CPU发出中断请求信号。CPU响应其请求进行处理。因此,使用中断既可以实现CPU与外设并行工作,又可以实时处理各种紧急事件。,2023/7/5,2.异常 是指CPU在执行指令时出现的错误,即不正常的情况。异常是与当前所执行的程序有关的。如存取数据或指令错误、计算结果溢出等。异常的处理:也用中断的方式进行处理。计算机通常是用中断来处理外中断和异常,因此下面将二者均称为异常。,2023/7/5,对异常的说明 当系统运行时,异常可能会随时发生,为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理,采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序。,2023/7/5,当ARM处理器发生异常时,程序计数器PC会被强制设置为对应的异常向量,从而跳转到异常处理程序,当异常处理完成以后,返回到主程序继续执行。我们需要处理所有的异常,尽管我们可以简单的在某些异常处理程序处放置死循环。,2023/7/5,3.ARM的异常 ARM有7种异常(1)复位 处理器上一旦有复位输入,ARM处理器立刻停止执行当前指令。复位后,ARM处理器在禁止中断的管理模式下,从地址0 x00000000或0 xFFFF0000开始执行指令。,2023/7/5,(2)未定义指令异常 当ARM处理器执行协处理器指令时,它必须等待任一外部协处理器应答后,才能真正执行这条指令。若协处理器没有响应,就会出现未定义指令异常。未定义指令异常可用于在没有物理协处理器(硬件)的系统上,对协处理器进行软件仿真,或在软件仿真时进行指令扩展。,2023/7/5,3)软件中断异常 该异常由执行SWI指令产生,可使用此机制进行软件仿真。4)预取中止(取指令存储器中止)若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,但当预取的指令被执行时,才会产生指令预取中止异常。5)数据中止(访问数据存储器中止)若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。,2023/7/5,6)IRQ异常 当处理器的外部中断请求引脚有效,且CPSR中的I=0,产生IRQ异常。系统的外设可通过该异常请求中断服务。7)FIQ异常 当处理器的外部中断请求引脚有效,且CPSR中的F=0,产生FIQ异常。FIQ支持数据传送和通道处理,并有足够的私有寄存器,从而在应用中可避免对寄存器保存的需求,减少了开销。,2023/7/5,4.ARM异常中断响应过程 当发生异常时,除了复位异常立即中止当前指令外,处理器尽量完成当前指令,然后脱离当前的程序去处理异常。ARM处理器对异常中断的响应过程如下:,2023/7/5,(1)保存返回地址 将引起异常指令的下一条指令的地址保存到新的异常模式x下的R14,即R14-中,使异常处理程序执行完后能正确返回原程序。(2)保存当前状态寄存器CPSR的内容 将CPSR的内容保存到将要执行的异常中断对应的SPSR中,便于中断返回时恢复处理器当前的状态位、中断屏蔽位以及各条件标志位。,2023/7/5,(3)设置当前状态寄存器CPSR中的相应位 设置CPSR模式控制位CPSR4:0,使处理器进入相应的执行模式;设置中断标志位(CPSR6=1),禁止IRQ中断;设置中断标志位(CPSR7=1)禁止FIQ中断,当进入Reset或FIQ模式时。,2023/7/5,(4)转去执行中断处理程序 取相应的中断向量给程序计数器PC,使程序开始执行中断处理程序。,一般地说,矢量地址处将包含一条指向相应程序的转移指令,从而可跳转到相应的异常中断处理程序处执行异常中断处理程序。,2023/7/5,R14_=Return LinkSPSR_=CPSRCPSR4:0=Exception Mode NumberCPSR5=0If=Reset or FIQ thenCPSR6=1CPSR7=1PC=Exception Vector Address,异常响应伪代码,处理器处于Thumb状态,则当异常向量地址加载入PC时,处理器自动切换到ARM状态。ARM微处理器对异常的响应过程用伪码可以描述为:,在ARM状态下执行,禁止快速中断,禁止正常中断,转入异常入口地址,2023/7/5,注意使用异常模式下的特有寄存器 每个异常模式对应有两个寄存器R13_、R14_分别保存相应模式下的堆栈指针、返回地址;堆栈指针可用来定义一个存储区域保存其它用户寄存器,在程序初始化时应该对各种模式堆栈设置,便于随时使用。FIQ模式还有额外的专用寄存器R8_fiqR12_fiq,使用这些寄存器可以加快快速中断的处理速度。,2023/7/5,5.异常返回(1)异常返回应执行的操作 异常处理完毕之后,ARM微处理器会执行以下几步操作从异常返回:将返回地址装入PC 把连接寄存器LR的值减去相应的偏移量,然后送到PC中。恢复CPSR的值

    注意事项

    本文(arm嵌入式原理技术及应用ch.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开