《嵌入式系统-第二章.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统-第二章.ppt(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、ARM9嵌入式系统设计与嵌入式系统设计与开发应用开发应用教师:电气与信息学院教师:电气与信息学院 万琴万琴第二章第二章 基于基于ARM920TARM920T核微处理器核微处理器n通用处理器系列通用处理器系列 ARM7、ARM9、ARM9E和和ARM10E的特点及主要应用领域的特点及主要应用领域n嵌入式嵌入式ARM920T内核编程模型、内核编程模型、ARM920T的的运行模式、寄存器组织及运行模式、寄存器组织及ARM体系结构的存储体系结构的存储器格式器格式n三星三星S3C2410X处理器结构处理器结构22.1 ARM 处理器简介处理器简介 ARM(Advanced RISC Machines)处
2、理器是一种低功耗高性能)处理器是一种低功耗高性能的的32位位RISC处理器处理器。什么是什么是RISC架构?架构?嵌入式微处理器可分为嵌入式微处理器可分为CISC和和RISC两类(复杂指令集计算机两类(复杂指令集计算机Complex Instruction Set ComputerCISC;精简指令集计算机;精简指令集计算机Reduced Instruction Set ComputerRISC)。大家熟悉的大多数)。大家熟悉的大多数台式台式PC都是使用都是使用CISC微处理器,如微处理器,如Intel的的x86。RISC结构体系有两结构体系有两大主流:大主流:Silicon Graphics
3、公司(硅谷图形公司)的公司(硅谷图形公司)的MIPS技术;技术;ARM公司的公司的Advanced RISC Machines技术。技术。3RISC和和CISC是目前设计制造微处理器的两种典型技术,为达到高效是目前设计制造微处理器的两种典型技术,为达到高效的目的,采用的方法不同。它们的差异主要有以下几点。的目的,采用的方法不同。它们的差异主要有以下几点。(1)指令系统:)指令系统:RISC设计者把主要精力放在那些经常使用的指令上,设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来
4、实现。而实现。而CISC计算机的指令系统比较丰富,有专用指令来完成特定的功计算机的指令系统比较丰富,有专用指令来完成特定的功能。能。(2)存储器操作:)存储器操作:RISC对存储器操作有限制,使控制简单化;而对存储器操作有限制,使控制简单化;而CISC机器的存储器操作指令多,操作直接。机器的存储器操作指令多,操作直接。(3)程序:)程序:RISC汇编语言程序一般需要较大的内存空间,实现特殊汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而功能时程序复杂,不易设计;而CISC汇编语言程序编程相对简单,科学汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较
5、高。计算及复杂操作的程序设计相对容易,效率较高。(4)中断:)中断:RISC机器在一条指令执行的适当地方可以响应中断;而机器在一条指令执行的适当地方可以响应中断;而CISC机器是在一条指令执行结束后响应中断的。机器是在一条指令执行结束后响应中断的。4(5)CPU:由于由于RISC CPU包含较少的单元电路,因而面积小、功耗低;包含较少的单元电路,因而面积小、功耗低;而而CISC CPU包含丰富的电路单元,因而功能强、面积大、功耗大。包含丰富的电路单元,因而功能强、面积大、功耗大。(6)设计周期:)设计周期:RISC微处理器结构简单,布局紧凑,设计周期短,且微处理器结构简单,布局紧凑,设计周期短
6、,且易于采用最新技术;易于采用最新技术;CISC微处理器结构复杂,设计周期长。微处理器结构复杂,设计周期长。(7)易用性:)易用性:RISC微处理器结构简单,指令规整,性能容易把握,易微处理器结构简单,指令规整,性能容易把握,易学易用;学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。微处理器结构复杂,功能强大,实现特殊功能容易。(8)应用范围:)应用范围:RISC机器更适合于嵌入式应用;而机器更适合于嵌入式应用;而CISC机器则更适合机器则更适合于通用计算机。于通用计算机。目前目前CISC与与RISC正在逐步走向融合正在逐步走向融合,如,如Pentium Pro的内核是的内核是基
7、于基于RISC体系结构,而能接受体系结构,而能接受CISC指令后将其分解分类成指令后将其分解分类成RISC指令指令以便在遇一时间内能够执行多条指令。由此可见,下一代的以便在遇一时间内能够执行多条指令。由此可见,下一代的CPU将融将融合合CISC与与RISC两种技术,从软件与硬件方面看二者会取长补短。两种技术,从软件与硬件方面看二者会取长补短。5ARM处理器的主要特点处理器的主要特点n共有共有31个个32位寄存器:位寄存器:16个在任何模式下可见个在任何模式下可见n所有指令都带有条件所有指令都带有条件n加载数值的同时进行算术和移位操作加载数值的同时进行算术和移位操作n在几种模式下操作在几种模式下
8、操作2.1.1 ARM 2.1.1 ARM 微处理器系列微处理器系列ARM7系列:工业控制、系列:工业控制、网络设备、移动电话网络设备、移动电话ARM9系列系列ARM9E系列系列ARM10E系列系列SecurCoreSecurCore系列:安全要求较高的应用,如电子银行系列:安全要求较高的应用,如电子银行Intel的的StrongARM:便携式通信产品,如掌上电脑:便携式通信产品,如掌上电脑Intel的的Xscale:Intel主推的主推的ARM微处理器,已用于数字移动电话微处理器,已用于数字移动电话通用通用处理器处理器无线设备、消费类电子产品无线设备、消费类电子产品62.1.2 ARM7系列
9、微处理器系列微处理器n嵌入式嵌入式ICE-RT(In Circuit Emulator-Rral Time)逻辑,)逻辑,调试开发方便调试开发方便 解释:解释:用于提供片内调试支持,它包含一个调试通信通道,用于提供片内调试支持,它包含一个调试通信通道,在主机调试器和目标之间传送信息,嵌入式在主机调试器和目标之间传送信息,嵌入式ICE-RT通过通过JTAG测试访问接口进行控制。测试访问接口进行控制。n极低的功耗,适用于便携产品极低的功耗,适用于便携产品n能够提供能够提供0.9MIPS/MHZ 的三级流水线结构的三级流水线结构 解释:解释:三级流水线结构是三级流水线结构是 取指取指-译码译码-执行
10、执行n对操作系统的广泛支持:对操作系统的广泛支持:Windows CE、Linuxn指令系统与指令系统与ARM9、ARM9E、ARM10E兼容兼容n主频高达主频高达130MHZ,可用于高速运算,可用于高速运算具有低功耗的具有低功耗的32位位RISC处理器,主要特点:处理器,主要特点:7n ARM7TDMI是目前使用最广泛的内核:是目前使用最广泛的内核:T:支持支持16位压缩指令集位压缩指令集 Thumb.Thumb简介:简介:为兼容数据总线宽度为为兼容数据总线宽度为16位的应用系统,位的应用系统,ARM体系结构除了支体系结构除了支持执行效率很高的持执行效率很高的32位位ARM指令集以外,同时支
11、持指令集以外,同时支持16位的位的Thumb指令集。指令集。Thumb指令集是指令集是ARM指令集的一个子集,是指令集的一个子集,是针对代码密度问题而提出的,它具有针对代码密度问题而提出的,它具有16位的代码宽度。与等价位的代码宽度。与等价的的32位代码相比较,位代码相比较,Thumb指令集在保留指令集在保留32位代码优势的同时,位代码优势的同时,大大的节省了系统的存储空间。大大的节省了系统的存储空间。Thumb不是一个完整的体系结不是一个完整的体系结构,不能指望处理器只执行构,不能指望处理器只执行Thumb指令集而不支持指令集而不支持ARM指令指令集。集。8nD:支持片上:支持片上Debug
12、,实现实时调试,实现实时调试nM:内嵌硬件乘法器:内嵌硬件乘法器(multiplier)解释:解释:硬件乘法器可以在单个指令周期内完成乘法操作,硬件乘法器可以在单个指令周期内完成乘法操作,是区别于通用的微处理器的重要标志是区别于通用的微处理器的重要标志 nI:嵌入式:嵌入式ICE,支持片上断点和调试点,支持片上断点和调试点92.1.3 ARM9系列微处理器系列微处理器具有高性能、低功耗,主要特点:具有高性能、低功耗,主要特点:n5级流水线,具有分开的指令和数据存储器,指令执行效率更高,具级流水线,具有分开的指令和数据存储器,指令执行效率更高,具体如下:体如下:(1)取指:)取指:从存储器中取出
13、指令,并将其放入指令流水线。从存储器中取出指令,并将其放入指令流水线。(2)译码:)译码:对指令进行译码。对指令进行译码。(3)执行:)执行:把一个操作数移位,产生把一个操作数移位,产生ALU(算术逻辑单元)算术逻辑单元)的结果。的结果。(4)缓冲)缓冲/数据:数据:如需要则访问数据存储器;否则如需要则访问数据存储器;否则ALU的结果只是简的结果只是简单地缓冲单地缓冲1个时钟周期,以便所有的指令具有同样的流水线流程。个时钟周期,以便所有的指令具有同样的流水线流程。(5)回写:)回写:将指令产生的结果回写到寄存器,包括任何从存储器中将指令产生的结果回写到寄存器,包括任何从存储器中读取的数据。读取
14、的数据。5级流水线图级流水线图10n提供提供1.1MIPS/MHZ 的哈佛结构的哈佛结构 哈佛结构:哈佛结构:是一种将程序指令存储和数据存储分开的存储器结构。是一种将程序指令存储和数据存储分开的存储器结构。n支持支持32位位ARM指令集和指令集和16位位Thumb指令集。指令集。n支持支持32位的高速位的高速AMBA总线接口总线接口 AMBA:将将RISC处理器集成在其他处理器集成在其他IP芯核和外设中,它是有效连接芯核和外设中,它是有效连接IP核的核的“数字胶数字胶”,并且是,并且是ARM复用策略的重要组件。它不是芯片与复用策略的重要组件。它不是芯片与外设之间的接口,而是外设之间的接口,而是
15、ARM内核与芯片上其他元件进行通信的接口。内核与芯片上其他元件进行通信的接口。n全性能的全性能的MMU支持支持Windows CE、Linux、Palm OS等多种主流嵌入等多种主流嵌入式操作系统。式操作系统。MMU:MemoryManagementUnit,内存管理单元,负责虚拟地址与,内存管理单元,负责虚拟地址与物理地址的转换。达到每个用户进程都拥有自己独立的地址空间的目物理地址的转换。达到每个用户进程都拥有自己独立的地址空间的目标。标。n MPU(Memory Protection Unit,内存保护单元)支持实时操作系统,内存保护单元)支持实时操作系统n 支持数据支持数据Cache(高
16、速缓冲存储器)高速缓冲存储器)和指令和指令Cache112.2 ARM 920T简介简介ARM920T是ARM920TDMI系列中的一款通用性的微处理器,ARM920TDMI系列微处理器包含如下几种类型的内核。ARM9TDMI:只有内核。ARM940T:由内核、高速缓存和内存保护单元(MPU)组成。ARM920T:由内核、高速缓存和内存管理单元(MMU)组成。12ARM920T以以ARM9TDMI为内核,增加了高速缓存和内存管理单元为内核,增加了高速缓存和内存管理单元(MMU),系统结构图如图),系统结构图如图4.3所示。所示。ARM920T 结构功能图结构功能图内置追踪宏单元:内置追踪宏单元
17、:ETM定义了一个物理跟踪端定义了一个物理跟踪端口用来传输程序执行流口用来传输程序执行流程的信息程的信息 RISC CPU16K字节字节指令缓存指令缓存指令存储器指令存储器管理单元管理单元高级微处理器高级微处理器总线架构总线架构协处理器:系统协处理器:系统控制处理器控制处理器16K字节字节数据缓存数据缓存数据存储器数据存储器管理单元管理单元写缓冲器写缓冲器13ARM920T处理器的主要特性处理器的主要特性nARM9TDMI 内核,内核,ARM v4T 架构(架构(ARM版本版本4,支持,支持Thumb)n 两套指令集:两套指令集:ARM高性能高性能32位指令集、位指令集、Thumb高代码密高代
18、码密度度16位指令集。位指令集。n 5级流水线结构级流水线结构n 16K字节数据缓存、指令缓存字节数据缓存、指令缓存n 标准的标准的ARMv4存储器管理单元(存储器管理单元(MMU)n 8位、位、16位、位、32位的指令总线与数据总线。位的指令总线与数据总线。142.2.1 ARM920T内核编程模型内核编程模型字(字(Word),在),在ARM体系结构中,字的长度为体系结构中,字的长度为32位,而在位,而在8位位/16位处理器体系结构中,字的长度一般为位处理器体系结构中,字的长度一般为16位。位。半字(半字(Half-Word),在),在ARM体系结构中,半字的长度为体系结构中,半字的长度为
19、16位,与位,与8位位/16位处理器体系结构中字的长度一致。位处理器体系结构中字的长度一致。字节(字节(Byte),在),在ARM体系结构和体系结构和8位位/16位处理器体系结构中,字位处理器体系结构中,字节的长度均为节的长度均为8位。位。指令长度可以是指令长度可以是32位(在位(在ARM状态下),也可以为状态下),也可以为16位(在位(在Thumb状态下)。状态下)。ARM920T中支持字节(中支持字节(8位)、半字(位)、半字(16位)、字(位)、字(32位)位)3种数种数据类型,其中,字需要据类型,其中,字需要4字节对齐,半字需要字节对齐,半字需要2字节对齐。字节对齐。15ARM微处理器
20、的工作状态微处理器的工作状态从编程的角度看,从编程的角度看,ARM920T微处理器的工作状态一般有两种:微处理器的工作状态一般有两种:ARM状态状态,此时处理器执行,此时处理器执行32位的、字对齐的位的、字对齐的ARM指令;指令;Thumb状态状态,此时处理器执行,此时处理器执行16位的、半字对齐的位的、半字对齐的Thumb指令。指令。ARM指令集和指令集和Thumb指令集均有切换处理器状态的指令,在程序的执行指令集均有切换处理器状态的指令,在程序的执行过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工过程中,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态的转变并不影
21、响处理器的工作模式和相应寄存器中的内容。但作状态的转变并不影响处理器的工作模式和相应寄存器中的内容。但ARM微处理器在开始执行代码时,应该处于微处理器在开始执行代码时,应该处于ARM状态。状态。当操作数寄存器的状态位(位当操作数寄存器的状态位(位0)为)为1时,可以采用执行时,可以采用执行BX指令(跳转指指令(跳转指令)的方法,使微处理器从令)的方法,使微处理器从ARM状态切换到状态切换到Thumb状态。当操作数寄存状态。当操作数寄存器的状态位为器的状态位为0时,执行时,执行BX指令可以使微处理器从指令可以使微处理器从Thumb状态切换到状态切换到ARM状态。此外,在处理器进行异常处理时,将状
22、态。此外,在处理器进行异常处理时,将PC指针放入异常模式链指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。状态。162.2.2 ARM 体系结构的存储器格式体系结构的存储器格式ARM920T体系结构将存储器看做是从零地址开始的字节的线性组体系结构将存储器看做是从零地址开始的字节的线性组合。从合。从0字节到字节到3字节放置第字节放置第1个存储的字数据,从第个存储的字数据,从第4个字节到第个字节到第7个个字节放置第字节放置第2个存储的字数据,依次排列。作为个存储的字数据,依次排列。作为32位的
23、微处理器,位的微处理器,ARM920T体系结构所支持的最大寻址空间为体系结构所支持的最大寻址空间为4GB(232字节)。字节)。ARM920T体系结构可以用两种方法存储字数据,分别称为大端格体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。式和小端格式。大端格式中字数据的高字节存储在低地址中,而字数据的低字节大端格式中字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,如下图所示。则存放在高地址中,如下图所示。17与大端存储格式相反,在小端存储格式中,低地址中存放与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。如的是字
24、数据的低字节,高地址存放的是字数据的高字节。如下图所示下图所示:182.2.3 处理器模式处理器模式ARM920T支持支持7种运行模式,分别为:种运行模式,分别为:用户模式(用户模式(usr),),ARM处理器正常的程序执行状态;处理器正常的程序执行状态;快速中断模式(快速中断模式(fiq),),用于高速数据传输或通道处理;用于高速数据传输或通道处理;外部中断模式(外部中断模式(irq),),用于通用的中断处理;用于通用的中断处理;管理模式(管理模式(svc),),操作系统使用的保护模式;操作系统使用的保护模式;数据访问终止模式(数据访问终止模式(abt),),当数据或指令预取终止时进入该模式
25、,可用当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护;于虚拟存储及存储保护;系统模式(系统模式(sys),),运行具有特权的操作系统任务;运行具有特权的操作系统任务;未定义指令中止模式(未定义指令中止模式(und),),当未定义的指令执行时进入该模式,可用当未定义的指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。于支持硬件协处理器的软件仿真。ARM微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处微处理器的运行模式可以通过软件改变,也可以通过外部中断或异常处理改变。理改变。大多数的应用程序运行在用户模式下大多数的应用程序运行在用户模式下,当处理器运行在用户模式下
26、时,当处理器运行在用户模式下时,某些被保护的系统资源是不能被访问的。某些被保护的系统资源是不能被访问的。除用户模式以外,其余的除用户模式以外,其余的6种模式称为种模式称为非用户模式或特权模式非用户模式或特权模式;其中除去用;其中除去用户模式和系统模式以外的户模式和系统模式以外的5种又称为异常模式,常用于处理中断或异常,以及访种又称为异常模式,常用于处理中断或异常,以及访问受保护的系统资源等情况。问受保护的系统资源等情况。192.2.4 寄存器组织寄存器组织 ARM920T共有共有37个个32位寄存器,其中位寄存器,其中31个为通用寄存器,个为通用寄存器,6个为状态寄存器。但是这些寄存器不能被同
27、时访问,具体哪些个为状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决于微处理器的工作状态及具体的寄存器是可编程访问的,取决于微处理器的工作状态及具体的运行模式。运行模式。在在ARM状态下,任一时刻可以访问状态下,任一时刻可以访问16个通用寄存器个通用寄存器和和12个状态寄存器。个状态寄存器。1、ARM状态下的寄存器组织(状态下的寄存器组织(R0R15)未分组寄存器未分组寄存器R0R7分组寄存器分组寄存器R8R14程序计数器程序计数器PC(R15)1)未分组寄存器)未分组寄存器R0-R7:在所有运行模式下,指向同一个物理:在所有运行模式下,指向同一个物理寄存器寄存器2
28、02)分组寄存器)分组寄存器R8-R14:每一次所访问的物理寄存器与处理器当:每一次所访问的物理寄存器与处理器当前的运行模式有关。前的运行模式有关。R8-R12:两种模式,对应两个不同的物理寄存器两种模式,对应两个不同的物理寄存器R13、R14:7种模式(用户模式与系统模式共用),对应种模式(用户模式与系统模式共用),对应6个不个不 同的物理寄存器(区分记号同的物理寄存器(区分记号R13、R14)R14也称为子程序连接寄存器(也称为子程序连接寄存器(Subroutine Link Register)或连)或连接寄存器接寄存器LR。当执行。当执行BL子程序调用指令时,子程序调用指令时,R14中得
29、到中得到R15(程(程序计数器序计数器PC)的备份。在其他情况下,)的备份。在其他情况下,R14用做通用寄存器。与用做通用寄存器。与之类似,当发生中断或异常时,对应的分组寄存器之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt和和R14_und用来保存用来保存R15的返回值。的返回值。213)程序计数器)程序计数器PC(R15)寄存器寄存器R15用做程序计数器(用做程序计数器(PC)。在)。在ARM状态下,位状态下,位1:0为为0,位,位31:2用于保存用于保存PC;在;在Thumb状态下,位状态下,位0为为0,位,位31:1用于保存用于
30、保存PC。4)寄存器)寄存器R16用做当前程序状态寄存器(用做当前程序状态寄存器(Current Program Status Register,CPSR),),CPSR可在任何运行模式下被访可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。以及其他一些相关的控制和状态位。22用户与系统模式用户与系统模式快速中断快速中断模式模式管理模式管理模式终止模式终止模式中断模式中断模式未定义未定义模式模式232.Thumb状态下的寄存器组织状态下的寄存器组织Thumb状态下的寄存器集是状态
31、下的寄存器集是ARM状态下寄存器集的一个子集,程序状态下寄存器集的一个子集,程序可以直接访问可以直接访问8个通用寄存器(个通用寄存器(R7R0)、程序计数器()、程序计数器(PC)、堆栈)、堆栈指针(指针(SP)、连接寄存器()、连接寄存器(LR)和)和CPSR。同时,在每一种特权模。同时,在每一种特权模式下都有一组式下都有一组SP、LR和和SPSR。如图所示表明。如图所示表明Thumb状态下的寄存状态下的寄存器组织。器组织。Thumb状态下的寄存器组织与状态下的寄存器组织与ARM状态下的寄存器组织的关系:状态下的寄存器组织的关系:Thumb状态下和状态下和ARM状态下的状态下的R0R7是相同
32、的;是相同的;Thumb状态下和状态下和ARM状态下的状态下的CPSR和所有的和所有的SPSR是相同的;是相同的;Thumb状态下的状态下的SP对应于对应于ARM状态下的状态下的R13;Thumb状态下的状态下的LR对应于对应于ARM状态下的状态下的R14;Thumb状态下的程序计数器对应于状态下的程序计数器对应于ARM状态下的状态下的R15。24高位寄存器高位寄存器R8R15并不是标准寄存器集的一部分,但可使用汇编语言并不是标准寄存器集的一部分,但可使用汇编语言程序受限制地访问这些寄存器,将其用做快速的暂存器。如:程序受限制地访问这些寄存器,将其用做快速的暂存器。如:MOV、CMP、ADD指
33、令。指令。252.2.5 程序状态寄存器程序状态寄存器ARM920T体系结构中包含一个当前程序状态寄存器(体系结构中包含一个当前程序状态寄存器(CPSR)和)和5个备份的个备份的程序状态寄存器(程序状态寄存器(SPSR)。备份的程序状态寄存器用来进行异常处理,其功能)。备份的程序状态寄存器用来进行异常处理,其功能包括:包括:保存保存ALU中的当前操作信息;中的当前操作信息;控制允许和禁止中断;控制允许和禁止中断;设置处理器的运行模式。设置处理器的运行模式。程序状态寄存器每一位的安排如图所示。程序状态寄存器每一位的安排如图所示。261条件码标志(条件码标志(Condition Code Flag
34、s)N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。条件码标志各位的具体含义如表所示。变,并且可以决定某条指令是否被执行。条件码标志各位的具体含义如表所示。272控制位控制位CPSR的低的低8位(包括位(包括I、F、T和和M4:0)称为控制位,当发生异常时这些位)称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。中断禁止位中断禁止位I、F:置:置1时,禁止时,禁止IRQ中断和中断和F
35、IQ中断。中断。T标志位标志位:该位反映处理器的运行状态。当该位为:该位反映处理器的运行状态。当该位为1时,程序运行于时,程序运行于Thumb状态,否则运行于状态,否则运行于ARM状态。该信号反映在外部引脚状态。该信号反映在外部引脚TBIT上。在程序中不得修上。在程序中不得修改改CPSR中的中的TBIT位,否则处理器工作状态不能确定。位,否则处理器工作状态不能确定。运行模式位运行模式位M4:0:M0、M1、M2、M3、M4是模式位。这些位决定了处是模式位。这些位决定了处理器的运行模式。具体含义如表理器的运行模式。具体含义如表4.2所示。所示。保留位保留位:CPSR中的其余位为保留位,当改变中的
36、其余位为保留位,当改变CPSR中的条件码标志位或者中的条件码标志位或者控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。保留位控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。保留位将用于将用于ARM版本的扩展。版本的扩展。282.2.6异常(异常(Exceptions)当正常的程序执行流程发生暂时的停止时,称之为异常。在处理异常之前,当正常的程序执行流程发生暂时的停止时,称之为异常。在处理异常之前,当前处理器的状态必须保留,这样,当异常处理完成之后,当前程序可以继续执当前处理器的状态必须保留,这样,当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发
37、生,处理器会按固定的优先级对多个异常进行处行。处理器允许多个异常同时发生,处理器会按固定的优先级对多个异常进行处理。理。1、对异常的响应:、对异常的响应:按以下步骤操作按以下步骤操作(1)将下一条指令的地址存入相应连接寄存器)将下一条指令的地址存入相应连接寄存器LR。若异常是从。若异常是从ARM状态进状态进入,入,LR寄存器中保存的是下一条指令的地址(当前寄存器中保存的是下一条指令的地址(当前PC4或或PC8,与异常的,与异常的类型有关);若异常是从类型有关);若异常是从Thumb状态进入,则在状态进入,则在LR寄存器中保存当前寄存器中保存当前PC的偏移的偏移量。这样,异常处理程序就不需要确定
38、异常是从何种状态进入的,程序在处理异量。这样,异常处理程序就不需要确定异常是从何种状态进入的,程序在处理异常返回时能从正确的位置重新开始执行。例如:在软件中断异常常返回时能从正确的位置重新开始执行。例如:在软件中断异常SWI中,指令中,指令 MOV PC,R14_svc总是返回到下一条指令,而不管总是返回到下一条指令,而不管SWI是在是在ARM状态执行,还状态执行,还是在是在Thumb状态执行。状态执行。(2)将)将CPSR复制到相应的复制到相应的SPSR中。中。(3)根据异常类型,强制设置)根据异常类型,强制设置CPSR的运行模式位。的运行模式位。(4)强制)强制PC从相应的异常向量地址取下
39、一条指令执行,从而跳转到相应的从相应的异常向量地址取下一条指令执行,从而跳转到相应的异常处理程序处。异常处理程序处。292、从异常返回:、从异常返回:进入异常处理前可以设置中断禁止位,以禁止异常处理时对中断进入异常处理前可以设置中断禁止位,以禁止异常处理时对中断的响应。如果异常发生时,处理器处于的响应。如果异常发生时,处理器处于Thumb状态,则当异常向量地状态,则当异常向量地址加载入址加载入PC时,处理器自动切换到时,处理器自动切换到ARM状态。异常处理完毕之后,执状态。异常处理完毕之后,执行以下操作从异常返回:行以下操作从异常返回:(1)将连接寄存器)将连接寄存器LR的值减去相应的偏移量后
40、送到的值减去相应的偏移量后送到PC中。中。(2)将)将SPSR复制回复制回CPSR中。中。(3)若在进入异常处理时设置了中断禁止位,要在此清除。)若在进入异常处理时设置了中断禁止位,要在此清除。3、各类异常的具体描述、各类异常的具体描述(1)FIQ(快速中断请求)(快速中断请求)(2)IRQ(中断请求)(中断请求)(3)Abort(中止)(中止)(4)Software Interrupt(软件中断)(软件中断)(5)Undefined Instruction(未定义指令)(未定义指令)304、异常进入、异常进入/退出退出 表中总结了进入异常处理时保存在相应表中总结了进入异常处理时保存在相应R1
41、4中的中的PC值,及在退出异常值,及在退出异常处理时推荐使用的指令。处理时推荐使用的指令。315、异常向量及异常处理、异常向量及异常处理 应用程序中的异常处理:当系统运行时,异常可能会随时发生。应用程序中的异常处理:当系统运行时,异常可能会随时发生。为保证在为保证在ARM处理器发生异常时不至于处于未知状态,在应用程序的处理器发生异常时不至于处于未知状态,在应用程序的设计中,首先要进行异常处理。采用的方式是在异常向量表中的特定设计中,首先要进行异常处理。采用的方式是在异常向量表中的特定位置放置一条跳转指令,跳转到异常处理程序。当位置放置一条跳转指令,跳转到异常处理程序。当ARM处理器发生异处理器
42、发生异常时,程序计数器常时,程序计数器PC会被强制设置为对应的异常向量,从而跳转到异会被强制设置为对应的异常向量,从而跳转到异常处理程序。当异常处理完成以后,返回到主程序继续执行。各异常常处理程序。当异常处理完成以后,返回到主程序继续执行。各异常向量地址如表所示。向量地址如表所示。32当多个异常同时发生时,系统根据固定的优先级决定异常的处理顺序。当多个异常同时发生时,系统根据固定的优先级决定异常的处理顺序。异常优先级由高到低的排列次序为:复位、数据中止、异常优先级由高到低的排列次序为:复位、数据中止、FIQ、IRQ、预取指、预取指令中止、未定义指令、令中止、未定义指令、SWI。332.2.7
43、ARM微处理器的指令集微处理器的指令集 加载加载/存储型,指令集仅能处理寄存器中的数据,处理结存储型,指令集仅能处理寄存器中的数据,处理结果要放回寄存器中。果要放回寄存器中。跳转指令跳转指令 数据处理指令数据处理指令 程序状态寄存器(程序状态寄存器(PSR)处理指令)处理指令 加载加载/存储指令存储指令 协处理器指令协处理器指令 异常产生指令异常产生指令341、ARM 指令集指令集1)跳转指令:实现程序流程的跳转)跳转指令:实现程序流程的跳转 直接向程序计数器直接向程序计数器PC写入跳转地址值,可在写入跳转地址值,可在4GB地址空间中的任意跳转地址空间中的任意跳转 MOV LR,PC;保存将来
44、的返回地址值;保存将来的返回地址值 从当前指令向前或向后的从当前指令向前或向后的32MB地址空间的跳转,有地址空间的跳转,有4条指令:条指令:(1)B指令指令:B条件条件 目标地址目标地址(2)BL指令:指令:BL条件条件 目标地址目标地址(3)BLX指令:指令:BLX 目标地址目标地址(4)BX指令:指令:BX条件条件 目标地址目标地址2)数据处理指令)数据处理指令(1)MOV指令:加载数据指令:加载数据 MOV条件条件S 目的寄存器,源操作数目的寄存器,源操作数 如:如:MOV R1,R0 MOV PC,R14 MOV R1,R0,LSL#335(2)MVN指令:取反后加载数据指令:取反后
45、加载数据 MVN条件条件S 目的寄存器,源操作数目的寄存器,源操作数(3)CMP指令:比较数据指令:比较数据 CMP条件条件 操作数操作数1,操作数,操作数2(4)CMN指令:取反后比较指令:取反后比较 CMN条件条件 操作数操作数1,操作数,操作数2(5)TST指令:按位与运算指令:按位与运算 TST条件条件 操作数操作数1,操作数,操作数2(6)TEQ指令:按位异或指令:按位异或 TEQ条件条件 操作数操作数1,操作数,操作数2(7)ADD指令:相加并存储指令:相加并存储 ADD条件条件S 目的寄存器,操作数目的寄存器,操作数1,操作数,操作数2(8)ADC指令:相加并加上标志位,再存储指
46、令:相加并加上标志位,再存储 ADC条件条件S 目的寄存器,操作数目的寄存器,操作数1,操作数,操作数2(9)SUB指令:相减并存放在目的寄存器指令:相减并存放在目的寄存器(10)SBC指令:相减并减去标志位,再存放在目的寄存器指令:相减并减去标志位,再存放在目的寄存器(11)RSB指令:逆向减法,再存放在目的寄存器指令:逆向减法,再存放在目的寄存器(12)RSC指令:逆向减法,再减去标志位,再存放在目的寄存器指令:逆向减法,再减去标志位,再存放在目的寄存器36(13)AND指令:操作数逻辑与运算指令:操作数逻辑与运算(14)ORR指令:操作数逻辑或运算指令:操作数逻辑或运算(15)EOR指令
47、:操作数逻辑异或运算指令:操作数逻辑异或运算(16)BIC指令:清除操作数指令:清除操作数1的某些位,并把结果放置到目的寄存器的某些位,并把结果放置到目的寄存器4)程序状态寄存器访问指令:)程序状态寄存器访问指令:l MRS条件条件 通用寄存器,程序状态寄存器(通用寄存器,程序状态寄存器(CPSR/SPSR)l MSR条件条件 程序状态寄存器(程序状态寄存器(CPSR/SPSR)_,操作数,操作数5)加载)加载/存储指令:存储指令:l LDR条件条件 目的寄存器,目的寄存器,l LDRB条件条件目的寄存器,目的寄存器,l LDRH条件条件目的寄存器,目的寄存器,l STR 条件条件源寄存器,源
48、寄存器,l STRB 条件条件源寄存器,源寄存器,l STRH 条件条件源寄存器,源寄存器,376)批量数据加载)批量数据加载/存储指令:存储指令:l LDM(或(或STM)条件条件类型类型 基址寄存器基址寄存器!,寄存器列表,寄存器列表/7)数据交换指令:)数据交换指令:l SWP条件条件 目的寄存器,源寄存器目的寄存器,源寄存器1,源寄存器源寄存器2l SWPB条件条件 目的寄存器,源寄存器目的寄存器,源寄存器1,源寄存器源寄存器28)移位指令:)移位指令:l 通用寄存器,通用寄存器,LSL(或(或ASL)操作数)操作数l通用寄存器,通用寄存器,LSR(或(或ASR)操作数)操作数l通用寄
49、存器,通用寄存器,ROR(或(或RRX)操作数)操作数9)协处理器指令:)协处理器指令:CDP 通知通知ARM协处理器完成特定操作协处理器完成特定操作LDC 数据传送数据传送STCMCRMRC10)异常产生指令:)异常产生指令:l SWI条件条件 24位的立即数位的立即数l BKPT 16位的立即数位的立即数382、ARM汇编器的伪指令伪指令:伪指令:没有相对应的操作码,为完成汇编程序作各种准备工作。没有相对应的操作码,为完成汇编程序作各种准备工作。1)符号定义伪指令)符号定义伪指令l GBLA(GBLL或或GBLS)全局变量名)全局变量名GBLA 定义一个全局的数字变量,并初始化为定义一个全
50、局的数字变量,并初始化为0GBLL 定义一个全局的逻辑变量,并初始化为定义一个全局的逻辑变量,并初始化为FGBLS 定义一个全局的字符串变量,并初始化为空定义一个全局的字符串变量,并初始化为空l LCLA(LCLL或或LCLS)局部变量名)局部变量名 用于定义一个用于定义一个ARM程序中的局部变量,并将其初始化程序中的局部变量,并将其初始化l 变量名变量名 SETA(SETL或或SETS)表达式)表达式 用于给已定义的全局变量或局部变量赋值用于给已定义的全局变量或局部变量赋值l 名称名称 RLIST寄存器列表寄存器列表:对一个通用寄存器列表定义名称:对一个通用寄存器列表定义名称392)数据定义