第2讲(Part1)--基于ARM的开发平台以及ARM在嵌入式系统中的应用

上传人:M****1 文档编号:570093479 上传时间:2024-08-01 格式:PPT 页数:66 大小:1,016KB
返回 下载 相关 举报
第2讲(Part1)--基于ARM的开发平台以及ARM在嵌入式系统中的应用_第1页
第1页 / 共66页
第2讲(Part1)--基于ARM的开发平台以及ARM在嵌入式系统中的应用_第2页
第2页 / 共66页
第2讲(Part1)--基于ARM的开发平台以及ARM在嵌入式系统中的应用_第3页
第3页 / 共66页
第2讲(Part1)--基于ARM的开发平台以及ARM在嵌入式系统中的应用_第4页
第4页 / 共66页
第2讲(Part1)--基于ARM的开发平台以及ARM在嵌入式系统中的应用_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《第2讲(Part1)--基于ARM的开发平台以及ARM在嵌入式系统中的应用》由会员分享,可在线阅读,更多相关《第2讲(Part1)--基于ARM的开发平台以及ARM在嵌入式系统中的应用(66页珍藏版)》请在金锄头文库上搜索。

1、第第2讲讲(Part1)-基于基于ARM的开发平台以及的开发平台以及ARM在嵌入式系统中在嵌入式系统中的应用的应用ARM技术的应用领域及特点nARMAdvanced RISC Machines qARM(Advanced RISC Machines),),既可以认为是既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。还可以认为是一种技术的名字。q1991年年ARM公司成立于英国剑桥,主要出售芯片设公司成立于英国剑桥,主要出售芯片设计技术的授权。计技术的授权。ARM技术的应用领域及特点ARM 公司的Chip

2、 less模式q世界各大半导体生产商从世界各大半导体生产商从ARMARM公司购买其设计的公司购买其设计的ARMARM微处微处理器核,根据各自不同的应用领域,加入适当的外围电路,理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的从而形成自己的ARMARM微处理器芯片进入市场。微处理器芯片进入市场。q基于基于ARM技术的微处理器应用约占据了技术的微处理器应用约占据了32位位RISC微处微处 理器理器75以上的市场份额,以上的市场份额,ARM技术正在逐步渗入到我们技术正在逐步渗入到我们生活的各个方面。生活的各个方面。q我国的我国的中兴集成电路、中兴集成电路、大唐电讯、中芯国际和上海华

3、虹,大唐电讯、中芯国际和上海华虹,以及国外的一些公司如德州仪器、意法半导体、以及国外的一些公司如德州仪器、意法半导体、PhilipsPhilips、IntelIntel、SamsungSamsung等都推出了自己设计的基于等都推出了自己设计的基于ARMARM核的处理器。核的处理器。ARM技术的应用领域及特点ARM微处理器的应用领域 工业控制领域:作为工业控制领域:作为3232的的RISCRISC架构,架构,ARMARM微控制器微控制器的低功耗、高性价比,向传统的的低功耗、高性价比,向传统的8 8位位/16/16位微控制器位微控制器提出了挑战。提出了挑战。q到目前为止,到目前为止,ARM微处理器

4、及技术的应用已经广泛深微处理器及技术的应用已经广泛深入到国民经济的各个领域入到国民经济的各个领域ARM技术的应用领域及特点ARM微处理器的应用领域q网络应用:采用网络应用:采用ARM技术的技术的ADSL芯片,芯片,ARM在语音在语音及视频处理上进行了优化,获得广泛支持。及视频处理上进行了优化,获得广泛支持。q消费类电子产品:消费类电子产品:ARM技术在目前流行的数字音频播技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。放器、数字机顶盒和游戏机中得到广泛采用。q成像和安全产品:现在流行的数码相机和打印机中绝大成像和安全产品:现在流行的数码相机和打印机中绝大部分采用部分采用ARM

5、技术,手机中的技术,手机中的32位位SIM智能卡也采用了智能卡也采用了ARM技术。技术。qARM技术的应用领域及特点ARM微处理器的特点低功耗、低成本、高性能低功耗、低成本、高性能采用RISC指令集q低功耗、低成本、高性能低功耗、低成本、高性能使用大量的寄存器ARM/THUMB指令支持三/五级流水线ARM技术的应用领域及特点ARM微处理器的特点采用采用RISCRISC体系结构体系结构q采用采用RISC架构的架构的ARM处理器一般具有如下特点:处理器一般具有如下特点:固定长度的指令格式,指令归整、简单、基固定长度的指令格式,指令归整、简单、基 本寻本寻址方式有址方式有23种;种;使用单周期指令,

6、便于流水线操作执行;使用单周期指令,便于流水线操作执行;大量使用寄存器,数据处理指令只对寄存器进行大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载操作,只有加载/存储指令可以访问存储器,以提高指存储指令可以访问存储器,以提高指令的执行效率。令的执行效率。ARM技术的应用领域及特点ARM微处理器的特点大量使用寄存器大量使用寄存器qARM 处理器共有处理器共有37个寄存器,被分为若干个组,这些个寄存器,被分为若干个组,这些寄存器包括:寄存器包括:31个通用寄存器,包括程序计数器(个通用寄存器,包括程序计数器(PC 指针),指针),均为均为32位的寄存器;位的寄存器;6个状态寄存器,用以标识

7、个状态寄存器,用以标识CPU的工作状态及程的工作状态及程序的运行状态,均为序的运行状态,均为32位。位。ARM技术的应用领域及特点ARM微处理器的特点高效的指令系统高效的指令系统qARM微处理器支持两种指令集:微处理器支持两种指令集:ARM指令集和指令集和Thumb指令集。指令集。qARM指令为指令为32位的长度,位的长度,Thumb指令为指令为16位长度。位长度。Thumb指令集为指令集为ARM指令集的功能子集,但与等价的指令集的功能子集,但与等价的ARM代码相比较,可节省代码相比较,可节省3040以上的存储空间,同时具备以上的存储空间,同时具备32位代码的所有优点。位代码的所有优点。ARM

8、技术的应用领域及特点ARM微处理器的特点其他技术其他技术q除此以外,除此以外,ARM体系结构还采用了一些特别的技术,体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗:在保证高性能的前提下尽量缩小芯片的面积,并降低功耗:q所有的指令都可根据前面的执行结果决定是否被执行,所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。从而提高指令的执行效率。q可用加载可用加载/存储指令批量传输数据,以提高数据的传输效存储指令批量传输数据,以提高数据的传输效率。率。q可在一条数据处理指令中同时完成逻辑处理和移位处理。可在一条数据处理指令中同时完成逻辑处理和移

9、位处理。q在循环处理中使用地址的自动增减来提高运行效率。在循环处理中使用地址的自动增减来提高运行效率。ARM微处理器系列qARM7系列系列qARM9系列系列qARM9E系列系列qARM10E系列系列qSecurCore系列系列qIntel的的Xscaleq其中,其中,ARM7、ARM9、ARM9E和和ARM10为为4个通用处个通用处理器系列,每一个系列提供一套相对独特的性能来满足不同理器系列,每一个系列提供一套相对独特的性能来满足不同应用领域的需求。应用领域的需求。SecurCore系列专门为安全要求较高的应系列专门为安全要求较高的应用而设计。用而设计。 ARM微处理器系列qARM9系列微处理

10、器在高性能和低功耗特性方面提供最系列微处理器在高性能和低功耗特性方面提供最佳的表现。具有以下特点:佳的表现。具有以下特点:5级整数流水线,指令执行效率更高。级整数流水线,指令执行效率更高。提供提供1.1MIPS/MHz的哈佛结构。的哈佛结构。支持支持32位位ARM指令集和指令集和16位位Thumb指令集。指令集。支持支持32位的高速位的高速AMBA总线接口。总线接口。全性能的全性能的MMU,支持支持Windows CE、Linux、Palm OS等多种等多种主流嵌入式操作系统。主流嵌入式操作系统。MPU支持实时操作系统。支持实时操作系统。支持数据支持数据Cache和指令和指令Cache,具有更

11、高的指令和数据处理能力。具有更高的指令和数据处理能力。ARM微处理器系列qARM9ARM9系列微处理器主要应用于无线设备、仪器仪表、安系列微处理器主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印机、数字照相机和数字摄像全系统、机顶盒、高端打印机、数字照相机和数字摄像机等。机等。qARM9ARM9系列微处理器包含系列微处理器包含ARM920TARM920T、ARM922TARM922T和和ARM940TARM940T三三种类型,以适用于不同的应用场合。种类型,以适用于不同的应用场合。ARM处理器的工作状态q从编程的角度看,从编程的角度看,ARMARM微处理器的工作状态一般有两种,微处理器

12、的工作状态一般有两种,并可在两种状态之间切换:并可在两种状态之间切换:ARM状态,此时处理器执行状态,此时处理器执行32位的字对齐的位的字对齐的ARM指指令;令;Thumb状态,此时处理器执行状态,此时处理器执行16位的、半字对齐的位的、半字对齐的Thumb指令。指令。 ARM处理器的工作状态qTHUMB指令是ARM指令的子集q可以相互调用,只要遵循一定的调用规则qThumb指令与ARM指令的时间效率和空间效率关系为:存储空间约为ARM代码的6070指令数比ARM代码多约3040存储器为32位时ARM代码比Thumb代码快约40存储器为16位时Thumb比ARM代码快约4050使用Thumb代

13、码,存储器的功耗会降低约30ARM处理器的工作状态状态切换方法状态切换方法 qARMARM指令集和指令集和ThumbThumb指令集均有切换处理器状态的指令,指令集均有切换处理器状态的指令,并可在两种工作状态之间切换,并可在两种工作状态之间切换,q在开始执行代码时,应该处于在开始执行代码时,应该处于ARMARM状态。状态。ARM处理器的工作状态进入进入ThumbThumb状态状态q当操作数寄存器的状态位(位当操作数寄存器的状态位(位0 0)为)为1 1时,可以采用执时,可以采用执行行BXBX指令的方法,使微处理器从指令的方法,使微处理器从ARMARM状态切换到状态切换到ThumbThumb状态

14、。状态。q当处理器处于当处理器处于ThumbThumb状态时发生异常(如状态时发生异常(如IRQIRQ、FIQFIQ、UndefUndef、AbortAbort、SWISWI等),则异常处理返回时,自动切等),则异常处理返回时,自动切换到换到ThumbThumb状态。状态。ARM处理器的工作状态切换到切换到ARMARM状态状态q当操作数寄存器的状态位为当操作数寄存器的状态位为0 0时,执行时,执行BXBX指令时可以使指令时可以使微处理器从微处理器从ThumbThumb状态切换到状态切换到ARMARM状态。状态。q在处理器进行异常处理时,把在处理器进行异常处理时,把PCPC指针放入异常模式链指针

15、放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到以使处理器切换到ARMARM状态。状态。ARM处理器的工作模式qusrusr:ARMARM处理器正常的程序执行状态处理器正常的程序执行状态qfiqfiq:用于高速数据传输或通道处理用于高速数据传输或通道处理qirqirq:用于通用的中断处理用于通用的中断处理qsvcsvc:操作系统使用的保护模式操作系统使用的保护模式qabtabt:用于虚拟存储及存储保护用于虚拟存储及存储保护qsyssys:运行具有特权的操作系统任务运行具有特权的操作系统任务qundund:当:当出现未定义

16、指令终止时进入该模式出现未定义指令终止时进入该模式ARM处理器的工作模式用户模式和特权模式q除了用户模式之外的其他除了用户模式之外的其他6 6种处理器模式称为特权模式种处理器模式称为特权模式q特权模式下,程序可以访问所有的系统资源,也可以特权模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。任意地进行处理器模式的切换。q特权模式中,除系统模式外,其他特权模式中,除系统模式外,其他5 5种模式又称为异常模式种模式又称为异常模式q大多数的用户程序运行在用户模式下,此时,应用程大多数的用户程序运行在用户模式下,此时,应用程序不能够访问一些受操作系统保护的系统资源,应用序不能够访问

17、一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式的切换。程序也不能直接进行处理器模式的切换。q用户模式下,当需要进行处理器模式切换时,应用程用户模式下,当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理中进行处理器模式序可以产生异常处理,在异常处理中进行处理器模式的切换。的切换。ARM处理器的工作模式q处理器模式可以通过软件进行切换,也可以通过外部处理器模式可以通过软件进行切换,也可以通过外部中断或者异常处理过程进行切换。中断或者异常处理过程进行切换。q当应用程序发生异常中断时,处理器进入相应的异常当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式

18、下都有一组寄存器,可以保模式。在每一种异常模式下都有一组寄存器,可以保证在进入异常模式时,用户模式下的寄存器不被破坏。证在进入异常模式时,用户模式下的寄存器不被破坏。q系统模式并不是通过异常进入的,它和用户模式具有系统模式并不是通过异常进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可完全一样的寄存器。但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式以访问所有的系统资源,也可以直接进行处理器模式切换,它主要供操作系统任务使用。该任务仍然使用切换,它主要供操作系统任务使用。该任务仍然使用用户模式的寄存器组,而不是使用异常模式下相应的用户模式的寄存器组

19、,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态寄存器组,这样可以保证当异常中断发生时任务状态不被破坏。不被破坏。ARM处理器的存储器格式qARMARM体系结构所支持的最大寻址空间为体系结构所支持的最大寻址空间为4GB4GB(2 23232字节)字节)qARMARM体系结构将存储器看作是从零地址开始的字节的线体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字数据,性组合。从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。依次排列。qARM

20、ARM体系结构可以用两种方法存储字数据,称之为大端体系结构可以用两种方法存储字数据,称之为大端格式和小端格式格式和小端格式 ARM处理器的存储器格式qARMARM微处理器的指令长度可以是微处理器的指令长度可以是3232位(在位(在ARMARM状态下),状态下),也可以为也可以为1616位(在位(在ThumbThumb状态下)。状态下)。qARMARM微处理器中支持字节(微处理器中支持字节(8 8位)、半字(位)、半字(1616位)、字位)、字(3232位)三种数据类型,其中,字需要位)三种数据类型,其中,字需要4 4字节对齐(地字节对齐(地址的低两位为址的低两位为0 0)、半字需要)、半字需要

21、2 2字节对齐(地址的最低字节对齐(地址的最低位为位为0 0)ARM处理器的存储器格式非对齐的存储访问操作非对齐的存储访问操作 q在在ARMARM种,如果存储单元的地址没有遵守对齐规则,则种,如果存储单元的地址没有遵守对齐规则,则称为非对齐的存储访问操作。称为非对齐的存储访问操作。q非对齐的指令预取操作非对齐的指令预取操作q非对齐的数据访问操作非对齐的数据访问操作ARM处理器的存储器格式非对齐的指令预取操作非对齐的指令预取操作 q当处理器处于当处理器处于ARMARM状态期间,如果写入到寄存器状态期间,如果写入到寄存器PCPC中的中的值是非字对齐的,要么指令执行的结果不可预知,要值是非字对齐的,

22、要么指令执行的结果不可预知,要么地址值中最低两位被忽略。么地址值中最低两位被忽略。q当处理器处于当处理器处于THUMBTHUMB状态期间,如果写入到寄存器状态期间,如果写入到寄存器PCPC中中的值是非半字对齐的,要么指令执行的结果不可预知,的值是非半字对齐的,要么指令执行的结果不可预知,要么地址值中最低位被忽略。要么地址值中最低位被忽略。ARM处理器的存储器格式非对齐的数据访问操作非对齐的数据访问操作 q对于对于Load/StoreLoad/Store操作,如果是非对齐的数据访问操作,操作,如果是非对齐的数据访问操作,系统定义了三种可能的结果:系统定义了三种可能的结果:执行的结果不可预知执行的

23、结果不可预知忽略字单元地址的低两位的值,即访问地址为忽略字单元地址的低两位的值,即访问地址为(address AND 0XFFFFFFFC)(address AND 0XFFFFFFFC)的字单元;忽略半字单元的字单元;忽略半字单元地址的最低位的值,即访问地址为地址的最低位的值,即访问地址为(address AND (address AND 0XFFFFFFFE)0XFFFFFFFE)的半字单元。的半字单元。忽略字单元地址的低两位的值;忽略半字单元地址的最忽略字单元地址的低两位的值;忽略半字单元地址的最低位的值;由存储系统实现这种忽略。也就是说,这低位的值;由存储系统实现这种忽略。也就是说,这

24、时该地址值原封不动地送到存储系统。时该地址值原封不动地送到存储系统。q当发生非对齐的数据访问时,到底采用上述三种方法中当发生非对齐的数据访问时,到底采用上述三种方法中的哪一种,是由各指令指定的。的哪一种,是由各指令指定的。ARM 处理器的寄存器格式nARM微处理器共有微处理器共有37个个32位寄存器,其中位寄存器,其中31个为通用寄存器,个为通用寄存器,6个为状态寄存器。个为状态寄存器。但是这些寄存器不能被同时访问,具体哪但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决微处理器些寄存器是可编程访问的,取决微处理器的工作状态及具体的运行模式。但在任何的工作状态及具体的运行模式。但

25、在任何时候,通用寄存器时候,通用寄存器R14R0、程序计数器、程序计数器PC、一个或两个状态寄存器都是可访问的。、一个或两个状态寄存器都是可访问的。 ARM 处理器的寄存器格式q通用寄存器:通用寄存器包括R0R15,可以分为三类:未分组寄存器未分组寄存器R0R0R7R7分组寄存器分组寄存器R8R8R14R14程序计数器程序计数器PC(R15)PC(R15)ARM 处理器的寄存器格式ARM 处理器的寄存器格式未分组寄存器未分组寄存器R0R0R7R7q在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模

26、式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。ARM 处理器的寄存器格式分组寄存器分组寄存器R8R8R12R12q每次所访问的物理寄存器与处理器当前的运行模式有关qR8R12:每个寄存器对应两个不同的物理寄存器当使用fiq模式时,访问寄存器R8_fiqR12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usrR12_usr。ARM 处理器的寄存器格式分组寄存器分组寄存器R13R13R14R14qR13、R14:每个寄存器对应6个不同的物理寄存器q其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式q采用以

27、下的记号来区分不同的物理寄存器:R13_R14_qmode为以下几种之一:usr、fiq、irq、svc、abt、und。ARM 处理器的寄存器格式堆栈指针堆栈指针R13R13qR13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。q在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。q由于处理器的每种运行模式均有自己独立的物理寄存器R13,在初始化部分,都要初始化每种模式下的R13,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复。 ARM 处理器的寄存器格式

28、子程序连接寄存器子程序连接寄存器R14R14qR14也称作子程序连接寄存器或连接寄存器LR。当执行BL子程序调用指令时,可以从R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。q在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。BLSUB1SUB1:STMFDSP!, , LR /*将R14存入堆栈*/LDMFDSP!,PC/*完成子程序返回 */ARM 处理器的寄存器格式程序计数器程序计数器PC(R15)PC(R15)qARMARM

29、状态下,位状态下,位1:01:0为为0 0,位,位31:231:2用于保存用于保存PCPC;qThumbThumb状态下,位状态下,位00为为0 0,位,位31:131:1用于保存用于保存PCPC;qR15R15虽然也可用作通用寄存器,但一般不这么使用,因为虽然也可用作通用寄存器,但一般不这么使用,因为对对R15R15的使用有一些特殊的限制,当违反了这些限制时,的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。程序的执行结果是未知的。q由由于于ARM体体系系结结构构采采用用了了多多级级流流水水线线技技术术,对对于于ARM指指令令集集而而言言,PC总总是是指指向向当当前前指指令

30、令的的下下两两条条指指令令的的地地址址,即即PC的值为当前指令的地址值加的值为当前指令的地址值加8个字节。个字节。ARM 处理器的寄存器格式程序状态寄存器(CPSR/SPSR)n寄存器寄存器R16用作用作CPSR(当前程序状态寄存器当前程序状态寄存器),CPSR可可在任何运行模式下被访问,它包括条件标志位、中断禁止在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和位、当前处理器模式标志位,以及其他一些相关的控制和状态位。状态位。q每一种运行模式下又都有一个专用的物理状态寄存器,称每一种运行模式下又都有一个专用的物理状态寄存器,称为为SPSRSP

31、SR(备份的程序状态寄存器),异常发生时,备份的程序状态寄存器),异常发生时,SPSRSPSR用用于保存于保存CPSRCPSR的值,从异常退出时则可由的值,从异常退出时则可由SPSRSPSR来恢复来恢复CPSRCPSR。q由于用户模式和系统模式不属于异常模式,他们没有由于用户模式和系统模式不属于异常模式,他们没有SPSRSPSR,当在这两种模式下访问当在这两种模式下访问SPSRSPSR,结果是未知的。结果是未知的。ARM 处理器的寄存器格式Thumb状态下的寄存器组织 nThumb状态下的寄存器集是状态下的寄存器集是ARM状态下寄存器集的一个状态下寄存器集的一个子集子集q程序可以直接访问程序可

32、以直接访问8 8个通用寄存器(个通用寄存器(R7R7R0R0)、)、程序计数程序计数器(器(PCPC)、)、堆栈指针(堆栈指针(SPSP)、)、连接寄存器(连接寄存器(LRLR)和)和CPSRCPSR。q同样,每一种特权模式下都有一组同样,每一种特权模式下都有一组SPSP、LRLR和和SPSRSPSR。 ARM 处理器的寄存器格式Thumb状态下的寄存器组织图ARM 处理器的寄存器格式ThumbThumb状态下的寄存器与状态下的寄存器与ARMARM状态下的寄存器关系状态下的寄存器关系qThumbThumb状态下和状态下和ARMARM状态下的状态下的R0R0R7R7是相同的。是相同的。qThum

33、bThumb状态下和状态下和ARMARM状态下的状态下的CPSRCPSR和所有的和所有的SPSRSPSR是相同的。是相同的。qThumbThumb状态下的状态下的SPSP对应于对应于ARMARM状态下的状态下的R13R13。qThumbThumb状态下的状态下的LRLR对应于对应于ARMARM状态下的状态下的R14R14。qThumbThumb状态下的程序计数器对应于状态下的程序计数器对应于ARMARM状态下状态下R15R15。ARM 处理器的寄存器格式Thumb状态下的寄存器与ARM状态下的寄存器关系图ARM 处理器的寄存器格式访问访问THUMB状态下的高位寄存器(状态下的高位寄存器(Hi-

34、registers) n在在Thumb状态下,高位寄存器状态下,高位寄存器R8R15并不是标准寄存并不是标准寄存器集的一部分,但可使用汇编语言程序受限制的访问这些器集的一部分,但可使用汇编语言程序受限制的访问这些寄存器,将其用作快速的暂存器。寄存器,将其用作快速的暂存器。q使用带特殊变量的使用带特殊变量的MOVMOV指令,数据可以在低位寄存器和高指令,数据可以在低位寄存器和高位寄存器之间进行传送;高位寄存器的值可以使用位寄存器之间进行传送;高位寄存器的值可以使用CMPCMP和和ADDADD指令进行比较或加上低位寄存器中的值。指令进行比较或加上低位寄存器中的值。 ARM 处理器的寄存器格式程序状

35、态寄存器程序状态寄存器 qARMARM体系结构包含一个当前程序状态寄存器(体系结构包含一个当前程序状态寄存器(CPSRCPSR)和五和五个备份的程序状态寄存器(个备份的程序状态寄存器(SPSRsSPSRs)。)。备份的程序状态寄备份的程序状态寄存器用来进行异常处理,其功能包括:存器用来进行异常处理,其功能包括:保存ALU中的当前操作信息控制允许和禁止中断设置处理器的运行模式ARM 处理器的寄存器格式M4:0处理器模式处理器模式可访问的寄存器可访问的寄存器0b10000用户模式用户模式PC,CPSR,R0-R140b10001FIQ模式模式PC,CPSR, SPSR_fiq,R14_fiq-R8

36、_fiq, R7R00b10010IRQ模式模式PC,CPSR, SPSR_irq,R14_irq, R13_irq, R12R00b10011管理模式管理模式PC,CPSR, SPSR_svc,R14_svc, R13_svc, R12R0,0b10111中止模式中止模式PC,CPSR, SPSR_abt,R14_abt,R13_abt, R12R0,0b11011未定义模式未定义模式PC,CPSR, SPSR_und,R14_und, R13_und, R12R0,0b11111系统模式系统模式PC,CPSR(ARM v4及以上版本)及以上版本), R14R0ARM 异常处理异常异常(Ex

37、ceptionsExceptions) n当正常的程序执行流程发生暂时的停止时,称之为异常,当正常的程序执行流程发生暂时的停止时,称之为异常,例如处理一个外部的中断请求。在处理异常之前,当前处例如处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。会按固定的优先级进行处理。qARMARM体系结构中的异常,与体系结构中的异常,与8 8位位/16/16位体系结构的中断有很位体系结构

38、的中断有很大的相似之处,但异常与中断的概念并不完全等同。大的相似之处,但异常与中断的概念并不完全等同。 ARM 异常处理异常类型具体含义复位复位电平有效时,产生复位异常,程序跳转到复位处理程序处执行。未定义指令遇到不能处理的指令时,产生未定义指令异常。软件中断执行SWI指令产生,用于用户模式下的程序调用特权操作指令。指令预取中止处理器预取指令的地址不存在,或该地址不允许当前指令访问,产生指令预取中止异常。数据中止处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据中止异常。IRQ外部中断请求有效,且CPSR中的I位为0时,产生IRQ异常。FIQ快速中断请求引脚有效,且CPSR

39、中的F位为0时,产生FIQ异常。ARM 异常处理R14_ = Return LinkR14_ = Return LinkSPSR_ = CPSRSPSR_ = CPSRCPSR4:0 = Exception Mode NumberCPSR4:0 = Exception Mode NumberCPSR5 = 0CPSR5 = 0If = Reset or FIQ thenIf = Reset or FIQ thenCPSR6 = 1CPSR6 = 1CPSR7 = 1CPSR7 = 1PC = Exception Vector AddressPC = Exception Vector Addre

40、ssq处理器处于处理器处于ThumbThumb状态,则当异常向量地址加载入状态,则当异常向量地址加载入PCPC时,时,处理器自动切换到处理器自动切换到ARMARM状态。状态。ARMARM微处理器对异常的响应过微处理器对异常的响应过程用伪码可以描述为:程用伪码可以描述为:在ARM状态下执行禁止快速中断禁止正常中断转入异常入口地址ARM 异常处理地地 址址异异 常常进入模式进入模式0x0000,00000x0000,0000复位复位管理模式管理模式0x0000,00040x0000,0004未定义指令未定义指令未定义模式未定义模式0x0000,00080x0000,0008软件中断软件中断管理模式

41、管理模式0x0000,000C0x0000,000C中止(预取指令)中止(预取指令)中止模式中止模式0x0000,00100x0000,0010中止(数据)中止(数据)中止模式中止模式0x0000,00140x0000,0014保留保留保留保留0x0000,00180x0000,0018IRQIRQIRQIRQ0x0000,001C0x0000,001CFIQFIQFIQFIQARM 异常处理应用程序中的异常处理 n当系统运行时,异常可能会随时发生,为保证在当系统运行时,异常可能会随时发生,为保证在ARM处理处理器发生异常时不至于处于未知状态,在应用程序的设计中,器发生异常时不至于处于未知状态

42、,在应用程序的设计中,首先要进行异常处理,采用的方式是在异常向量表中的特首先要进行异常处理,采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序,当定位置放置一条跳转指令,跳转到异常处理程序,当ARM处理器发生异常时,程序计数器处理器发生异常时,程序计数器PC会被强制设置为会被强制设置为对应的异常向量,从而跳转到异常处理程序,当异常处理对应的异常向量,从而跳转到异常处理程序,当异常处理完成以后,返回到主程序继续执行。完成以后,返回到主程序继续执行。 n我们需要处理所有的异常,尽管我们可以简单的在某些异我们需要处理所有的异常,尽管我们可以简单的在某些异常处理程序处放置死循环。

43、常处理程序处放置死循环。ARM 微处理器指令的分类nARM微处理器的指令集是加载微处理器的指令集是加载/存储型的,也即指令集仅存储型的,也即指令集仅能处理寄存器中的数据,而且处理结果都要放回寄存器中,能处理寄存器中的数据,而且处理结果都要放回寄存器中,而对系统存储器的访问则需要通过专门的加载而对系统存储器的访问则需要通过专门的加载/存储指令存储指令来完成。来完成。nARM微处理器的指令集可以分为以下几类微处理器的指令集可以分为以下几类 :n跳转指令跳转指令n数据处理指令数据处理指令n程序状态寄存器(程序状态寄存器(PSR)处理指令)处理指令n加载加载/存储指令存储指令n协处理器指令和异常产生指

44、令协处理器指令和异常产生指令ARM 微处理器指令的分类助记符助记符指令功能描述指令功能描述ADCADC带进位加法指令带进位加法指令ADDADD加法指令加法指令ANDAND逻辑与指令逻辑与指令B B跳转指令跳转指令BICBIC位清零指令位清零指令BLBL带返回的跳转指令带返回的跳转指令BLXBLX带返回和状态切换的跳转指令带返回和状态切换的跳转指令BXBX带状态切换的跳转指令带状态切换的跳转指令ARM 微处理器指令的分类助记符助记符指令功能描述指令功能描述CDPCDP协处理器数据操作指令协处理器数据操作指令CMNCMN比较反值指令比较反值指令CMPCMP比较指令比较指令EOREOR异或指令异或指

45、令LDCLDC存储器到协处理器的数据传输指令存储器到协处理器的数据传输指令LDMLDM加载多个寄存器指令加载多个寄存器指令LDRLDR存储器到寄存器的数据传输指令存储器到寄存器的数据传输指令MCRMCRARMARM寄存器到协处理器寄存器数据传输寄存器到协处理器寄存器数据传输ARM 微处理器指令的分类助记符助记符指令功能描述指令功能描述MLAMLA乘加运算指令乘加运算指令MOVMOV数据传送指令数据传送指令MRCMRC协处理器寄存器到协处理器寄存器到ARMARM寄存器数据传输寄存器数据传输MRSMRS传送传送CPSRCPSR或或SPSRSPSR的内容到通用寄存器的内容到通用寄存器MSRMSR传送

46、通用寄存器到传送通用寄存器到CPSRCPSR或或SPSRSPSR的指令的指令MULMUL3232位乘法指令位乘法指令MLAMLA3232位乘加指令位乘加指令MVNMVN数据取反传送指令数据取反传送指令ARM 微处理器指令的分类助记符助记符指令功能描述指令功能描述ORRORR逻辑或指令逻辑或指令RSBRSB逆向减法指令逆向减法指令RSCRSC带借位的逆向减法指令带借位的逆向减法指令SBCSBC带借位减法指令带借位减法指令STCSTC协处理器寄存器写入存储器指令协处理器寄存器写入存储器指令STMSTM批量内存字写入指令批量内存字写入指令STRSTR寄存器到存储器的数据传输指令寄存器到存储器的数据传

47、输指令SUBSUB减法指令减法指令ARM 微处理器指令的分类助记符助记符指令功能描述指令功能描述SWISWI软件中断指令软件中断指令SWPSWP交换指令交换指令TEQTEQ相等测试指令相等测试指令TSTTST位测试指令位测试指令ARM 微处理器指令的条件域n当处理器工作在当处理器工作在ARM状态时,几乎所有的指令均根据状态时,几乎所有的指令均根据CPSR中条件码的状态和指令的条件域有条件的执行。当中条件码的状态和指令的条件域有条件的执行。当指令的执行条件满足时,指令被执行,否则指令被忽略。指令的执行条件满足时,指令被执行,否则指令被忽略。n每一条每一条ARM指令包含指令包含4位的条件码,位于指

48、令的最高位的条件码,位于指令的最高4位位31:28。条件码共有。条件码共有16种,每种条件码可用两个字符表种,每种条件码可用两个字符表示,这两个字符可以添加在指令助记符的后面和指令同时示,这两个字符可以添加在指令助记符的后面和指令同时使用。例如,跳转指令使用。例如,跳转指令B可以加上后缀可以加上后缀EQ变为变为BEQ表示表示“相等则跳转相等则跳转”,即当,即当CPSR中的中的Z标志置位时发生跳转。标志置位时发生跳转。 ARM 微处理器指令的条件域条件码后缀标 志含 义0000EQZ置位相等0001NEZ清零不相等0010CSC置位无符号数大于或等于0011CCC清零无符号数小于0100MIN置

49、位负数0101PLN清零正数或零0110VSV置位溢出0111VCV清零未溢出ARM 微处理器指令的条件域条件码后缀标 志含 义1001LSC清零Z置位无符号数小于或等于1010GEN等于V带符号数大于或等于1011LTN不等于V带符号数小于1100GTZ清零且(N等于V)带符号数大于1101LEZ置位或(N不等于V)带符号数小于或等于1110AL忽略无条件执行ARM 微处理器指令的寻址方式nARM指令系统支持如下几种常见的寻址方式:指令系统支持如下几种常见的寻址方式:n立即寻址立即寻址 n寄存器寻址寄存器寻址 n寄存器间接寻址寄存器间接寻址 n基址变址寻址基址变址寻址 n多寄存器寻址多寄存器

50、寻址 n相对寻址相对寻址 n堆栈寻址堆栈寻址 ARM 微处理器指令的寻址方式立即寻址立即寻址 n立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操立即寻址也叫立即数寻址,这是一种特殊的寻址方式,操作数本身就在指令中给出,只要取出指令也就取到了操作数。作数本身就在指令中给出,只要取出指令也就取到了操作数。这个操作数被称为立即数,对应的寻址方式也就叫做立即寻这个操作数被称为立即数,对应的寻址方式也就叫做立即寻址。例如以下指令:址。例如以下指令:ADDR0,R0,1/*R0R01*/ADDR0,R0,0x3f/*R0R00x3f*/n在以上两条指令中,第二个源操作数即为立即数,要求以在以上两条指令中

51、,第二个源操作数即为立即数,要求以“”为前缀,对于以十六进制表示的立即数,还要求在为前缀,对于以十六进制表示的立即数,还要求在“”后加上后加上“0x”。ARM 微处理器指令的寻址方式寄存器寻址寄存器寻址 n寄存器寻址就是利用寄存器中的数值作为操作数,这种寻寄存器寻址就是利用寄存器中的数值作为操作数,这种寻址方式是各类微处理器经常采用的一种方式,也是一种执行址方式是各类微处理器经常采用的一种方式,也是一种执行效率较高的寻址方式。以下指令:效率较高的寻址方式。以下指令:ADDR0,R1,R2/*R0R1R2*/n该指令的执行效果是将寄存器该指令的执行效果是将寄存器R1和和R2的内容相加,其结的内容

52、相加,其结果存放在寄存器果存放在寄存器R0中。中。ARM 微处理器指令的寻址方式寄存器间接寻址寄存器间接寻址 n寄存器间接寻址就是以寄存器中的值作为操作数的地址,而寄存器间接寻址就是以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中。例如以下指令:操作数本身存放在存储器中。例如以下指令: ADD R0,R1,R2/*R0R1R2*/ LDRR0,R1/*R0R1*/ STRR0,R1/*R1R0*/n在第一条指令中,以寄存器在第一条指令中,以寄存器R2的值作为操作数的地址,在存的值作为操作数的地址,在存储器中取得一个操作数后与储器中取得一个操作数后与R1相加,结果存入寄存器相加,结果存

53、入寄存器R0中中;n第二条指令将以第二条指令将以R1的值为地址的存储器中的数据传送到的值为地址的存储器中的数据传送到R0中。中。n第三条指令将第三条指令将R0的值传送到以的值传送到以R1的值为地址的存储器中。的值为地址的存储器中。 ARM 微处理器指令的寻址方式基址变址寻址基址变址寻址 n基址变址寻址就是将寄存器(该寄存器一般称作基址寄存器)的内容与指令中给出的地址偏移量相加,从而得到一个操作数的有效地址。变址寻址方式常用于访问某基地址附近的地址单元。采用变址寻址方式的指令常见有以下几种形式,如下所示:LDR R0,R1,4;R0R14LDR R0,R1,4!;R0R14、R1R14LDR R

54、0,R1 ,4;R0R1、R1R14LDR R0,R1,R2;R0R1R2n在第一条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中。n在第二条指令中,将寄存器R1的内容加上4形成操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增4个字节。n在第三条指令中,以寄存器R1的内容作为操作数的有效地址,从而取得操作数存入寄存器R0中,然后,R1的内容自增4个字节。n在第四条指令中,将寄存器R1的内容加上寄存器R2的内容形成操作数的有效地址,从而取得操作数存入寄存器R0中。 ARM 微处理器指令的寻址方式多寄存器寻址多寄存器寻址 n采用多寄存器寻

55、址方式,一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令完成传送最多16个通用寄存器的值。以下指令:LDMIA R0,R1,R2,R3,R4 ;R1R0;R2R04;R3R08;R4R012n该指令的后缀IA表示在每次执行完加载/存储操作后,R0按字长度增加,因此,指令可将连续存储单元的值传送到R1R4。 ARM 微处理器指令的寻址方式相对寻址相对寻址 n与基址变址寻址方式相类似,相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到操作数的有效地址。以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式:BL NEXT;跳转到子程序N

56、EXT处执行NEXTMOVPC,LR;从子程序返回 ARM 微处理器指令的寻址方式堆栈寻址堆栈寻址 n堆栈是一种数据结构,按先进后出(First In Last Out,FILO)的方式工作,使用一个称作堆栈指针的专用寄存器指示当前的操作位置,堆栈指针总是指向栈顶。n当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack),而当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack)。 ARM 微处理器指令的寻址方式堆栈寻址堆栈寻址n根据堆栈的生成方式,又可以分为递增堆栈(Ascending Stack)和递减堆栈(Decending Stack),当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈。这样就有四种类型的堆栈工作方式 n满递增堆栈:堆栈指针指向最后压入的数据,且由低地址向高地址生成。n满递减堆栈:堆栈指针指向最后压入的数据,且由高地址向低地址生成。n空递增堆栈:堆栈指针指向下一个将要放入数据的空位置,且由低地址向高地址生成。n空递减堆栈:堆栈指针指向下一个将要放入数据的空位置,且由高地址向低地址生成

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号