《ARM7体系结构》PPT课件.ppt

上传人:san****019 文档编号:17252559 上传时间:2020-11-16 格式:PPT 页数:76 大小:1.16MB
收藏 版权申诉 举报 下载
《ARM7体系结构》PPT课件.ppt_第1页
第1页 / 共76页
《ARM7体系结构》PPT课件.ppt_第2页
第2页 / 共76页
《ARM7体系结构》PPT课件.ppt_第3页
第3页 / 共76页
资源描述:

《《ARM7体系结构》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《ARM7体系结构》PPT课件.ppt(76页珍藏版)》请在装配图网上搜索。

1、嵌入式系统软件开发 计算机系 宋安军 2010.9. 嵌入式系统软件开发 ARM嵌入式系统基础教程 (第三版) 周立功 北京航空航天出版社( 2008) 教 材 1.ARM简介 2.ARM7TDMI 3.ARM的模块、内 核和功能框图 4.ARM处理器状态 5.ARM处理器模式 ARM7体系结构 6.ARM内部寄存器 7.当前程序状态寄存 器 8.ARM体系的异常、 中断及其向量表 9.ARM体系的存储系 统 2.1 ARM简介 ARM公司简介 ARM是 Advanced RISC Machines的缩写,它是 一家微处理器行业的知名企业,该企业设计了大量 高性能、廉价、耗能低的 RISC (

2、精简指令集)处 理器。 公司的特点是只设计芯片,而不生 产。它将技术授权给世界上许多著名的半导体、软 件和 OEM厂商,并提供服务。 2.1 ARM简介 ARM公司简介 将技术授权给 其它芯片厂商 形成各具特色 的 ARM芯片 . . . 2.1 ARM简介 RISC结构特性 RISC是精简指令集计算机的缩写,其目标是设计出 在高时钟频率下单周期执行,简单而有效的指令集。 ARM内核采用 RISC体系结构,因此具有 RISC的结构特 点: 具有大量的通用存储器; 独特的装载 /保存( load-store)结构; 简单的寻址模式 ; 统一和固定长度的指令格式。 2.1 ARM简介 为了使 AR

3、M能够更好地满足嵌入式应用的需要, ARM体系结构还有以下特点: 每条数据处理指令可同时包含算术逻辑单元( ALU) 的运算和移位处理,实现 ALU和移位器的最大利用; 使用地址自增和自减的寻址方式优化程序循环; 装载 /保存指令对数据的批量传输,实现最大数据吞 吐量 ; 大多数指令的条件执行,实现最快速的代码执行。 ARM体系结构 2.1 ARM简介 常用 ARM处理器系列 ARM公司开发了很多系列的 ARM处理器核,目前 最新的系列是 Cortex,而 ARM6核以及更早的系列已经 很罕见了。当前应用比较多的 ARM处理器核系列有: ARM7 ARM9 ARM10E Xscale ARM1

4、1 Cortex ARM9E 2.1 ARM简介 ARM Cortex系列简介 基于 ARMv7版本的 ARM Cortex系列产品由 A、 R、 M三个系列组成,具体分类延续了一直以来 ARM面向 具体应用设计 CPU的思路。 ARM Cortex A应用处理器( Application Processor )系列 R实时控制处理( Real Time Control )系列 M微控制器( Micro Controller )系列 2.1 ARM简介 CortexTM-M3处理器简介 该处理器是首款基于 ARMv7-M架构的处理器,采 用了纯 Thumb2指令的执行方式,具有极高的运算能力

5、和中断相应能力。 Cortex-M3主要应用于汽车车身系统,工业控制系 统和无线网络等对功耗和成本敏感的嵌入式应用领域。 目前最便宜的基于该内核的 ARM单片机售价为 1美元。 2.1 ARM简介 CortexTM-R4处理器简介 该处理器是首款基于 ARMv7架构的高级嵌入式处理 器,其主要目标为产量巨大的高级嵌入式应用系统, 如硬盘,喷墨式打印机,以及汽车安全系统等等。 CortexTM-R4F处理器简介 该处理器在 CortexTM-R4处理器的基础上加入了代码 错误校正 (ECC)技术,浮点运算单元 (FPU)以及 DMA综合 配臵的能力,增强了处理器在存储器保护单元、缓存、 紧密耦合

6、存储器、 DMA访问以及调试方面的能力。 2.1 ARM简介 CortexTM-A8处理器简介 该处理器是 ARM公司所开发的基于 ARMv7架构的 首款应用级处理器,其特色是运用了可增加代码密度 和加强性能的技术、可支持多媒体以及信号处理能力 的 NEONTM技术、以及能够支持 Java和其他文字代码语 言的提前和即时编译的 JazelleRTC技术。 众多先进的技术使其适用于家电以及电子行业等各 种高端的应用领域。 2.1 ARM简介 ARM7系列简介 该系列包括 ARM7TDMI、 ARM7TDMI-S、带有高 速缓存处理器宏单元的 ARM720T和扩充了 Jazelle的 ARM7EJ

7、-S。该系列处理器提供 Thumb 16位压缩指令 集和 EmbededICE软件调试方式,适用于更大规模的 SoC设计中。 ARM7系列广泛应用于多媒体和嵌入式设备,包括 Internet设备、网络和调制解调器设备,以及移动电话、 PDA等无线设备。 2.1 ARM简介 该系列包括 ARM9TDMI、 ARM920T和带有高速 缓存处理器宏单元的 ARM940T。除了兼容 ARM7系列, 而且能够更加灵活的设计。 ARM9系列主要应用于引擎管理、仪器仪表、安 全系统和机顶盒等领域。 ARM9系列简介 2.1 ARM简介 该系列为含有 DSP指令集的综合处理器,包括 ARM926EJ-S、带有

8、高速缓存处理器宏单元的 ARM966E-S/ARM946E-S。其内核在 ARM7处理器内核 的基础上使用了 Jazelle增强技术,该技术支持一种新 的 Java操作状态,允许在硬件中执行 Java字节码。 ARM9E系列主要应用于下一代无线设备、数字消 费品、成像设备、工业控制、存储设备和网络设备等 领域。 ARM9E系列简介 2.1 ARM简介 ARM10E系列简介 该系列包括 ARM1020E和 ARM1020E处理器核, 其核心在于使用向量浮点( VFP)单元 VFP10提供高性 能的浮点解决方案,从而极大提高了处理器的整型和 浮点运算性能。 可以用于视频游戏机和高性能打印机等场合。

9、 2.1 ARM简介 Xscale简介 Intel Xscale微控制器则提供全性能、高性价比、 低功耗的解决方案,支持 16位 Thumb指令并集成数字 信号处理( DSP)指令。 主要应用于手提式通讯和消费电子类设备。 1.ARM简介 2.ARM7TDMI 3.ARM的模块、内 核和功能框图 4.ARM处理器状态 5.ARM处理器模式 ARM7体系结构 6.ARM内部寄存器 7.当前程序状态寄存 器 8.ARM体系的异常、 中断及其向量表 9.ARM体系的存储系 统 ARM7TDMI-S 2.2 ARM7TDMI 简介 ARM7TDMI是基于 ARM体系结构 V4版本的低端 ARM核 。

10、其弥补了 ARM6很难在低于 5V电压下稳定工 作的不足,还增加了后缀所对应的功能: 支持高密度 16位的 Thumb指令集; 支持片上调试; 支持 64位乘法; 支持 EmbededICE观察硬件; ARM7TDMI 的可综合( synthesizable) 版本(软核),对应用工程师来说其编 程模型与 ARM7TDMI 一致; 注意 : “ ARM核 ” 并非芯片, ARM核与其它部件 如 RAM、 ROM、片内外设组合在一起才能构成现实的 芯片。 2.2 ARM7TDMI 存储器的字与半字 从偶数地址开始的连续 2个字节构成一个 半字 ; 以能被 4整除的地址开始的连续 4个字节构成一个

11、 字 ; ARM指令的长度刚好是一个字, Thumb指令的长 度刚好是一个半字。 2.2 ARM7TDMI 如果一个数据是从偶地址开始的连续存储,那么 它就是 半字对齐 ,否则就是 非半字对齐 ; 如果一个数据是以能被 4整除的地址开始的连续存 储,那么它就是 字对齐 ,否则就是 非字对齐 。 方式 半字对齐 字对齐 地址 0 x4002 0 x4004 0 x4004 0 x4008 特征 Bit0=0 其他位为任意值 Bit1=0,Bit0=0 其他位为任意值 存储器的存储方式 2.2 ARM7TDMI 三级流水线 ARM处理器使用流水线来增加处理器指令流的速 度,这样可使几个操作同时进行

12、,并使处理和存储器系 统连续操作,能提供 0.9MIPS/MHz的指令执行速度。 ARM7TDMI的流水线分 3级,分别为: 取指 译码 执行 取指 译码 执行 处理指令并将结果写回寄存器 识别将要被执行的指令 从寄存器装载一条指令 正常操作过程中,在执行一条指令的同时对下一条 (第二条 )指令进行译码,并将第三条指令从存储器中取 出。 在 ARM状态下,流水线上各指令的地址为: 在 Thumb状态下,流水线上各指令的地址为: PC PC-4 PC-8 2 4 2.2 ARM7TDMI 三级流水线结构的指令执行顺序 PC 指令 1 指令 2 指令 3 指令 4 程序存储器 PC-4 PC-8

13、PC+4 周期 1 周期 2 周期 3 周期 4 周期 5 周期 6 取指 译码 执行 取指 译码 执行 取指 译码 执行 取指 译码 执行 周期 在第 1个周期, PC指向指令 1,此时指令 1 进入三级流水线的取指阶段。 1 在第 2个周期, 指向指令 2,此时指令 1进入三级流水线的译码阶段,同时取出指 令 2。 2 在第 3个周期, 指向指令 3,此时指令 进入三级流水线的执行阶段,指令 2进入译 码阶段,取出指令 3。 3 在第 4个周期,指令 1执行完成,指令 2和 指令 3流水线推进一级,同时开始指令 4的 取指处理。 4 处理器执行一条 指令的三个阶段 执行 ADD PC,PC

14、,#4指 令后, PC的值为多少? 2.2 ARM7TDMI 思考题 ADD PC, PC, #4 0 x4000 0 x4004 0 x4008 0 x400C 地址 指令 PC 取指 译码 执行 PC PC-4 PC-8 ARM7的 3级流水线 ADD 程序计数器 R15(PC) 总是指向 “ 正在取指 ” 的指令,而不是指向 “ 正在执行 ” 的指令或 “ 正在译码 ” 的指令。 一般来说,人们习惯 性约定将 “ 正在执行 ” 的指令作为参考点,则: PC值当前程序执行位置 8 注: ARM状态时, 每条指令为 4字节长。 PC指向 0 x4000地址, 取指 ADD指令。 指向 400

15、4地址, 译码 指令。 PC指向 0 x4008地址, 执行 ADD指令,所以指 令执行的结果为 : PC=PC+4 0 x4008 4 0 x400C。 1.ARM简介 2.ARM7TDMI 3.ARM的模块、内 核和功能框图 4.ARM处理器状态 5.ARM处理器模式 ARM7体系结构 6.ARM内部寄存器 7.当前程序状态寄存 器 8.ARM体系的异常、 中断及其向量表 9.ARM体系的存储系 统 CPU 扫 描 链 1 扫 描 链 1 数 据 总 线 数据总线 扫描链 1 扫 描 链 2 协处理器 信号接口 EmbeddedICE-RT TAP 控制器 EmbeddedICE-RT 宏

16、单元 DBGTCKEN DBGTMS DBGnTRST DBGTDI DBGTDO RDATA31:0 WDATA31:0 ADDR31:0 TRANS1:0 PROT1:0 SIZE1:0 WRITE LOCK DBGRNG(0) DBGRNG(1) DBGEXT(1) DBGEXT(0) 2.3 ARM模块框图 CPU协处理 接口信号 EmbedICE硬件 仿真功能模块 片上调试系统 读写总线 2.3 ARM内核框图 地址寄存器 寄存器组 31*32位寄存器 ( 6个状态寄存器) 地址增加器 乘法器 桶形移位器 32位 ALU 写数据寄存器 指令管线读数据寄存器 Thumb指令译码器 指令

17、译码 和 控制逻辑 ADDR31:0 CLK CLEN CFGBIGEND nIRQ nFIQ nRESET ABORT LOCK WRITE SIZE1:0 PROT1:0 TRANS1:0 DBG输出 DBG输入 CP控制 CP握手 WDATA31:0 RDATA31:0 扫描调试 控制 2.3 ARM功能框图 ARM7TDMI-S 处理器 LOCK CLK CLKEN nIRQ nFIQ nRESET CFGBIGEND DBGRQ DMORE DBGINSTRVAILD DBGBREAK DBGACK DBGnEXEC DBGEXT1 DBGEXT0 DBGEN DBGCOMMTX D

18、BGCOMMRX DBGRNG0 DBGRNG1 DBGTCKEN DBGTMS DBGTDI DBGnTRST DBGTDO DBGnTDOEN ADDR31:0 WDATA31:0 RDATA31:0 ABORT WRITE SIZE1:0 PROT1:0 TRANS1:0 CPnTRANS CPnOPC CPnMREQ CPSEQ CPTBIT CPnI CPA CPB 同步的扫描调 试访问接口 存储器接口 存储器管理接口 协处理器接口 时钟 中断 总线控制 仲裁 调试 1.ARM简介 2.ARM7TDMI 3.ARM的模块、内 核和功能框图 4.ARM处理器状态 5.ARM处理器模式

19、ARM7体系结构 6.ARM内部寄存器 7.当前程序状态寄存 器 8.ARM体系的异常、 中断及其向量表 9.ARM体系的存储系 统 2.4 ARM处理器状态 处理器状态 ARM7TDMI处理器内核包含 2套指令系统,分别为 ARM指令集和 Thumb指令,并且各自对应 1种处理器的 状态: ARM状态: 32位,处理器执行字方式的 ARM指令, 处理器默认为此状态; Thumb状态: 16位,处理器执行半字方式的 Thumb 指令。 注意: 两个状态之间的切换并不影响处理器模式或 寄存器内容。 2.4 ARM处理器状态 状态切换的一个例子 地址最低位为 0,表示切换 到 ARM状态 使用 B

20、X指令将 ARM内核的操作状态在 ARM状态和 Thumb状态之间进行切换。 ARM指令集 Thumb 指令集 CODE32 LDR R0, =Lable+1 BX R0 CODE16 Lable MOV R1, #12 CODE16 R CODE32 e 0 地址最低位为 1,表示切换 到 Thumb状态 跳转地址标号 执行完 BX指令,处 理器切换到 Thumb 状态,开始执行 Thumb指令 程序代码 指令集关系 从 ARM状态切换到 Thumb状态的程序代码如下: 从 Thumb状态切换到 ARM状态的程序代码如下: 执行完 指令,处 理器切换到 ARM状 态,开始执行 ARM 指令

21、1.ARM简介 2.ARM7TDMI 3.ARM的模块、内 核和功能框图 4.ARM处理器状态 5.ARM处理器模式 ARM7体系结构 6.ARM内部寄存器 7.当前程序状态寄存 器 8.ARM体系的异常、 中断及其向量表 9.ARM体系的存储系 统 2.5 ARM处理器模式 简介 ARM体系结构支持 7种处理器模式,分别为: 用户模 式、快中断模式、中断模式、管理模式、中止模式、未定 义模式和系统模式。 这样的好处是可以更好的支持操作系 统并提高工作效率。 ARM7TDMI完全支持这七种模式。 除用户模式外,其它模式均为 特权模式 。 ARM内部 寄存器和一些片内外设在硬件设计上只允许(或者

22、可选为 只允许)特权模式下访问。此外,特权模式可以自由的切 换处理器模式,而用户模式不能直接切换到别的模式。 处理器模式 说明 备注 用户 (usr) 正常程序运行的工作模式 不能直接从用户模式切换到其它模式 特 权 模 式 系统 (sys) 用于支持操作系统的特权任务等 与用户模式类似,但具有可以直接切换到其它模式等特权 异 常 模 式 快中断 (fiq) 快速中断请求处理 只有在 FIQ异常响应时,才进入此模式 中断 (irq) 中断请求处理 只有在 IRQ异常响应时,才进入此模式 管理 (svc) 供操作系统使用的一种保护模式 只有在系统复位和软件中断响应时,才进入此模式 中止 (abt

23、) 用于虚拟内存和 /或存储器保护 在 ARM7内核中没有多大用处 未定义 (und) 支持软件仿真的硬件协处理器 只有在未定义指令异常响应时,才进入此模式 处理器模式 这两种模式都不能由异常进入,想要进入必须修改 CPSR, 而且它们使用完全相同的寄存器组。 系统模式 是 特权模式,不受用户模式的限制。操作系统在该模式下 访问用户模式的寄存器就比较方便,而且操作系统的一 些特权任务可以使用这个模式访问一些受控的资源。 这五种模式称为 异常模式 。它们除了可以通过程序切 换进入外,也可以由特定的异常进入。当特定的异常出现 时,处理器进入相应的模式。每种异常模式都有一些独立 的寄存器,以避免异常

24、退出时用户模式的状态不可靠。 何时进入异常模式,具体规定如下: 处理器复位之后进入管理模式,操作系统内核通常处于 管理模式; 当处理器访问存储器失败时,进入数据访问中止模式; 当处理器遇到没有定义或不支持的指令时,进入未定义 模式; 中断模式与快速中断模式分别对 ARM处理器 2种不同级 别的中断作出响应。 1.ARM简介 2.ARM7TDMI 3.ARM的模块、内 核和功能框图 4.ARM处理器状态 5.ARM处理器模式 ARM7体系结构 6.ARM内部寄存器 7.当前程序状态寄存 器 8.ARM体系的异常、 中断及其向量表 9.ARM体系的存储系 统 2.6 ARM内部寄存器 简介 在 A

25、RM处理器内部共有 37个用户可访问的寄存器, 分别为 31个通用 32位寄存器 和 6个状态寄存器。 ARM处理器共有 7种不同的处理器模式,每种模 式都有一组相应的寄存器组,最多可以 18个活动的寄 存器。 ARM状态各模式下的寄存器 寄存器 类别 寄存器在汇 编中的名称 各模式下实际访问的寄存器 用户 系统 管理 中止 未定义 中断 快中断 通 用 寄 存 器 和 程 序 计 数 器 R0(a1) R0 R1(a2) R1 R2(a3) R2 R3(a4) R3 R4(v1) R4 R5(v2) R5 R6(v3) R6 R7(v4) R7 R8(v5) R8 R8_fiq R9(SB,

26、v6) R9 R9_fiq R10(SL,v7) R10 R10_fiq R11(FP,v8) R11 R11_fiq R12(IP) R12 R12_fiq R13(SP) R13 R13_scv R13_abt R13_und R13_irq R13_fiq R14(LR) R14 R14_svc R14_abt R14_und R13_irq R14_fiq R15(PC) R15 状态 寄存器 CPSR CPSR SPSR SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq 所有的 37个寄存器, 分成两大类: 31个通用 32位寄存器; 6个状态

27、寄存器。 ARM状态各模式下可以访问的寄存器 寄存器 类别 寄存器在汇 编中的名称 各模式下实际访问的寄存器 用户 系统 管理 中止 未定义 中断 快中断 通 用 寄 存 器 和 程 序 计 数 器 R0(a1) R0 R1(a2) R1 R2(a3) R2 R3(a4) R3 R4(v1) R4 R5(v2) R5 R6(v3) R6 R7(v4) R7 R8(v5) R8 R8_fiq R9(SB,v6) R9 R9_fiq R10(SL,v7) R10 R10_fiq R11(FP,v8) R11 R11_fiq R12(IP) R12 R12_fiq R13(SP) R13 R13_s

28、vc R13_abt R13_und R13_irq R13_fiq R14(LR) R14 R14_svc R14_abt R14_und R14_irq R14_fiq R15(PC) R15 状态 寄存器 CPSR CPSR SPSR SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq 未分组的通用寄存器 寄存器 类别 寄存器在汇 编中的名称 各模式下实际访问的寄存器 用户 系统 管理 中止 未定义 中断 快中断 通 用 寄 存 器 和 程 序 计 数 器 R0(a1) R0 R1(a2) R1 R2(a3) R2 R3(a4) R3 R4(v1)

29、R4 R5(v2) R5 R6(v3) R6 R7(v4) R7 R8(v5) R8 R8_fiq R9(SB,v6) R9 R9_fiq R10(SL,v7) R10 R10_fiq R11(FP,v8) R11 R11_fiq R12(IP) R12 R12_fiq R13(SP) R13 R13_scv R13_abt R13_und R13_irq R13_fiq R14(LR) R14 R14_svc R14_abt R14_und R13_irq R14_fiq R15(PC) R15 状态 寄存器 CPSR CPSR SPSR SPSR_svc SPSR_abt SPSR_und

30、 SPSR_irq SPSR_fiq 寄存器 R0 R7为 未 分组的通用寄存器 , 它们在任何处理器模 式都对应于相同的 32 位物理寄存器。 第一类分组的通用寄存器 寄存器 R8 R12 有两个分组的物 理寄存器。一个 用于除 FIQ模式 之外的所有寄存 器模式,另一个 用于 FIQ模式。 在发生 FIQ中断 后,处理器不必 为保护寄存器而 浪费时间,从而 加速了 FIQ的处 理速度。 第二类分组的通用寄存器 寄存器 R13、 R14分别 有 6个分组的物理寄存 器。 1个用于用户和系 统模式,其余 5个分别 用于 5种异常模式。 寄存器 R13通常作为 堆栈指针 ( SP),用 于保存待

31、使用的寄存 器的内容。 寄存器 R14称为 链接寄存器 ( LR), 在结构上有两个特殊功能: 当使用 BL指令调用子程序时,返回 地址将自动存入 R14中; 当发生异常时,将 R14对应的异常 模式版本设臵为异常返回地址(有 些异常有一个小的固定偏移量)。 程序计数器 寄存器 R15称为 程序计 数器 ( PC),它指向 正在 “ 取指 ” 的指令。 状态寄存器 寄存器 CPSR为 当前程序状态寄存器 ,在异常 模式中,另外一个寄存器 “ 程序状态保存寄 存器( SPSR) ” 可以被访问。每种异常都有 自己的 SPSR,在进入异常时它保存 CPSR的当 前值,异常退出时可通过它恢复 CPS

32、R。 2.6 ARM内部寄存器 在 Thumb状态各模式下实际访问的寄存器 Thumb状态寄存器集是 ARM状态集的子集,程序 员可以直接访问的寄存器为: 8个通用寄存器 R0 R7; 程序计数器( PC); 堆栈指针( SP); 链接寄存器( LR); 当前程序状态寄存器( CPSR)。 在 Thumb状态各模式下的寄存器 寄存器 类别 寄存器在汇 编中的名称 各模式下实际访问的寄存器 用户 系统 管理 中止 未定义 中断 快中断 通 用 寄 存 器 和 程 序 计 数 器 R0(a1) R0 R1(a2) R1 R2(a3) R2 R3(a4) R3 R4(v1) R4 R5(v2) R5

33、 R6(v3) R6 R7(v4,WR) R7 SP R13 R13_scv R13_abt R13_und R13_irq R13_fiq LR R14 R14_svc R14_abt R14_und R13_irq R14_fiq PC R15 状态 寄存器 CPSR CPSR 未分组的通用寄存器 第二类分组的通用寄存器 在汇编语言中寄存器 R0 R7为通用寄存 器,对于任何处理器模式,它们中的每 一个都对应于相同的 32为物理寄存器。 堆栈指针 SP对应 ARM状态的寄存器 R13。 每个异常模式都有其自身的 SP分组版本, SP通常指向各异常模式所专用的堆栈。 注意 :在发生异常时,处

34、理器自动进入 ARM状态。 链接寄存器 LR对应 ARM状态寄存器 R14。 注意 :在发生异常时,处理器 自动 进入 状态。 ARM状态 Thumb寄存器在 ARM状态寄存器上的映射 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 堆栈指针 (R13) 连接寄存器 (R14) 程序计数器 (R15) CPSR SPSR R0 R1 R2 R3 R4 R5 R6 R7 堆栈指针 (SP) 连接寄存器 (LR) 程序计数器 (PC) CPSR Thumb状态 Thumb状态 R0 R7与 ARM状态 R0 R7相同; 1 Thumb状态 CPSR(无 SPSR

35、)与 ARM状态 CPSR相 同。 5 Thumb状态 SP映射到 ARM状态 R13; 2 Thumb状态 LR映射到 ARM状态 R14; 3 Thumb状态 PC映射到 ARM状态 R15(PC); 4 低端寄存器 高端寄存器 在 Thumb状态中,高端 寄存器的访问是受到限制的, 只有 MOV、 CMP和 ADD指 令可以对其访问,可以用于 数据的快速暂存。 ARM Thumb ARM Reset BX BX ARM 中断服务程序 正常程序 事件 ARM ARM ISR1 ISR2 ISRn 状态切换过程 异常发生 系统复位 , 自动切换到 ARM状态 。 1 通过 BX和 BLX指令

36、改变当前处理器模式 , 使之从 ARM状态切换到 Thumb状态 。 2 在 Thumb状态下 , 正常程序执行时产生中断异常 。 3 处理器进入中断异常 , 自动的将模式切换到 ARM状 态 。 4 异常处理完毕 , 返回正常程序 , 此时处理器自动的 将模式切换到 Thumb状态 。 5 再次通过 BX和 BLX指令改变当前处理器模式 , 使之从 Thumb状态切换到 ARM状态 。 6 程序在正常运行的过程中,复位事件产生,导致 系统复位。 1.ARM简介 2.ARM7TDMI 3.ARM的模块、内 核和功能框图 4.ARM处理器状态 5.ARM处理器模式 ARM7体系结构 6.ARM内

37、部寄存器 7.当前程序状态寄存 器 8.ARM体系的异常、 中断及其向量表 9.ARM体系的存储系 统 2.7 当前程序状态寄存器 简介 ARM内核包含 1个 CPSR和 5个仅供异常处理程序 使用的 SPSR。 CPSR反映当前处理器的状态,其包含: 4个条件代码标志 (负标志 N、零标志 Z、进位标志 C和溢出标志 V ); 2个中断禁止位 (IRQ禁止与 FIQ禁止 ); 5个对当前处理器模式进行编码的位 (M4:0); 1个用于指示当前执行指令的位 (ARM指令还是 Thumb指令 )。 2.7 当前程序状态寄存器 程序状态寄存器的格式 N Z C V I M0 M1 M2 M3 M4

38、 T F . . . 31 30 29 28 27 26 8 7 6 5 4 3 2 1 0 条件代码标志 保留 控制位 溢出标志 进位或借位扩展 零 负或小于 IRQ禁止 FIQ禁止 状态位 模式位 2.7 当前程序状态寄存器 条件代码标志 各标志位的含义如下: 负标志 N:运算结果的第 31位值,记录标志设臵操 作的结果; 零标志 Z:如果标志设臵的操作为 0,则臵位; 进位标志 C:记录无符号加法溢出,减法无借位, 循环移位; 溢出标志 V:记录标志设臵操作的有符号溢出。 警告: 绝对不要强制改变 CPSR寄存器中的控制 位 T。如果这样做,处理器将进入一个无法预测的 状态。 2.7 当

39、前程序状态寄存器 控制位 1、中断禁止控制位 I和 F; 2、处理器状态位 T; 3、处理器模式位 M0 M4。 当控制位 I臵位时, IRQ中断被禁止; 当控制位 F臵位时, FIQ中断被禁止。 当控制位 T臵位时,处理器正在 Thumb状态下运行; 当控制位 T清零时,处理器正在 ARM状态下运行。 M4:0 模式 可见的 Thumb状态寄存器 可见的 ARM状态寄存器 10000 用户 R0 R7, SP, LR, PC, CPSR R0 R14, PC, CPSR 10001 快速中断 R0 R7, SP_fiq, LR_fiq, PC, CPSR, SPSR_fiq R0 R7, R

40、8_fiq R14_fiq, PC, CPSR, SPSR_fiq 10010 中断 R0 R7, SP_irq, LR_irq, PC, CPSR, SPSR_fiq R0 R12, R13_irq, R14_irq, PC, CPSR, SPSR_irq 10011 管理 R0 R7, SP_svc, LR_svc, PC, CPSR, SPSR_svc R0 R12, R13_svc, R14_svc, PC, CPSR, SPSR_svc 10111 中止 R0 R7, SP_abt, LR_abt, PC, CPSR, SPSR_abt R0 R12, R13_abt, R14_ab

41、t, PC, CPSR, SPSR_abt 11011 未定义 R0 R7, SP_und, LR_und, PC, CPSR, SPSR_und R0 R12, R13_und, R14_und, PC, CPSR, SPSR_und 11111 系统 R0 R7, SP, LR, PC, CPSR R0 R14, PC, CPSR 注意: 不是所有模式位的组合都定义了有 效的处理器模式,如果将非法值写入 M4:0中, 处理器将进入一个无法恢复的模式。 2.7 当前程序状态寄存器 保留位 CPSR中的保留位被保留将来使用。当改变 CPSR 标志和控制位时,请确认没有改变这些保留位。 另外,请

42、确保您的程序不依赖于包含特定值的 保留位,因为将来的处理器可能会将这些位设臵为 1 或者 0。 1.ARM简介 2.ARM7TDMI 3.ARM的模块、内 核和功能框图 4.ARM处理器状态 5.ARM处理器模式 ARM7体系结构 6.ARM内部寄存器 7.当前程序状态寄存 器 8.ARM体系的异常、 中断及其向量表 9.ARM体系的存储系 统 2.8 ARM体系的异常 异常简介 只要正常的程序流被暂时中止 , 处理器就进入异常 模式 。 例如在用户模式下执行程序时 , 当外设向处理 器内核发出中断请求导致内核从用户模式切换到异常 中断模式 。 如果同时发生两个或更多异常,那么将按照固定的 顺

43、序来处理异常。 异常入口 /出口汇总 下表所示为异常返回地址值以及退出异 常处理程序所推荐使用的指令 。 异常或入口 返回指令 返回地址 SWI MOVS PC,R14_svc R14 未定义的指令 MOVS PC,R14_und R14 预取中止 SUBS PC,R14_abt,#4 R14 4 快速中断 SUBS PC,R14_fiq,#4 R14 4 中断 SUBS PC,R14_irq,#4 R14 4 数据中止 SUBS PC,R14_abt,#8 R14 8 复位 无 注意 : “ MOVS PC,R14_svc”是指在管理模式执行 MOVS PC,R14 指令,同样类似的指令还有

44、 “ MOVS PC,R14_und”、 “ SUBS PC,R14_abt,#4”等。 2.8 ARM体系的异常 异常向量表 地址 异常 进入时的模式 进入时 I的状态 进入时 F的状态 0 x00000000 复位 管理 禁止 禁止 0 x00000004 未定义指令 未定义 I F 0 x00000008 软件中断异常 管理 禁止 F 0 x0000000C 中止(预取) 中止 I F 0 x00000010 中止(数据) 中止 I F 0 x00000014 保留 保留 0 x00000018 IRQ 中断 禁止 F 0 x0000001C FIQ 快速中断 禁止 禁止 注: 表中的

45、I和 F表示不对该位有影响 , 保留原来的值 。 2.8 ARM体系的异常 异常优先级 当多个异常同时发生时 , 一个固定的优先级决定系 统处理它们的顺序 。 优先级 异常 1 复位 2 数据中止 3 FIQ 4 IRQ 5 预取指中止 6 未定义指令中止 6 软件中断异常 优 先 级 由 高 到 低 2.8 ARM体系的异常 异常的进入 当一个异常导致模式切换时 , 内核自动的做如下处理: 将异常处理程序的返回地址(加固定的偏移量)保存 到相应异常模式下的 LR; 将 CPSR的当前值保存到相应异常模式下的 SPSR; 设臵 CPSR为相应的异常模式; 设臵 PC为相应异常处理程序的中断入口

46、向量地址,跳 转到相应的异常中断处理程序执行; 用户模式 SPSR 异常模式 CPSR R15(PC) R14(LR) R0R13 BackAddr JumpAddr UserMode ExceptionMode 程序代码正常运行在用户模式下 。 2.8 ARM体系的异常 异常的进入 当一个异常导致模式切换时 , 内核自动的做如下处理: 将异常处理程序的返回地址(加固定的偏移量)保存 到相应异常模式下的 LR; 将 CPSR的当前值保存到相应异常模式下的 SPSR; 设臵 CPSR为相应的异常模式; 设臵 PC为相应异常处理程序的中断入口向量地址,跳 转到相应的异常中断处理程序执行; 2.8

47、ARM体系的异常 异常的退出 当异常处理程序结束时 , 异常处理程序必须: 返回到发生异常中断的指令的下一条指令处执行,即 就是说将 LR中的值减去偏移量后移入 PC; 将 SPSR的值复制回 CPSR; SPSR 异常模式 用户模式 CPSR R15(PC) R14(LR) R0R13 BackAddr CurrentAddr UserMode ExceptionMode BackAddr Off 2.8 ARM体系的异常 异常的退出 当异常处理程序结束时 , 异常处理程序必须: 返回到发生异常中断的指令的下一条指令处执行,即 就是说将 LR中的值减去偏移量后移入 PC; 将 SPSR的值复

48、制回 CPSR; 清零在入口处臵位的中断禁止标志。 2.8 ARM体系的异常 复位异常 当 nRESET信号被拉低时 , ARM处理器放弃正在执 行的指令 , 等到 nRESET信号再次变高时 , 处理器执行 一下操作: 强制 M4:0变为 b10011,系统进入 管理模式 ; 将 CPSR中的标志位 I和 F臵位 , IRQ与 FIQ中断被 禁止 ; 将 CPSR中的标志位 T清零 ,处理器处于 ARM状态 ; 强制 PC从地址 0 x00开始对下一条指令进行取指; 返回到 ARM状态并恢复执行。 2.8 ARM体系的异常 中断请求异常 只有当 CPSR中相应的中断屏蔽位被清除时 , 才可

49、能发生 IRQ异常 , 中断请求 ( IRQ) 异常由一个 nIRQ输 入端的低电平所产生的正常中断 。 注: 中断异常产生时 , 中断异常模式下的 R14保存 的是 PC的值 。 取指 译码 执行 取指 译码 执行 取指 译码 执行 周期 4 周期 5 周期 1 周期 2 周期 3 PC-8 指令 1 指令 2 指令 3 PC-4 PC 中断发生周期 指令 1的执行不会中断; 异常程序结束时返回到指令 2; 进入中断服务程序时,指令 3 地址被保存在 R14中。 程序运行在用户模式下 , 当一个 IRQ异常中断发生 时 , 内核切换到 “ 中断模式 ” , 并自动的做如下处理: 2.8 AR

50、M体系的异常 进入 IRQ异常模式 R0R12 R13_usr R14_usr R15 CPSR - R13_irq R14_irq SPSR_irq USR模式 IRQ模式 2 I=1,T=0,mod=irq 3 异常向量地址 0 x0018 4 ISR代码将寄存器压栈 5 1 将异常处理程序的返回地址保存到异常模式下的 R14(R14_irq)中 。 1 用户模式的 CPSR被保存到新的 IRQ中断异常模式 SPSR_irq中 。 2 修改 CPSR, 禁止新的 IRQ中断产生 , 进入 ARM状态 , 设臵为 IRQ模式 。 3 设臵 IRQ模式下的 PC为 IRQ异常处理程序的中断入口

51、 向量地址 0 x00000018。 4 将 IRQ中断异常模式的栈顶指针保存到 R13_irq中 , 之后软件处理程序调用中断服务程序为中断源服务 。 5 从 R13_irq中获取 IRQ中断异常模式的栈顶指针 。 1 2.8 ARM体系的异常 退出 IRQ异常模式 R0R12 R13_usr R14_usr R15 CPSR - R13_irq R14_irq SPSR_irq IRQ模式 USR模式 恢复 CPSR 2 R14减 4后为返回地址 3 ISR代码将寄存器出栈 1 将 SPSR_irq中的内容复制到 CPSR。 2 由于流水线的特性 , 将 R14_irq指向的地址减去一个

52、偏移量后存入 R15(PC), 实现指令为: SUBS PC,R14_irq,#4 3 中断服务程序执行完毕后 , 系统将通过以下几步软 件操作返回用户模式 : 2.8 ARM体系的异常 快速中断请求异常 快速中断请求 (FIQ)适用于对一个突发事件的快速 响应,这得益于在 ARM状态中,快中断模式有 8个专用 的寄存器可用来满足寄存器保护的需要(这可以加速 上下文切换的速度)。 不管异常入口是来自 ARM状态还是 Thumb状态, FIQ处理程序都会通过执行下面的指令从中断返回: SUBS PC,R14_fiq,#4 在一个特权模式中,可以通过臵位 CPSR中的 F位来 禁止 FIQ异常。

53、系统模式 FIQ模式 程 序 寄 存 器 组 FIQ中断的例子 “ ?” 表示该位无关 SPSR_fiq PC CPSR SPSR MOD T F I . . . N Z C V SYS 1 0 0 . . . ? ? ? ? R8 R12 R8_fiq R12_fiq LR LR_sys LR_fiq R0R7 SP_sys SP_fiq Thumb Thumb 指令 1 指令 2 指令 3 BX指令 BX指令 ARM ARM SYS 1 0 0 . ? ? ? ? FIQ 011? ? ? ? BackAddr JumpAddr ? ? ? ? BackAddr-4 Thumb不是一个完整

54、 的体系结构,不能指望 处理器只执行 Thumb指 令而不支持 ARM指令集。 因此, Thumb指令只 需要支持通用功能,必 要时可以借助于完善的 ARM指令集,比如,所 有异常自动进入 ARM状 态。 在系统模式下运行用 户程序,当前处理器处 于 Thumb状态,执行 Thumb指令代码,同时 处理器还允许 IRQ和 FIQ 中断。 指令 1的在执行过程 产生了 FIQ中断。 注:完成指令 1的执 行后才响应中断。 FIQ中断相应过程中, 硬件自动执行如下动作: 将 CPSR寄存器内容存入 IRQ模式的 SPSR寄存器 臵为 F和 I(禁止 FIQ和 IRQ中断); 清零 T位(进入 AR

55、M状 态); 设臵 MOD位,切换处 理器模式至 FIQ模式。 将下一条的地址存入 FIQ模式的 LR寄存器,即 指令 3的地址。 将跳转地址存入 PC,即 FIQ中断服务函数的入口 地址,实现跳转。 FIQ中断服务程序在 ARM状态下执行现场保 护等操作。 中断服务程序使 用 BX指令,将处理器从 ARM状态切换到 Thumb 状态,通过臵位 CPSR的 T 位实现。 中断服务程序开 始执行 Thumb指令。 中断服务程序使 用 指令,将处理器从 Thumb状态切换到 ARM 状态,通过清除 的 位实现。 中断服务程序在 状态下执行恢复中 断现场等操作。 中断异常处理结 束后,异常处理程序完

56、 成以下动作: 将 SPSR寄存器的值复制 回 CPSR寄存器; 将 LR寄存的值减去一个 常量( FIQ异常为 4)后 复制到 PC寄存器,跳转 到被中断的用户程序 (指令 2的地址)。 2.8 ARM体系的异常 未定义的指令异常 未定义指令异常是内部异常中断 , 当 ARM处理器 遇到一条自己和系统内部任何协处理器都无法执行的 指令时 , 就会发生未定义指令异常 , 从而进入中断处 理程序 , 同时软件可使用这一机制通过仿真未定义的 协处理器指令来扩展 ARM指令集 。 在仿真失败的指令后 , 捕获处理器执行下面的指令: MOVS PC,R14_und 2.8 ARM体系的异常 中止异常

57、中止表示当前对存储器的访问不能被完成 , 这是由 外部 ABORT输入信号引起的异常中断 。 中止类型有 2种 类型: 预取指中止:由程序存储器引起的中止异常; 数据中止:由数据存储器引起的中止异常。 2.8 ARM体系的异常 预取指中止 当发生预取指中止时, ARM内核将预取的指令标 记为无效,但在指令到达流水线的执行阶段时才进入 异常。如果指令在流水线中因为发生分支而没有被执 行,中止将不会发生。 在处理中止的原因之后,不管处于哪种处理器操 作状态,处理程序都会执行下面的指令恢复 PC和 CPSR 并重试被中止的指令: SUBS PC,R14_abt,#4 2.8 ARM体系的异常 数据中

58、止 当发生数据中止异常时,异常会在 “ 导致异常的指 令 ” 执行后的下一条指令发生。在这种情况下,理想 的状况是进入数据中止异常的 ISR,然后在内存中挑选 出问题,再重新执行导致异常的指令。 在修复产生中止的原因后,不管处于哪种处理器操 作状态,处理程序都必须执行下面的返回指令 : SUBS PC,R14_abt,#8 2.8 ARM体系的异常 软件中断异常 软件中断异常 (SWI)用于进入管理模式,通常用于 请求一个特定的管理函数。 SWI处理程序通过执行下面 的指令返回: MOVS PC,R14_svc 这个动作恢复了 PC和 CPSR并返回到 SWI之后的指令。 SWI处理程序读取操

59、作码以提取 SWI函数编号。 2.8 ARM体系的异常 中断延迟 中断延迟即从外部中断请求信号发出到执行对应的 中断服务程序 ISR的第 1条指令所需要的时间 。 通过软件程序设计来缩短中断延迟的方法有: 中断 优先级 和 中断嵌套 。 1.ARM简介 2.ARM7TDMI 3.ARM的模块、内 核和功能框图 4.ARM处理器状态 5.ARM处理器模式 ARM7体系结构 6.ARM内部寄存器 7.当前程序状态寄存 器 8.ARM体系的异常、 中断及其向量表 9.ARM体系的存储系 统 2.9 ARM体系的存储系统 简介 ARM处理器采用冯 诺依曼 ( Von Neumann) 结构 , 指令

60、、 数据和 I/O统一编址 ( 即存在同一个空间 ) 。 只 有装载 、 保存和交换指令可访问存储器中的数据 。 芯片一般在处理器核和外部存储器之间有一 个存储器管理部件将局部总线的信号和时序转换为现 实的外部总线信号和时序 。 ARM7 处理器核 存储器 存储器 管理 器 ARM7的规范定义 了局部总线的信号 和时序。 各芯片生产厂商制 定了自己的外部总 线的信号和时序。 2.9 ARM体系的存储系统 地址空间 ARM结构使用单个平面的 232个 8位字节 地址空间 。 地址空间可以看作是包含 230个 32位字 , 或 231个 16位半 字 。 如果地址向上或向下溢出地址空间 , 通常会

61、发生 翻转 。 注意: 如果在取指操作时地址发生溢出 , 只要没有 执行预取的无效指令 , 就不会导致异常 。 2.9 ARM体系的存储系统 存储器格式 地址空间的规则要求字地址 A: 位于地址 A的字包含的字节位于地址 A,A+1,A+2和 A+3; 位于地址 A的半字包含的字节位于地址 A和 A+1; 位于地址 A+2的半字包含的字节位于地址 A+2和 A+3; 位于地址 A的字包含的半字位于地址 A和 A+2; 字节 字节 字节 字节 A+3 A+2 A+1 A 存储器 半字 半字 字 2.9 ARM体系的存储系统 存储器格式 存储器系统有两种映射机制: 小端存储器系统: 在小端格式中

62、, 数据的高字节存放在高地址中 。 大端存储器系统: 在大端格式中 , 数据的高字节存放在低地址中 。 A+3 A+2 A+1 A 存储器 小端存储 模式下, 0 x12345678 在 A地址开始 的一个字空 间的存储; 1 大端存储 模式下, 0 x12345678 在 A地址开始 的一个字空间 的存储; 2 0 x12 0 x34 0 x56 0 x78 A+3 A+2 A+1 A 存储器 0 x78 0 x56 0 x34 0 x12 2.9 ARM体系的存储系统 非对齐的存储器访问 ARM结构通常希望所有的存储器访问都合理的对 齐 , 具体来说就是字访问的地址通常是字对齐的 , 而 半字访问使用的地址是半字对齐的 。

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!