




免费预览已结束,剩余69页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统基础之arm9体系结构 电子信息工程系 本讲内容 一、arm9体系结构 二、arm流水线结构 三、arm存储结构 四、arm9寄存器 五、arm异常 六、arm9系列芯片s3c2410x介 绍 一、arm9体系结构 本节内容 1、arm系列处理器简介 2、arm9体系结构 1、arm系列处理器简介 arm9系列简介 arm7采用的neumann结构,取指令和取操作数都是 通过一条总线分时进行,这样,在高速运算时,不但不 能同时取指令和取操作数,而且还会造成传输通道上的 瓶颈现象。 arm9采用哈佛(harvard)结构,程序存储器与数据存 储器分开,提供了较大的存储器带宽。同时,大多数 dsp都采用此结构。 arm9为五级流水(取指,译码,执行,缓冲/数据,回 写),平均功耗为0.7mw/mhz。时钟速度为120mhz- 200mhz,每条指令平均执行1.5个时钟周期。 arm9系列微处理器包含arm920t、arm922t和 arm940t三种类型,主要应用在手持产品、视频电话 、pda、数字消费产品、机顶盒、家用网关等方面。 arm9系列处理器简介 arm9系列产品 项项目 型号 cache (ins/data ) mmbus thum b dsp jazell e 指令 版本 arm920t16kb/16kb mmuasbyesnonov4t arm922t 8kb/8kbmmuasbyesnonov4t arm940t 4kb/4kbmmuasbyesnonov4t arm9系列处理器简介 arm9e系列 arm9e系列微处理器包括如下4种类型的核: arm926ej-s、arm946e-s和arm966e-s arm9e系列是一种包含有微控制器、dsp、 java功能的综合处理器,强化了数字信号处理能 力,适用于需要dsp和微控制器结合使用的情况 ,并且把thumb技术和dsp都扩展到了arm指 令中,并且具有embededice-rt逻辑,更好地 适应了实时系统开发的需要。同时arm9e使用 了jazelle增强技术,该技术支持一种新的java 操作状态,在硬件中执行java字节码。 arm9系列处理器简介 arm9e系列产品 项项目 型号 cache (ins/data ) mm busthumb dsp jazell e 指令 版本 arm926ej-s 可变mmu 2*ahb yesyesyes v5tej arm946e-s 可变mpuahbyesyesnov5te arm966e-s 无-ahbyesyesnov5te arm968e-s 无dmaahbyesyesnov5te arm10系列处理器简介 arm10系列 arm10系列微处理器包括:arm1020e和 arm1022e等型号 arm10系列采用了新的体系结构,其核心为使用了 向量浮点单元,有强大的浮点运算能力,并且增加了 cache容量和总线宽度,并且具有低功耗的特点。 arm10系列微处理器主要应用于下一代无线设备、视 频消费品等。 arm10系列产品 项项目 型号 cache (ins/data ) mmbus thum b dsp jazelle 指令 版本 arm1020e32kb/32kb mmu 2*ahbyesyesnov5te arm1022e 16kb/16kbmmu 2*ahbyesyesnov5te arm1022e 可变mpu mmu2*ahbyesyesyesv5tej arm其它系列处理器简介 armstrong/xscale系列 strongarm是采用arm体系结构高度集成的 32位risc微处理器。它融合了intrl公司的设计 技术,以及arm体系结构的电源效率,其体系结 构在软件上兼容armv4,同时又具有intel技术 优点。 strongarm是intrl公司为手持消费类电子和移 动计算与通信设备生产的嵌入式处理器。采用 strongarm架构的处理器有:sa-1、sa-110、 sa-1100、sa1110和ixp1200。 xscale是基于armv5体系结构的解决方案, 是一款性能全、性价比高、功耗低的处理器,支 持16位的thumb和dsp指令集,主要应用于数 字移动电话、个人数字助理和网络产品等。 xscale架构的处理器有:pxa250、pxa255和 pxa270等。 arm系列处理器简介 arm微处理器应用 1、工业控制领域:作为32的risc架构,基于arm核 的微控制器芯片不但占据了高端微控制器市场的大部分 市场份额,同时也逐渐向低端微控制器应用领域扩展, arm微控制器的低功耗、高性价比,向传统的8位/16位 微控制器提出了挑战。 2、无线通讯领域:目前已有超过85%的无线通讯设备 采用了arm技术, arm以其高性能和低成本,在该领 域的地位日益巩固。 3、网络应用:随着宽带技术的推广,采用arm技术的 adsl芯片正逐步获得竞争优势。此外,arm在语音及 视频处理上进行了优化,并获得广泛支持,也对dsp的 应用领域提出了挑战。adsl(非对称数字用户线路) 4、消费类电子产品:arm技术在目前流行的数字音频 播放器、数字机顶盒和游戏机中得到广泛采用。 5、成像和安全产品:现在流行的数码相机和打印机中 绝大部分采用arm技术。手机中的32位sim智能卡也采 用了arm技术。 arm系列产品命名规则 arm 926ej-sarm 926ej-s family number 7: arm7 9: arm9 10: arm10 11: arm11 memory system 2: cache, mmu, process id 4: cache, mpu 6: write buffer, no cache memory size 0: cache size (4-128kb) 2: reduced cache size 6: tcm synthesizable extensions e: dsp extension j: jazelle extension t: thumb support 2、arm9体系结构 arm9体系结构框图 对于arm9系列,其基本内核是arm9tdmi, 下页图给出了arm9tdmi结构框图。主要有7部 分构成。 比较最常用的是arm920t内核,后页图给出了 arm920t结构框图。 arm920t结构主要部分有:arm9tdmi内核 cpu、mmu、cache、协处理器接口、运行跟 踪信息接口(etm)、jtag调试接口、总线接口 等7部分构成。 arm9tdmi体系结构框图 arm9tdmi cpu 指令接口 数据地址接口跟踪接口 数据接口jtag 指令地址接口 arm9tdmi结构框图 arm920t体系结构框图 arm920t体系结构框图 二、arm流水线结构 本节内容 1、arm流水线结构 2、arm总线结构 1、arm流水线结构 流水线技术概述 流水线方式:是把一个重复的过程分解为若 干个子过程,每个子过程可以与其他子过程同 时进行。 由于这种工作方式与工厂中的生产 流水线十分相似,因此,把它称为流水线工作 方式。 处理器按照一系列步骤来执行每一条指令。 典型的步骤为: 1)从存储器读取指令(fetch) 2)译码以鉴别它是哪一类指令(dec) 3)从寄存器组取得所需的操作数(reg ) 4)将操作数进行组合以得到结果或存储 器地址(exe) 5)如果需要,则访问存储器存取数据( mem) 6)将结果回写到寄存器组(res) arm7的三级流水线 1取指:从程序存储器中取指令,放入指令流水 线。(占用存储器访问操作) 2译码:指令译码。(占用译码逻辑) 3执行:执行指令/读写reg。(占用alu及数据 路径) 1、arm流水线结构 下图为3个单周期指令在流水线上的情况。一条指令有 3个时钟周期的执行时间,但吞吐量是每个周期1条指令 。 取指译码译码执执行取指译码译码执执行 取指译码译码执执行 t 1 2 3 pc值如何计算? pc 指向处于读取级的指令地址,而不是处于执行级的指令地址 pc=当前执行指令地址+8 arm单周期指令的3级流水线操作 arm流水线结构 优秀的流水线结构 operation cycle 1 2 3 45 6 add sub mov and orr eor cmp rsb fetchdecodeexecute fetchdecodeexecute fetchdecodeexecute fetchdecodeexecute fetchdecodeexecute decodeexecute fetchdecode fetch fetch 本例中 6 个时钟周期内一共完成了 ? 条指令 全部对寄存器进行操作 (单周期执行) 指令周期数 (cpi) = 1 arm流水线结构 多周期指令的3级流水线操 作 取指 译译 码码 执执行 取指译译 码码 地址 计计算 数据 传传送 取指 取指译译 码码 执执行 译译 码码 执执行 取指 译译 码码 执执行 1 2 3 4 5 6 7 8 1 add 2 stb 3 add 4 add 5 add 指令流水线出现了中断 arm流水线结构 t4周期: 指令2地址计算产生下一周期数据 路 径需要的控制信号。 指令3译码产生下一周期数据路径需 要 的控制信号。 二者都产生下一周期数据路径控制信号,数据路径 控制冲突,因此断流。 t5周期: 指令2 stb访问数据存储器 指令5取指访问程序存储器 二者都访问存储器,造成访问存储器冲突,在此断流 。 指令3译码 指令4的译码则不得不推迟一个周期。 arm流水线结构 arm9tdmi的五级流水线 arm7tdmi与arm9tdmi流水线比较 arm流水线结构 arm7和arm9流水线比较 5级流水线的arm9内核是哈佛架构,拥 有独立的指令和数据总线;指令和数据的 读取可以在同一周期进行; 3级流水的arm7内核是指令和数据总线 复用的冯.诺依曼架构,指令和数据的读取 不能在同一周期进行; 5级流水线设计把寄存器读取、逻辑运 算、结果回写分散在不同的流水当中, 每 一级流水的操作简洁,提升了处理器的主 频。 arm流水线结构 arm流水线结构 随着流水线深度(级数)的增加,每一 段的工作量被削减了,这使得处理器可以 工作在更高的频率,同时改进了处理器的 性能; 负面作用是增加了系统的延时,即内核 在执行一条指令前,需要更多的周期来填 充流水线; 流水线级数的增加也意味着在某些段之 间会产生数据相关。 arm流水线结构 arm处理器性能比较 2、arm总线结构 arm微控制器使用的是amba总线体系结构 amba(advanced microcontroller bus architecture)是arm公司公布的总线标准, 先进的amba规范定义了三种总线: ahb总线(advanced high-performance bus):用于连接高性能系统模块。它支持突 发数据传输方式及单个数据传输方式,所有时 序 参考同一个时钟沿。 asb总线(advanced system bus):用 于连接高性能系统模块,它支持突发数据传输 模式。 apb总线(advance peripheral bus):是 一个简单接口支持低性能的外围接口。 本节内容 1、arm存储数据类型 2、arm存储器组织 3、arm存储器层次 三、arm存储结构 arm存储数据类型 arm处理器支持以下6种数据类型: 8位有符号和无符号字节(byte)。 16位有符号和无符号半字 (halfword) 它们必须以两字节的边界对 齐(半字对齐)。 32位有符号和无符号字(word) 它们必须以4字节的边界对 齐(字对齐)。 字对齐:字单元地址的低两位 a1a0=0b00。即地址末位为0x0, 0x4, 0x8, 0xc。 半字对齐:半字单元地址的最低位 a0=0b0 (地址末位为 0x0,0x2,0x4,0x6,0x8,0xa,0xc,0xe)。 1、arm存储数据类型 对于指令,arm指令系统分为32位arm指令 集和16位的thumb指令集,在存储时分别以32 位和16位的两种不同长度存储。 对于数据,arm支持对32位字数据,16位半 字数据,8位字节数据操作。因此数据存储器可 以存储32位,16位,8位三种不同长度数据。 在arm内部,所有操作都面向32位的操作数 ,只有数据传送指令支持较短的字节和半字的数 据类型。当从存储器读入一个字节或半字时,根 据其数据类型将其扩展到32位。 arm存储数据类型 arm存储器组织 arm存储器以8位为一个单元存储数据(一个字节), 每个存储单元分配一个存储地址。 arm将存储器看作是从零地址开始的字节的线性组合 。作为32位的微处理器,arm体系结构所支持的最大寻 址空间为4gb(232字节)。 从零字节到三字节放置第一个存储的字数据,从第四 个字节到第七个字节放置第二个存储的字数据,依次排 列。 32位的字数据要使用4个地址单元,16位半数据要使用2 个地址单元。 这样,就存在一个所存储的字或半字数据的排列顺序 问题。arm体系结构可以用两种方法存储字数据,称为 大端格式和小端格式 。 2、arm存储器组织 arm存储器组织 大端格式(big-endian):字数据的高字节存储在低地 址中,而字数据的低字节则存放在高地址中。 小端格式(low-endian):与大端存储格式相反。低地 址中存放的是字数据的低字节,高地址存放的是字数据 的高字节。缺省设置为小端格式。 arm存储器层次 微处理器希望存储器容量大、速度快。但 容量大者速度慢;速度快者容量小。解决方法是 构建一个由多级存储器组成的复合存储器系统。 两级存储器方案 一般包括: 一个容量小但速度快的从存储器 一个容量大但速度慢的主存储器 宏观上看这个存储器系统像一个即大又快的存储 器。这个容量小但速度快的元件是cache,它自 动地保存处理器经常用到的指令和数据的拷贝。 3、arm存储器层次 多级存储器系统 寄存器组 访问时间约为几个ns。 片上ram 与片外ram比速度快、功耗小、 容量小。读写时间约为几个ns。 片上cache 832kb,访问时间约为十几个ns。 主存储器 一般为几兆字节1gb 的动态存 储器,访问时间约 50ns。 arm存储器层次 cpu 寄存器组 片上ram 片上cache 主存储器 硬盘 四、arm9寄存器 本节内容 1、arm寄存器概述 2、arm通用寄存器 3、arm状态寄存器 1、 arm寄存器概述 arm寄存器概述 arm处理器v4及以上版本有37个32位的寄存器 其中31个为通用寄存器;6个为状态寄存器。 31个通用寄存器 r0r15; r13_svc、r14_svc; r13_abt、r14_abt; r13_und、r14_und; r13_irq、r14_irq; r8_fiq-r14_fiq 6 个状态寄存器 cpsr spsr_svc、spsr_abt、 spsr_und、spsr_irq和spsr_fiq arm9寄存器概述 每一类处理 器模式都有一 组相应的寄存 器组; 在任意的处 理器模式下, 可见的寄存器 包括15个通用 寄存器(r0 r14)、1个 或2个状态寄 存器和程序寄 存器。 带灰色底纹 的单元格表示 ,用户模式或 系统模式使用 的一般寄存器 ,已被异常模 式特定的另一 寄存器所替代 。 arm9寄存器概述 user/sysfiqsvcabtirqund 2、arm通用寄存器 arm的通用寄存器 通用寄存器包括r0r15,可以分为三类: 未分组寄存器r0r7 分组寄存器r8r14 程序计数器pc(r15) 一、未分组寄存器r0r7 在所有的运行模式下,未分组寄存器都指向同一个物 理寄存器,他们未被系统用作特殊的用途,是真正的通 用寄存器。 因此,在中断或异常处理进行运行模式转换时,由于 不同的处理器运行模式均使用相同的物理寄存器,可能 会造成寄存器中数据的破坏,这一点在进行程序设计时 应引起注意。 arm的通用寄存器 二、分组的寄存器r8r14 对于r8r12,每一次所访问的物理寄存器,与处理 器当前的工作模式有关。 1、r8r12 当处理器工作于fiq模式时,访问的寄存器为 r8_fiqr12_fiq; 除fiq模式以外的其他模式,访问的寄存器为 r8_usrr12_usr。 2、r13和r14: 每个寄存器对应6个不同的物理寄存器,其中的一个是用户 模式与系统模式共用,另外5个物理寄存器,对应于其他5种 不同的异常模式。 采用以下的记号来区分不同的物理寄存器: r13_ r14_ 其中,mode为以下几种模式之一:usr、fiq、 irq、svc、abt、und。 arm的通用寄存器 r13:寄存器r13在arm指令中常用作堆栈 指针sp。但这只是一种习惯用法,用户也可使用其他 的寄存器作为堆栈指针。而在thumb指令集中,某些 指令强制性的要求使用r13作为堆栈指针。 r14:寄存器r14也称作子程序链接寄存器 (subroutine link register)或链接寄存器 lr。 当执行bl子程序调用指令时,r14中得到r15(程序 计数器pc)的备份。其他情况下,r14用作通用寄存器 。 与之类似,当发生中断或异常时,对应的分组寄存器 r14_svc、r14_irq、r14_fiq、r14_abt和r14_und 用来保存r15的返回值。 arm的通用寄存器 三、程序计数器pc(r15) 寄存器r15用作程序计数器(pc)。 在arm状态下,位1:0为0,位31:2用于保存pc; 在thumb状态下,位0为0,位31:1用于保存pc; 使用r15时注意:虽然r15可以用作通用寄 存器,但是有一些指令在使用r15时有一些特 殊限制,若不注意,执行的结果将是不可预料 的。所以,一般不这么使用。 关于pc的值:由于arm采用多级流水线技 术,所以pc总是指向正在取指的指令,而不是 正在执行的指令。也即pc总是指向当前指令的 下两条指令的地址。因此,对于arm指令集而 言,pc的值为当前指令的地址值加8个字节。 3、arm状态寄存器 arm的状态寄存器 一、两种程序状态寄存器 在arm微处理器中,有cpsr和spsr两种程序状态寄存器。 1、当前程序状态寄存器 cpsr (current program status register) 用来保存当前程序状态的寄存器。 所有处理器模式下都可以访问当前程序状态寄存器 cpsr。仅一个cpsr。 2、保存程序状态寄存器spsr_mode (saved program status register) spsr_mode用来进行异常处理,其功能包括: 保存alu中的当前操作信息 当异常发生时, 用来保存cpsr的值,从异常返回时,将 spsr_mode复制到cpsr中,恢复cpsr的值。 控制允许和禁止中断修改spsr的值 设置处理器的运行模式 修改spsr的值 问题:一共有多少个spsr?为什么? arm的状态寄存器 二、arm状态寄存器的格式 1、条件码标志位(保存alu中的当前操作信息) n:正负号/大小 标志位 0表示:正数/大于;1表示:负数/小于 z:零标志位 0表示:结果不为零;1表示:结果为零 c:进位/借位/移出位 0表示:未进位/借位/移出0;1表示:进位 /未借位/移出1 v:溢出标志位 0表示:结果未溢出;1表示:结果溢出 31 30 29 28 27 876543210 nzcv (保留) ift m4 m3 m2 m1 m0 arm的状态寄存器 2、控制位 i、f中断控制位控制 允许和禁止中断 i1 禁止irq 中断i0 允许irq中断 f1 禁止fiq 中断f0 允许fiq中断 t控制(标志)位反映处 理器的运行状态 t=1时,程序运 行于thumb状态 t=0时,程序运 行于arm状态 m控制位决定了处理器 的运行模式 当发生异常时这 些位被改变。 如果处理器运行 在特权模式,这些位也可以由程序 修改。 m4:0 10000 10001 10010 10011 10111 11011 11111 模式 用户 快中断 中断 管理 中止 未定义 系统 arm的状态寄存器 3、保留位 cpsr中的其余位为保留位,当改变cpsr中 的条件码标志位或者控制位时,保留位不要改 变,在程序中也不要使用保留位来存储数据。 保留位将用于arm版本的扩展。 thumb状态下的寄存器组织 thumb状态下的寄存器集是arm状态下寄存 器集的子集。程序员可以直接访问8个通用的寄 存器(r0r7),程序计数器pc、堆栈指针 sp、链接寄存器lr和当前状态寄存器cpsp。 本节内容 1、中断和异常的概念 2、arm的异常 3、arm的异常中断响应 4、中断向量和中断优先级 五、arm异常 1、中断和异常的概念 中断和异常的概念 1、中断 当cpu正在执行程序时,系统发生了一件急 需处理的事件,cpu暂时停下正在执行的程序,转去处理 相应的事件,事件处理完后,cpu再返回执行原来的程序 ,这种情况称为中断。这是中断的本来意义。 中断事件:引起cpu产生中断、并且与cpu当前所执行 的程序无关的、由外部硬件产生的事件,也叫中断源。中 断事件也常称为外中断。 常说的中断:有时指的是中断的本意,有时指的是外部中 断事件,即外中断。 中断是计算机系统基本的功能 利用中断,外设可以与 cpu并行工作,当外设需要传输数据或控制时,向cpu发 出中断请求信号。cpu响应其请求进行处理。因此,使用 中断既可以实现cpu与外设并行工作,又可以实时处理各 种紧急事件。 中断和异常的概念 2、异常 是指cpu在执行指令时出现的错误,即不正常 的情况。异常是与当前所执行的程序有关的。如存 取数据或指令错误、计算结果溢出等。 异常的处理:也用中断的方式进行处理。 计算机通常是用中断来处理外中断和异常,因此 下面将二者均称为异常。 3、arm程序的三种执行流程 顺序流程:每执行一条arm指令,程序计数器 (pc)的值加4;每执行一条thumb指令,程序 计数器寄存器(pc)的值加2,整个过程是按顺序 执行。 对异常的说明 当系统运行时,异常可能会随时发生,为保 证在arm处理器发生异常时不至于处于未知状 态,在应用程序的设计中,首先要进行异常 处理,采用的方式是在异常向量表中的特定 位置放置一条跳转指令,跳转到异常处理程 序,当arm处理器发生异常时,程序计数器pc 会被强制设置为对应的异常向量,从而跳转 到异常处理程序,当异常处理完成以后,返 回到主程序继续执行。 我们需要处理所有的异常,尽管我们可以简 单的在某些异常处理程序处放置死循环。 2、arm的异常 arm的异常 跳转流程:程序执行了跳转指令,则要跳转到 特定的地址标号处执行,包括跳转到子程序。例如 ,跳转指令,b、bl、blx和bx。 中断流程:当异常中断发生时,系统执行完当 前指令后,将跳转到相应的异常中断处理程序处执 行。在当异常中断处理程序执行完成后,程序返回 到发生中断的指令的下条指令处执行。 在进行异常中断处理程序时,要保存被中断的程序的执行 现场,在从异常中断处理程序退出时,要恢复被中断的程 序的执行现场。 中断处理与子程序调用的区别:中断是随机的,并且与 正在执行的程序无关;子程序调用是程序的主动行为,并 且与正在执行的程序密切相关。 arm的异常 arm有7种异常 1、复位 处理器上一旦有复位输入,arm处理器立 刻停止执行当前指令。复位后,arm处理器在禁止 中断的管理模式下,从地址0x00000000或 0xffff0000开始执行指令。 2、未定义指令异常 当arm处理器执行协处理器指令时,它 必须等待任一外部协处理器应答后,才能真正执行 这条指令。若协处理器没有响应,就会出现未定义 指令异常。 未定义指令异常可用于在没有物理协处理 器(硬件)的系统上,对协处理器进行软件仿真, 或在软件仿真时进行指令扩展。 arm的异常 3、软件中断异常 该异常由执行swi指令产生,可使用此 机制进行软件仿真。 4、预取中止(取指令存储器中止) 若处理器预取指令的地址不存在,或该 地址不允许当前指令访问,存储器会向处理器发出 中止信号,但当预取的指令被执行时,才会产生指 令预取中止异常。 5、数据中止(访问数据存储器中止) 若处理器数据访问指令的地址不存在, 或该地址不允许当前指令访问时,产生数据中止异 常。 arm的异常 6、irq异常 当处理器的外部中断请求引脚有效 ,且cpsr中的i=0,产生irq异常。 系统的外设可通过该异常请求中断服 务。 7、fiq异常 当处理器的外部中断请求引脚有效 ,且cpsr中的f=0,产生fiq异常。 fiq支持数据传送和通道处理,并 有足够的私有寄存器,从而在应用中可避免 对寄存器保存的需求,减少了开销。 arm的异常 arm异常中断响应过程 一、进入异常 当发生异常时,除了复位异常立即中止当前指令外,处理 器尽量完成当前指令,然后脱离当前的程序去处理异常。 arm处理器对异常中断的响应过程如下 : 1、保存返回地址 将引起异常指令的下一条指令的地址保存到新的异常模式x 下的r14,即r14-中,使异常处理程序执行完后能 正确返回原程序。 2、保存当前状态寄存器cpsr的内容 将cpsr的内容保存到将要执行的异常中断对应的spsr中 ,便于中断返回时恢复处理器当前的状态位、中断屏蔽位以 及各条件标志位。 3、arm异常中断响应 3、设置当前状态寄存器cpsr中的相应位 设置cpsr模式控制位cpsr4:0,使处理器进 入相应的执行模式; 设置中断标志位(cpsr6=1),禁止irq中断 ; 设置中断标志位(cpsr7=1)禁止fiq中断, 当进入reset或fiq模式时。 4、转去执行中断处理程序 取相应的中断向量给程序计数器pc,使程序开始 执行中断处理程序。 一般地说,矢量地址处将包含一条指向 相应程序的转移指令,从而可跳转到相应的异常中断 处理程序处执行异常中断处理程序 。 arm异常中断响应 arm异常中断响应 arm处理器对异常的响应过程可以用伪代 码描述如下 : r14_=return link spsr_=cpsr cpsr4:0=exception mode number cpsr5=0 /*当运行于arm状态时*/ cpsr6=1 /*禁止新的irq中断*/ if =reset or fiq then cpsr7=1 /*当reset 或fiq异常中 断时*/ /*禁止新 的fiq中断*/ pc=exception vector address 注意使用异常模式下的特有寄存器 f 每个异常模式对应有两个寄存器 r13_、r14_分别保存相 应模式下的堆栈指针、返回地址;堆栈指 针可用来定义一个存储区域保存其它用户 寄存器,在程序初始化时应该对各种模式 堆栈设置,便于随时使用。 f fiq模式还有额外的专用寄存器r8_fiq r12_fiq,使用这些寄存器可以加快快 速中断的处理速度。 arm异常中断响应 二、异常返回 1、异常返回应执行的操作 异常处理完毕之后,arm微处理器会执行以 下几步操作从异常返回: 将返回地址装入pc 把连接寄存器lr的值减 去相应的偏移量,然后送到pc中。 恢复cpsr的值 将spsr复制回cpsr中。 清除中断屏蔽位 若在进入异常处理时设置 了中断禁止位,要在此清除。 可以认为应用程序总是从复位异常处理程序开始执行 的,因此复位异常处理程序不需要返回。 arm异常中断响应 2、各种异常返回方法 fiq中断返回 不管是在arm状态还是在thumb状态下进入fiq模式, fiq处理程序均可以执行以下指令从fiq模式返回: subs pc,r14-fiq ,#4 指令预取中止( abort )异常返回 当指令预取访问存储器失败时,存储器系统向arm处理 器发出存储器中止(abort)信号,预取的指令被记为无 效,但只有当处理器试图执行无效指令时,指令预取中 止异常才会发生,如果指令未被执行,例如在指令流水 线中发生了跳转,则预取指令中止不会发生。 如果发生了指令预取中止异常,无论是在arm状态还是 thumb状态,其返回指令为: subs pc, r14_abt, #4;重新执行被中止的指令 arm异常中断响应 数据中止( abort )异常返回 如果发生了数据中止异常,无论是在arm状态还是 thumb状态,其返回指令为: subs pc, r14_abt, #8 重新执行被中止的指令 软件中断指令(swi)异常返回 用于进入管理模式,常用于请求执行特定的管理功 能。软件中断处理程序执行以下指令可以从swi模式 返回,无论是在arm状态还是thumb状态: movs pc , r14_svc 以上指令恢复pc(从r14_svc)和cpsr(从spsr_svc )的值,并返回到swi的下一条指令。 arm异常中断响应 未定义指令异常返回 当arm处理器遇到不能处理的指令时, 会产生未定义指令异常。采用这种机制,可 以通过软件仿真扩展arm或thumb指令集 。 处理器执行以下程序返回,无论是在 arm状态还是thumb状态: movs pc, r14_und 以上指令恢复pc(从r14_und)和cpsr(从 spsr_und)的值,并返回到未定义指令后的下 一条指令。 arm异常中断响应 异常类型模式低向量地址 高向量地址 复位管理0x000000000xffff0000 未定义指令未定义0x000000040xffff0004 软件中断(swi)管理0x000000080xffff0008 预取中止 (取指令存储器中止) 中止0x0000000c0xffff000c 数据中止 (访问数据存储器中止) 中止0x000000100xffff0010 irq(中断)irq0x000000180xffff0018 fiq(快速中断)fiq0x0000001c0xffff001c arm中断向量 4、arm中断向
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数字孪生在城市交通规划与管理中的应用模式及2025年实施策略报告
- 2025年新能源大数据在分布式能源管理中的应用前景报告
- 民办教育机构品牌建设与合规运营管理体系研究报告2025
- 2025年安全管理专业知识题库及答案解析
- 2025年安全知识竞赛测试题及答案
- 2025年村级安全员安全风险评估题及答案
- 2022护士年终工作总结(集锦15篇)
- 工程保修责任合同
- 2025赠与合同发范本【简单版】
- 小学二年级语文上册第二次月考试卷及答案审定版(二套)
- 国际商务课件全套教程
- 22.3 实际问题与二次函数 课件 2024-2025学年人教版数学九年级上册
- 文言合集(1):120个文言实词小故事(教师版+学生版)
- 教科版(2024)小学科学一年级上册(全册)教案及反思(含目录)
- 【课件】2025届高三生物一轮复习备考策略研讨
- 中级会计师《经济法》历年真题及答案
- 新疆城市绿地养护管理标准
- 高职院校高水平现代物流管理专业群建设方案(现代物流管理专业群)
- 汉语言文学毕业设计开题报告范文
- 爱自己爱生命主题班会课件
- 国家职业技术技能标准 6-25-02-06 半导体分立器件和集成电路装调工 人社厅发20199号
评论
0/150
提交评论