嵌入式系统设计实验课件.pdf
基于ARM的嵌入式系统 设计与实现 Design and Implementation of ARM Based Embedded Systems Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 1.ARM处理器介绍(1) ARM( Advanced RISC Machines)公司是全球 领先的16/32位RISC微处理器知识产权设计供应 商。ARM公司通过转让RISC微处理器,外围和系 统芯片设计技术给合作伙伴,使他们能用这些技 术来生产各具特色的芯片。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 1.ARM处理器介绍(2) ARM已成为移动通信、手持设备、多媒体数字 消费嵌入式解决方案的RISC标准。 ARM处理器有 三大特点: 体积小、功耗低、低成本而高性能; 16/32位双指令集; 全球众多的合作伙伴。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 1.ARM处理器介绍(3) ARM处理器目前有5个系列产品:ARM7、 ARM9、ARM9E、ARMl0和SecurCore。其中 ARM7是低功耗的32位核,最适合应用于对价位 和功耗敏感的产品,它又分为应用于实时环境的 ARM7TDMI、ARM7TDMI-S,适用于开放平台的 ARM720T,以及适用于DSP运算及支持Java的 ARM7EJ等。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2. ARM处理器编程 y 2.1 ARM 处理器概述 y 2.2 ARM 处理器结构 y 2.3 ARM 处理器的编程模型 y 2.4 ARM 处理器的指令系统 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.1 ARM处理器概述(1) y ARM (Advanced RISC Machines)公司成立于 1990年11月,其前身为 Acorn计算机公司,该公 司主要设计ARM系列RISC处理器内核 y 授权ARM内核给生产和销售半导体的合作伙伴 ARM 公司不生产芯片 IP( Intelligence Property) y 另外也提供基于ARM架构的开发设计技术 软件工具, 评估板, 调试工具,应用软件, 总线架构, 外围设备单元,等等 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.1 ARM处理器概述(2) 一、ARM微处理器的特点 y 采用RISC架构的ARM微处理器一般具有如下特点 y 1、体积小、低功耗、低成本、高性能; y 2、支持Thumb(16位)/ARM(32位)双指令 集,能很好的兼容8位/16位器件; y 3、大量使用寄存器,指令执行速度更快; y 4、大多数数据操作都在寄存器中完成; y 5、寻址方式灵活简单,执行效率高; y 6、指令长度固定; Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.1 ARM处理器概述(3) 二、ARM微处理器系列 y ARM微处理器目前包括下面几个系列。 1. ARM7系列 2. ARM9系列 3. ARM9E系列 4. ARM10E系列 5. SecurCore系列 6. Intel的Xscale 7. Intel的StrongARM Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.1 ARM处理器概述(4) 1. ARM7微处理器系列 y ARM7微处理器系列具有如下特点: y - 具有嵌入式ICE-RT逻辑,调试开发方便。 y - 极低的功耗,适合对功耗要求较高的应用,如便携式产品。 y - 能够提供0.9MIPS/MHz的三级流水线结构。 y - 代码密度高并兼容16位的Thumb指令集。 y - 对操作系统的支持广泛,包括Windows CE、Linux、Palm OS等。 y - 指令系统与ARM9系列、ARM9E系列和ARM10E系列兼容, 便于用户的产品升级换代。 y - 主频最高可达130MIPS,高速的运算处理能力能胜任绝大多 数的复杂应用。 y 主要应用领域为:工业控制、Internet设备、网络和调制解调器 设备、移动电话等多种多媒体和嵌入式应用。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.1 ARM处理器概述(5) y ARM7系列微处理器包括如下几种类型的核: ARM7TDMI、ARM7TDMI-S、ARM720T、 ARM7EJ。其中,ARM7TMDI是目前使用最广泛 的32位嵌入式RISC处理器,属低端ARM处理器 核。TDMI的基本含义为: y T: 支持16为压缩指令集Thumb; y D: 支持片上Debug; y M:内嵌硬件乘法器(Multiplier) y I: 嵌入式ICE,支持片上断点和调试点; Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.1 ARM处理器概述(6) 2. ARM9微处理器系列 y 具有以下特点: y - 5级整数流水线,指令执行效率更高。 y - 提供1.1MIPS/MHz的哈佛结构。 y - 支持32位ARM指令集和16位Thumb指令集。 y - 支持32位的高速AMBA总线接口。 y - 全性能的MMU,支持Windows CE、Linux、Palm OS等多种主 流嵌入式操作系统。 y - MPU支持实时操作系统。 y - 支持数据Cache和指令Cache,具有更高的指令和数据处理能 力。 y 主要应用于无线设备、仪器仪表、安全系统、机顶盒、高端打印 机、数字照相机和数字摄像机等。 y ARM9系列微处理器包含ARM920T、ARM922T和ARM940T。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.1 ARM处理器概述(7) 3. ARM9E微处理器系列 y ARM9E系列微处理器的主要特点如下: y - 支持DSP指令集,适合于需要高速数字信号处理的场合。 y - 5级整数流水线,指令执行效率更高。 y - 支持32位ARM指令集和16位Thumb指令集。 y - 支持32位的高速AMBA总线接口。 y - 支持VFP9浮点处理协处理器。 y - 全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌 入式操作系统。 y - MPU支持实时操作系统。 y - 支持数据Cache和指令Cache,具有更高的指令和数据处理能力。 y - 主频最高可达300MIPS。 y 主要应用于下一代无线设备、数字消费品、成像设备、工业控制、存储 设备和网络设备等领域。 y ARM9E系列微处理器包含ARM926EJ-S、ARM946E-S和ARM966E-S Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.1 ARM处理器概述(8) 4.ARM10E微处理器系列 y ARM10E系列微处理器的主要特点如下: y - 支持DSP指令集,适合于需要高速数字信号处理的场合。 y - 6级整数流水线,指令执行效率更高。 y - 支持32位ARM指令集和16位Thumb指令集。 y - 支持32位的高速AMBA总线接口。 y - 支持VFP10浮点处理协处理器。 y - 全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式 操作系统。 y - 支持数据Cache和指令Cache,具有更高的指令和数据处理能力 y - 主频最高可达400MIPS。 y - 内嵌并行读/写操作部件。 y 主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信 息系统等领域。 y ARM10E系列微处理器包含ARM1020E、ARM1022E和ARM1026EJ-S。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.1 ARM处理器概述(9) 5. SecurCore微处理器系列 y 除具有ARM体系结构主要特点外,还在系统安全方面具如 下特点: y - 带有灵活的保护单元,以确保操作系统和应用数据的 安全。 y - 采用软内核技术,防止外部对其进行扫描探测。 y - 可集成用户自己的安全特性和其他协处理器。 y 主要应用于一些对安全性要求较高的应用产品及应用系 统,如电子商务、电子政务、电子银行业务、网络和认证 系统等领域。 y SecurCore系列微处理器包含SecurCore SC100、 SecurCore SC110、SecurCore SC200和SecurCore SC210四种类型。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.1 ARM处理器概述(10) y 6. StrongARM微处理器系列 y Intel StrongARM SA-1100处理器是采用ARM体系结构高 度集成的32位RISC微处理器。它融合了Intel公司的设计 和处理技术以及ARM体系结构的电源效率,采用在软件上 兼容ARMv4体系结构、同时采用具有Intel技术优点的体系 结构。 y Intel StrongARM处理器是便携式通讯产品和消费类电子 产品的理想选择,已成功应用于多家公司的掌上电脑系列 产品。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.1 ARM处理器概述(11) y 7. Xscale处理器 y Xscale 处理器是基于ARMv5TE体系结构的解决 方案,是一款全性能、高性价比、低功耗的处理 器。它支持16位的Thumb指令和DSP指令集,已 使用在数字移动电话、个人数字助理和网络产品 等场合。 y Xscale 处理器是Intel目前主要推广的一款ARM微 处理器。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.2 ARM处理器结构(1) y 一、 RISC体系结构 y RISC —Reduced Instruction Set Computer,精简指令集计算机RISC 体系结构应具有如下特点: y - 采用固定长度的指令格式,指令归整、简单、基本寻址方式有2~3 种。 y - 使用单周期指令,便于流水线操作执行。 y - 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/ 存 储指令可以访问存储器,以提高指令的执行效率。 y 除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的 前提下尽量缩小芯片的面积,并降低功耗: y - 所有的指令都可根据前面的执行结果决定是否被执行,从而提高指 令的执行效率。 y - 可用加载/存储指令批量传输数据,以提高数据的传输效率。 y - 可在一条数据处理指令中同时完成逻辑处理和移位处理。 y - 在循环处理中使用地址的自动增减来提高运行效率。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.2 ARM处理器结构(2) 二、 ARM处理器的寄存器结构 y ARM处理器共有37个寄存器,这些寄存器包括: y - 31个通用寄存器,包括程序计数器(PC指针),均为 32位的寄存器。 y - 6个状态寄存器,用以标识CPU的工作状态及程序的运 行状态,均为32位,目前只使用了其中的一部分。 y 同时,ARM处理器又有7种不同的处理器模式,在每一种 处理器模式下均有一组相应的寄存器与之对应。即在任意 一种处理器模式下,可访问的寄存器包括15个通用寄存器 (R0~R14)、一至二个状态寄存器和程序计数器。在所 有的寄存器中,有些是在7种处理器模式下共用的同一个 物理寄存器,而有些寄存器则是在不同的处理器模式下有 不同的物理寄存器。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.2 ARM处理器结构(3) y 三、 ARM处理器的指令结构 y ARM微处理器的在较新的体系结构中支持两种指 令集:ARM指令集和Thumb指令集。 y 其中,ARM指令为32位的长度,Thumb指令为16 位长度。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.3 ARM 处理器的编程模型 y 本节的主要内容: 一 ARM微处理器的工作状态 二 ARM体系结构的存储器格式 三 指令长度及数据类型 四 ARM微处理器的工作模式 五 ARM体系结构的寄存器组织 七 ARM微处理器的异常处理 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.3 ARM 处理器的编程模型 y 首先对字(Word)、半字(Half-Word)、字节(Byte) 的概念作一个说明: y 字(Word):在ARM体系结构中,字的长度为32位,而 在8位/16位处理器体系结构中,字的长度一般为16位,请 读者在阅读时注意区分。 y 半字(Half-Word):在ARM体系结构中,半字的长度为 16位,与8位/16位处理器体系结构中字的长度一致。 y 字节(Byte):在ARM体系结构和8位/16位处理器体系结 构中,字节的长度均为8位。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 一 ARM微处理器的工作状态(1) y ARM微处理器的工作状态一般有两种,并可在两 种状态之间切换: y - 第一种为ARM状态,此时处理器执行32位的字 对齐的ARM指令; y - 第二种为Thumb状态,此时处理器执行16位 的、半字对齐的Thumb指令。 y 处理器工作状态的转变并不影响处理器的工作模 式和相应寄存器中的内容。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 一 ARM微处理器的工作状态(2) y 状态切换方法: y ARM微处理器在开始执行代码时,应该处于ARM状态。 y 进入Thumb状态:当操作数寄存器的状态位(位0)为1 时,可采用执行BX指令的方法,使微处理器从ARM状态 切换到Thumb状态。此外,当处理器处于Thumb状态时发 生异常(如IRQ、FIQ、Undef、Abort等),则异常处理 返回时,自动切换到Thumb状态。 y 进入ARM状态:当操作数寄存器的状态位为0时,执行BX 指令时可使微处理器从Thumb状态切换到ARM状态。此 外,在处理器进行异常处理时,把PC指针放入异常模式 链接寄存器中,并从异常向量地址开始执行程序,也可以 使处理器切换到ARM状态。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 二 ARM体系结构的存储器格式(1) y ARM体系结构将存储器看作是从零地址开始的字 节的线性组合。从零字节到三字节放置第一个存 储的字数据,从第四个字节到第七个字节放置第 二个存储的字数据,依次排列。作为32位的微处 理器,ARM体系结构所支持的最大寻址空间为 4GB(232字节)。 y ARM体系结构可以用两种方法存储字数据,称之 为大端格式和小端格式。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 二 ARM体系结构的存储器格式(2) y 大端格式: y 在这种格式中,字数据的高字节存储在低地址中,而字数 据的低字节则存放在高地址中,如图 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 二 ARM体系结构的存储器格式(3) y 小端格式: y 与大端存储格式相反,在小端存储格式中,低地址中存放 的是字数据的低字节,高地址存放的是字数据的高字节。 如图 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 三 指令长度及数据类型 y ARM 采用的是32位架构。 y ARM 约定:Byte : 8 bits Halfword :16 bits (2 byte) Word : 32 bits (4 byte) y 大部分ARM core 提供: ARM 指令集(32-bit) Thumb 指令集(16-bit ) Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 四 ARM处理器工作模式(1) ARM 有7个基本工作模式: User:非特权模式,大部分任务执行在这种模式 y 正常程序执行的模式 FIQ:当一个高优先级(fast)中断产生时将会进入这 种模式 y 高速数据传输和通道处理 IRQ:当一个低优先级(normal)中断产生时将会进入 这种模式 y 通常的中断处理 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 四 ARM处理器工作模式(2) Supervisor:当复位或软中断指令执行时将会进 入这种模式 y 供操作系统使用的一种保护模式 Abort: 当存取异常时将会进入这种模式 y 虚拟存储及存储保护 Undef: 当执行未定义指令时会进入这种模式 y 软件仿真硬件协处理器 System: 使用和User模式相同寄存器集的特权模 式 y 特权级的操作系统任务 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(1) ARM微处理器共有37个32位寄存器,其中31个为 通用寄存器,6个为状态寄存器。但是这些寄存器 不能被同时访问,具体哪些寄存器是可编程访问 的,取决微处理器的工作状态及具体的运行模式。 但在任何时候,通用寄存器R14~R0、程序计数 器PC、一个或两个状态寄存器都是可访问的。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(2) 1. ARM状态下的寄存器组织 通用寄存器: y 通用寄存器包括R0~R15,可以分为三类: y ─ 未分组寄存器R0~R7; y ─ 分组寄存器R8~R14 y ─ 程序计数器PC(R15) Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(3) y 未分组寄存器R0~R7: y 在所有的运行模式下,未分组寄存器都指向同一个物理 寄存器,他们未被系统用作特殊的用途。(在进行程序设 计时应注意) y 分组寄存器R8~R14 y 对于分组寄存器,他们每一次所访问的物理寄存器与处 理器当前的运行模式有关。 y 对于R8~R12来说,每个寄存器对应两个不同的物理寄 存器,当使用fiq模式时,访问寄存器R8_fiq~R12_fiq; 当使用除fiq模式以外的其他模式时,访问寄存器 R8_usr~R12_usr。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(4) y 对于R13、R14来说,每个寄存器对应6个不同的 物理寄存器,其中的一个是用户模式与系统模式 共用,另外5个物理寄存器对应于其他5种不同的 运行模式。 y 采用以下的记号来区分不同的物理寄存器: y R13_ y R14_ y 其中,mode为以下几种模式之一:usr、fiq、 irq、svc、abt、und。 y 寄存器R13在ARM指令中常用作堆栈指针。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(5) y 注意:由于处理器的每种运行模式均有自己独立的物理寄 存器R13,在用户应用程序的初始化部分,一般都要初始 化每种模式下的R13,使其指向该运行模式的栈空间,这 样,当程序的运行进入异常模式时,可以将需要保护的寄 存器放入R13所指向的堆栈,而当程序从异常模式返回 时,则从对应的堆栈中恢复,采用这种方式可以保证异常 发生后程序的正常执行。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(6) y R14也称作子程序连接寄存器或连接寄存器LR。 y 当执行BL子程序调用指令时,R14中得到PC的备 份。其他情况下,R14用作通用寄存器。与之类 似,当发生中断或异常时,对应的分组寄存器 R14_svc、R14_irq、R14_fiq、R14_abt和 R14_und用来保存R15的返回值。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(7) y 寄存器R14常用在如下的情况: y 在每一种运行模式下,都可用R14保存子程序的返回地 址,当用BL或BLX指令调用子程序时,将PC的当前值拷贝 给R14,执行完子程序后,又将R14的值拷贝回PC,即可 完成子程序的调用返回。以上的描述可用指令完成: y 1、执行以下任意一条指令: MOV PC,LR BX LR y 2、在子程序入口处使用以下指令将R14存入堆栈: STMFD SP!,{,LR} y 对应的,使用以下指令可以完成子程序返回: LDMFD SP!,{,PC} Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(6) y 程序计数器PC(R15) y 寄存器R15用作程序计数器(PC)。在ARM状态下,位[1:0] 为0,位[31:2]用于保存PC;在Thumb状态下,位[0]为0, 位[31:1]用于保存PC(在ARM状态下,PC的0和1位是0, 在Thumb状态下,PC的0位是0)。 y ARM体系结构采用了多级流水线技术,对于ARM指令集而 言,PC总是指向当前指令的下两条指令的地址,即PC的 值为当前指令的地址值加8个字节。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(9) y 此图说明 在每一种 运行模式 下,哪一 些寄存器 是可以访 问的。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(10) y 寄存器R16: y 寄存器R16用作CPSR(当前程序状态寄存器), CPSR可在任何运行模式下被访问,它包括条件标 志位、中断禁止位、当前处理器模式标志位,以及 其他一些相关的控制和状态位。 y 每一种运行模式下又都有一个专用的物理状态寄存 器,称为SPSR(备份的程序状态寄存器),当异 常发生时,SPSR用于保存CPSR的当前值,从异 常退出时则可由SPSR来恢复CPSR。 y 由于用户模式和系统模式不属于异常模式,他们没 有SPSR,当在这两种模式下访问SPSR,结果是 未知的 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(11) y 2. Thumb状态下的寄存器组织 y Thumb状态下的寄存器集是ARM状态下寄存器集 的一个子集,程序可以直接访问8个通用寄存器 (R7~R0)、程序计数器(PC)、堆栈指针 (SP)、连接寄存器(LR)和CPSR。同时,在 每一种特权模式下都有一组SP、LR和SPSR。下 图表明Thumb状态下的寄存器组织。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(12) Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(13) y Thumb状态下的寄存器组织与ARM状态下的寄存器组织 的关系: y ─ Thumb状态下和ARM状态下的R0~R7是相同的。 y ─ Thumb状态下和ARM状态下的CPSR和所有的SPSR 是相同的。 y ─ Thumb状态下的SP对应于ARM状态下的R13。 y ─ Thumb状态下的LR对应于ARM状态下的R14。 y ─ Thumb状态下的程序计数器对应于ARM状态下R15 y 以上的对应关系如图所示: Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(14) Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(15) y 3.程序状态寄存器 y ARM体系结构包含一个当前程序状态寄存器 (CPSR)和五个备份的程序状态寄存器 (SPSRs)。备份的程序状态寄存器用来进行异 常处理,其功能包括: y ─ 保存ALU中的当前操作信息 y ─ 控制允许和禁止中断 y ─ 设置处理器的运行模式 y 程序状态寄存器的每一位的安排如图所示: Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 五 ARM体系结构的寄存器组织(16) 31 28 27 24 N Z C V Q J f 23 16 15 U n d e f i 8 n s y 条件位: x y N = 1-结果为负,0-结果为正或0 y Z = 1-结果为0,0-结果不为0 C =1-进位,0-借位 V =1-结果溢出,0结果没溢出 y y Q 位: 仅ARM 5TE/J架构支持 指示增强型DSP指令是否溢出 y J 位 仅ARM 5TE/J架构支持 J = 1: 处理器处于Jazelle状态 Copyright © 2003-2007 SinoSys. All Rights Reserved e d 7 6 5 4 0 I F T mode c 中断禁止位: I = 1: 禁止 IRQ. F = 1: 禁止 FIQ. T Bit 仅ARM xT架构支持 T = 0: 处理器处于 ARM 状态 T = 1: 处理器处于 Thumb 状态 Mode位(处理器模式位): 0b10000 User 0b10001 FIQ 0b10010 IRQ 0b10011 Supervisor 0b10111 Abort 0b11011 Undefined 0b11111 System 双实科技 六 ARM微处理器的异常处理(1) y 当正常的程序执行流程发生暂时的停止时,称之 为异常,例如处理一个外部的中断请求。 y ARM体系结构中的异常,与8位/16位体系结构的 中断有很大的相似之处,但异常与中断的概念并 不完全等同。 y ARM体系结构所支持的异常及具体含义如下表所 示。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 六 ARM微处理器的异常处理(2) 异常类型 具体含义 复位 当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常 处理程序处执行。 未定义指令 当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令 异常。可使用该异常机制进行软件仿真。 软件中断 该异常由执行SWI指令产生,可用于用户模式下的程序调用特权操 作指令。可使用该异常机制实现系统功能调用。 指令预取中止 若处理器预取指令的地址不存在,或该地址不允许当前指令访问, 存储器会向处理器发出中止信号,但当预取的指令被执行时,才会 产生指令预取中止异常。 数据中止 若处理器数据访问指令的地址不存在,或该地址不允许当前指令访 问时,产生数据中止异常。 IRQ(外部中 断请求) 当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生 IRQ异常。系统的外设可通过该异常请求中断服务。 FIQ(快速中 断请求) 当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产生 FIQ异常。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 六 ARM微处理器的异常处理(3) y 当异常产生时, ARM core: 拷贝 CPSR 到 SPSR_ 设置适当的 CPSR 位: 0x1C FIQ 0x18 y 改变处理器状态进入 ARM 态 IRQ 0x14 (Reserved) y 改变处理器模式进入相应的异常模式 Data Abort y 设置中断禁止位禁止相应中断 (如果需要) 0x10 0x0C Prefetch Abort 保存返回地址到 LR_ 0x08 Software Interrupt 设置 PC 为相应的异常向量 0x04 Undefined Instruction y 返回时, 异常处理需要: 0x00 Reset 从 SPSR_恢复CPSR Vector Table Vector table can be at 从LR_恢复PC 0xFFFF0000 on ARM720T Note:这些操作只能在 ARM 态执行. and on ARM9/10 family devices Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 六 ARM微处理器的异常处理(4) y 异常向量(Exception Vectors) y 异常向量表 地址 异常 进入模式 0x0000,0000 复位 管理模式 0x0000,0004 未定义指令 未定义模式 0x0000,0008 软件中断 管理模式 0x0000,000C 中止(预取指令) 中止模式 0x0000,0010 中止(数据) 中止模式 0x0000,0014 保留 保留 0x0000,0018 IRQ IRQ 0x0000,001C FIQ FIQ Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 六 ARM微处理器的异常处理(5) y 异常优先级(Exception Priorities) 优先级 异 常 1(最高) 复位 2 3 数据中止 FIQ 4 IRQ 5 预取指令中止 6(最低) 未定义指令、SWI Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 六 ARM微处理器的异常处理(6) y 应用程序中的异常处理 y 当系统运行时,异常可能会随时发生,为保证在 ARM处理器发生异常时不至于处于未知状态,在应 用程序的设计中,首先要进行异常处理,采用的方式 是在异常向量表中的特定位置放置一条跳转指令,跳 转到异常处理程序,当ARM处理器发生异常时,程 序计数器PC会被强制设置为对应的异常向量,从而 跳转到异常处理程序,当异常处理完成以后,返回到 主程序继续执行。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(1) 一. ARM微处理器的指令集概述 1. ARM微处理器的指令的分类与格式 y ARM微处理器的指令集是加载/存储型的,也即指 令集仅能处理寄存器中的数据,而且处理结果都 要放回寄存器中,而对系统存储器的访问则需要 通过专门的加载/存储指令来完成。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(2) yARM微处理器的指令集可以分为以下六大类: 1. 跳转指令 2. 数据处理指令 3. 程序状态寄存器(PSR)处理指令 4. 加载/存储指令 5. 协处理器指令 6. 异常产生指令 具体的指令及功能如下表所示 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(3) 助记符 指令功能描述 助记符 指令功能描述 ADC 带进位加法指令 MRC 从协处理器寄存器到ARM寄存器的数据传输指令 ADD 加法指令 MRS 传送CPSR或SPSR的内容到通用寄存器指令 AND 逻辑与指令 MSR 传送通用寄存器到CPSR或SPSR的指令 B 跳转指令 MUL 32位乘法指令 BIC 位清零指令 MLA 32位乘加指令 BL 带返回的跳转指令 MVN 数据取反传送指令 BLX 带返回和状态切换的跳转指令 ORR 逻辑或指令 BX 带状态切换的跳转指令 RSB 逆向减法指令 CDP 协处理器数据操作指令 RSC 带借位的逆向减法指令 CMN 比较反值指令 SBC 带借位减法指令 CMP 比较指令 STC 协处理器寄存器写入存储器指令 EOR 异或指令 STM 批量内存字写入指令 LDC 存储器到协处理器的数据传输指令 STR 寄存器到存储器的数据传输指令 LDM 加载多个寄存器指令 SUB 减法指令 LDR 存储器到寄存器的数据传输指令 SWI 软件中断指令 MCR 从ARM寄存器到协处理器寄存器的数据传输指令 SWP 交换指令 MLA 乘加运算指令 TEQ 相等测试指令 MOV 数据传送指令 TST 位测试指令 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(4) 2. 指令的条件域 y 当处理器工作在ARM状态时,几乎所有的指令均 根据CPSR中条件码的状态和指令的条件域有条 件的执行。当指令的执行条件满足时,指令被执 行,否则指令被忽略。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(5) y 每一条ARM指令包含4位的条件码,位于指令的最高4 位[31:28]。条件码共有16种,每种条件码可用两个字 符表示,这两个字符可以添加在指令助记符的后面和 指令同时使用。例如,跳转指令B可以加上后缀EQ变 为BEQ表示“相等则跳转”,即当CPSR中的Z标志置位 时发生跳转。 y 在16种条件标志码中,只有15种可以使用,如表所 示,第16种(1111)为系统保留,暂时不能使用。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(6) y 表 指令的条件码 条件码 助记符后缀 标 志 含 义 0000 EQ Z置位 相等 0001 NE Z清零 不相等 0010 CS C置位 无符号数大于或等于 0011 CC C清零 无符号数小于 0100 MI N置位 负数 0101 PL N清零 正数或零 0110 VS V置位 溢出 0111 VC V清零 未溢出 1000 HI C置位Z清零 无符号数大于 1001 LS C清零Z置位 无符号数小于或等于 1010 GE N等于V 带符号数大于或等于 1011 LT N不等于V 带符号数小于 1100 GT Z清零且(N等于V) 带符号数大于 1101 LE Z置位或(N不等于V) 带符号数小于或等于 1110 AL 忽略 无条件执行 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(7) 二. ARM指令的寻址方式 y 寻址方式:所谓寻址方式就是处理器根据指令中 给出的地址信息来寻找物理地址的方式。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(8) y 目前ARM指令系统支持如下几种常见的寻址方式。 ¾ 立即寻址 ¾ 寄存器寻址 ¾ 寄存器间接寻址 ¾ 基址变址寻址 ¾ 多寄存器寻址 ¾ 相对寻址 ¾ 堆栈寻址 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(9) y 1 立即寻址(立即数寻址) y 操作数本身就在指令中给出,只要取出指令也就取 到了操作数。例如以下指令: y ADD R0,R0,#1 ;R0←R0+1 y ADD R0,R0,#0x3f ;R0←R0+0x3f y 在以上两条指令中,第二个源操作数即为立即数, 要求以“#”为前缀,对于以十六进制表示的立即 数,还要求在“#”后加上“0x”或“&”。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(10) y 2 寄存器寻址 y 寄存器寻址就是利用寄存器中的数值作为操作 数,这种寻址方式是各类微处理器经常采用的一 种方式,也是一种执行效率较高的寻址方式。 y 以下指令: y ADD R0,R1,R2 ;R0←R1+R2 y 该指令的执行效果是将寄存器R1和R2的内容相 加,其结果存放在寄存器R0中。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(11) y 3 寄存器间接寻址 y 寄存器间接寻址就是以寄存器中的值作为操作数 的地址,而操作数本身存放在存储器中。 y 例如以下指令: y ADD R0,R1,[R2] ;R0←R1+[R2] y LDR R0,[R1] ;R0←[R1] y STR R0,[R1] ;[R1]←R0 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(12) y 4 基址变址寻址 y 基址变址寻址就是将寄存器(基址寄存器)的内容与指令 中给出的地址偏移量相加,从而得到一个操作数的有效地 址。 y 采用变址寻址方式的指令常见有以下几种形式 y LDR R0,[R1,#4] ;R0←[R1+4] y LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4 y LDR R0,[R1] ,#4 ;R0←[R1]、R1←R1+4 y LDR R0,[R1,R2] ;R0←[R1+R2] Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(13) y 5 多寄存器寻址 y 采用多寄存器寻址方式,一条指令可以完成多个寄存器值 的传送。这种寻址方式可以用一条指令完成传送最多16个 通用寄存器的值。以下指令: y LDMIA R0,{R1,R2,R3,R4} ;R1←[R0] ;R2←[R0+4] ;R3←[R0+8] ;R4←[R0+12] y 该指令的后缀IA表示在每次执行完加载/存储操作后,R0 按字长度增加,因此,指令可将连续存储单元的值传送到 R1~R4。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(14) y 6 相对寻址 y 与基址变址寻址方式相类似,相对寻址以程序计数器PC 的当前值为基地址,指令中的地址标号作为偏移量,将两 者相加之后得到操作数的有效地址。以下程序段完成子程 序的调用和返回,跳转指令BL采用了相对寻址方式: y BL NEXT ;跳转到子程序NEXT处执行 y …… y NEXT y …… y MOV PC,LR ;从子程序返回 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(15) y 7 堆栈寻址 y 堆栈是一种数据结构,按先进后出(FILO)的方式工作, 使用一个称作堆栈指针的专用寄存器指示当前的操作位 置,堆栈指针总是指向栈顶。 y 当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(, 而当堆栈指针指向下一个将要放入数据的空位置时,称为 空堆栈。 y 同时,根据堆栈的生成方式,又可以分为递增堆栈和递减 堆栈,当堆栈由低地址向高地址生成时,称为递增堆栈, 当堆栈由高地址向低地址生成时,称为递减堆栈,这样就 有四种类型的堆栈工作方式。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(16) y ARM微处理器支持这四种类型的堆栈工作方式,即: y - 满递增堆栈:堆栈指针指向最后压入的数据,且由低 地址向高地址生成。 y - 满递减堆栈:堆栈指针指向最后压入的数据,且由高 地址向低地址生成。 y - 空递增堆栈:堆栈指针指向下一个将要放入数据的空 位置,且由低地址向高地址生成。 y - 空递减堆栈:堆栈指针指向下一个将要放入数据的空 位置,且由高地址向低地址生成。 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(17) 三、ARM 指令集 数据处理指令: SUB ADD ANDS ADDEQ r0,r1,#5 ;r1-5->r0 r2,r3,r3,LSL #2 ;R3x4+r3->r2 r4,r4,#0x20 ;r4+0x20->r4,更新条 件码标志位 r5,r5,r6 ;r5+r6->r5(条件-相等) Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(18) 存储器存取指令: LDR r0,[r1],#4 ;r1+4->r0 STRNEB r2,[r3,r4] ;NE符合-将r2低8位 数写到[r3+r4]内存单元 LDRSH r5,[r6,#8]! ;[r6+8]->r5(半字 节),r5中高16位设置成该字节的符号位 STMFD sp!,{r0,r2-r7,r10} ;出栈 Copyright © 2003-2007 SinoSys. All Rights Reserved 双实科技 2.4 ARM 处理器的指令系统(19) ARM 跳转分支指令 y B