第7章 ARM异常中断处理及编程
7.快速中断FIQ
当处理器的快速中断请求引脚有效且CPSR寄存器的F 控制位被清除时,处理器产生快速中断请求FIQ异常。
20
7.3 ARM 异常响应和处理程序返回
7.3.1 中断的响应 中断响应的过程 中断响应的步骤:
1、保护断点,即保存下一将要执行的指令的地址,就是把 这个地址送入堆栈。 2、寻找中断入口,根据不同的中断源所产生的中断,查找 不同的入口地址。 3、执行中断处理程序。 4、中断返回:执行完中断指令后,就从中断处返回到主程 序,继续执行。
6
7.2 ARM体系异常种类
当异常(或者说中断)发生时,处理器会把PC 设置为一个特定的存储器地址。这一地址放在被称 为向量表(vector table)的特定地址范围内。 向量表的入口是一些跳转指令,跳转到专门处 理某个异常或中断的子程序。源自7ARM的7种异常
!这个中断向量的查找是由硬件实现的,硬件指定PC跳到 0xffff0000/0x00000000(具体看编译器)
5
4.专用寄存器的使用
在异常发生时,处理器模式要改变,异常处理程序至少 需要访问下列专用寄存器: ① 堆栈指针寄存器(SP_<mode>); ② 连接寄存器(LR_<mode>); ③ 程序状态保存寄存器(SPSR_<mode>); ④ 在FIQ异常处理中,5个其他的通用寄存器(r8_FIQ 到r12_FIQ); ⑤ 其他的寄存器必须和发生异常之前的模式共用。
25
(2)LDR PC,[PC+offset] 把目标地址先存储在某一个合适的地址空间,然后把这 个存储器单元的32位数据传送给PC来实现跳转。 这种方法对目标地址值没有要求。但是存储目标地址的 存储器单元必须在当前指令的±4KB空间范围内。 注意:在计算指令中引用offset数值的时候,要考虑处理器 流水线中指令预取对PC值的影响。
33
(4)Data Abort数据中止异常 数据访问中止异常是由数据访问指令产生的,但常常是 由上一条赋数据存储器地址的语句的问题引起,故返回时应 从此条语句重新执行。 ARM Thumb A pc-12 pc-6 B pc-8 pc-4 数据中止异常 C pc-4 pc-2 lr=此条指令指针 D pc pc 返回指令: SUBS PC , LR, #8
4
异常可以同时发生,此时处理器按上表中设置的优先 级顺序处理异常。例如,处理器上电时发生复位异常,复 位异常的优先级最高,所以当产生复位时,它将优先于其 他异常得到处理。同样,当一个数据异常发生时,它将优 先于除复位异常外的其他所有异常而得到处理。 优先级最低的两种异常是软件中断异常和未定义指令 异常。因为正在执行的指令不可能既是一条软中断指令, 又是一条未定义指令,所以软中断异常和未定义指令异常 享有相同的优先级。
数据访问中止异常是由存储器发出数据中止信号,它由 存储器访问指令Load/Store产生。当数据访问指令的目标 地址不存在或者该地址不允许当前指令访问时,处理器产 生数据访问中止异常。
19
6.外部中断IRQ
当处理器的外部中断请求引脚有效,而且CPSR寄存器 的I控制位被清除时,处理器产生外部中断IRQ异常。系统 中各外部设备通常通过该异常中断请求处理器服务。
29
3.异常的返回地址
以一个简单的指令执行流水状态图来说明ARM中的的地址 修正: F D E
0x8000 0x8004 0x8008 0x800C A B C D F D F E D F E D E
在ARM三级流水线架构中,PC值指向当前执行指令地址加8 。假设指令A是BL指令,则当执行时,会把PC值(0x8008)保 存到LR寄存器。但是,接下来处理器会对LR进行一次自动调整 ,使LR=LR-0x4。所以,最终保存在LR里的是如图所示的B指 令地址。所以当从BL返回时,LR里面正好是正确的返回地址。
处理器模式。 用户模式和系统模式必须通过改变CPSR进入。
10
异常发生的通用处理:
当异常发生时,分组寄存器r14和SPSR用于保存处理器状态,操作伪 指令如下。
R14_<exception_mode> = return link SPSR_<exception_mode> = CPSR CPSR[4∶0] = exception mode number CPSR[5] = 0 /*进入ARM状态*/ If <exception_mode> = = reset or FIQ then CPSR[6] = 1 /*屏蔽快速中断FIQ*/ CPSR[7] = 1 /*屏蔽外部中断IRQ*/ PC = exception vector address
22
2.向量表
如前面介绍向量表时提到的,每一个异常发生时总是从 异常向量表开始跳转。最简单的一种情况是向量表里面的 每一条指令直接跳向对应的异常处理函数。 其中快速中断处理函数FIQ_handler()可以直接从地 址0x1C处开始,省下一条跳转指令,如图所示。
23
异常处理向量表
使用跳转指令简单 方便,是否有缺点 呢?
8
异常处理向量表
快速中断请求FIQ
0x1C 0x18
外部中断请求IRQ 保留 数据异常 预取异常 软中断异常 未定义指令异常 复位异常
0x10 0x0C 0x08 0x04 0x00
9
异常对处理器模式的影响:
每一种异常都会导致内核进入一种特定的模式。 也可以通过编程改变CPSR,进入任何一种ARM
21
7.3.2 ARM异常响应流程
1.判断处理器状态
当异常发生时,处理器自动切换到ARM状态,所以在 异常处理函数中要判断在异常发生前处理器是ARM状态还 是Thumb状态,这可以通过检测SPSR的T位来判断。 以调用SWI软中断异常为例,在Thumb状态下,必须注 意以下两点: ① 发生异常的指令地址为(lr-2)而不是(lr-4)。 ② Thumb状态下的指令是16位的,在判断中断向量号 时使用半字加载指令LDRH。
Thumb 指令集不包括协处理器,因而不需要这种指 令仿真机制。
15
3.软中断SWI
软中断异常发生时,处理器进入特权(管理)模式,执 行一些特权模式下的操作系统功能。 软终端异常通常人为主动设计产生,优先级较低。
16
4.预取指令异常
预取指令异常使由系统存储器报告的。当处理器试图去 取一条被标记为预取无效的指令时,发生预取异常。 如果系统中不包含MMU时,指令预取异常中断处理程 序只是简单地报告错误并退出。若包含MMU,引起异常的 指令的物理地址被存储到内存中。
24
跳转指令B的跳转范围为±32MB,但很多情况下不能保 证所有的异常处理函数都定位在向量的32MB范围内,需要 更大范围的跳转,而且由于向量表空间的限制,只能由一条 指令完成。 具体实现方法有下面两种: (1)MOV PC,#imme_value 这种办法将目标地址直接赋值给PC。但这种方法受格 式限制不能处理任意立即数。这个立即数由一个8位数值循 环右移偶数位得到。
32
(2)IRQ或FIQ异常 产生中断时,B指令被打断未执行,但是PC值已经更新, 需要重新回到B指令执行。 ARM Thumb B pc-8 pc-4 异常在这条指令处发生 C pc-4 pc-2 lr=此条指令指针 D pc pc 返回指令: SUBS PC , LR, #4
(3)指令预取中止异常 当发生指令预取中止异常时,程序要返回到该有问题的 指令处,重新读取并执行该指令。返回同IRQ流程。
13
2.未定义指令异常
发生未定义指令异常的场景: (1) 当ARM处理器遇到一条无法执行的指令,此指令没 有定义; (2)当ARM处理器 执行一条协处理器的操作指令,在正 常情况下,协处理器应该应答, 若协处理器没有响应。
14
未定义指令异常可以用来通过软件仿真系统中的某些 部件的功能。
例:如果系统中不包含浮点运算部件,CPU遇到浮点运算 指令时,将发生未定义指令异常,在该未定义指令异常处理 程序中可以通过其它的指令序列仿真该浮点运算指令。
0x1C 0x18
B
FIQ_Handler() IRQ_Handler()
B 保留 B B B B B
0x10 0x0C 0x08 0x04 0x00
DataAbt_Handler() PreAbt_Handler() SWI_Handler() Undef_Handler() Reset_Handler()
ARM处理器开发详解
第7章 ARM异常及中断处理
主要内容:
ARM异常中断处理概述 异常种类和优先级 ARM
异常响应和处理程序返回 ARM应用系统中异常中断处理程序的安装 SWI异常中断处理程序设计 FIQ和IRQ异常中断程序设计
2
7.1 ARM异常中断处理概述
1、中断 中断是一个过程,是CPU在执行当前程序的过程中因 硬件或软件的原因插入了另一段程序运行的过程。因硬件 原因引起的中断过程的出现是不可预测的,即随机的,而 软中断是事先安排的。
30
同样的跳转机制在所有的LR自动保存操作中都存在。 中断返回处理也类似。 假设在指令B处(地址0x8004)发生了异常,进入异常 响应后,LR经过跳转保存的地址值应该是C的地址0x8008。
31
(1)软中断异常和未定义异常 此异常由当前执行的指令产生,返回的应该是C。 ARM Thumb B pc-8 pc-4 异常在这条指令处发生 C pc-4 pc-2 lr=此条指令指针 D pc pc 返回指令: MOVS PC ,LR
异常返回时,SPSR内容恢复到CPSR, 连接寄存器r14的内容恢复到程序计数器PC。
11
1.复位异常
当处理器的复位引脚有效时,系统产生复位异常中断, 程序跳转到复位异常中断处理程序处执行,因而复位异常 处理程序不需要返回。 复位异常中断通常用在下面两种情况下:
单片机的中断与异常处理方法
单片机的中断与异常处理方法在单片机的工作过程中,中断和异常处理是非常重要的概念和方法。
它们能够有效地提高单片机的响应能力和灵活性,使其能够应对各种不同的工作需求和问题。
本文将介绍单片机中断的概念、中断的种类以及针对不同中断的处理方法,同时也会探讨单片机异常处理的原理和方法。
一、中断的概念和种类中断是指在一个程序执行的过程中,由于某种特殊的事件发生,导致程序的正常执行被打断,转而去执行一个与当前任务无关的子程序,完成该事件的相应处理。
中断可以分为外部中断和内部中断两种。
1. 外部中断外部中断是指当单片机外部引脚的电平或信号发生变化时,引发中断事件,使单片机停止当前任务的执行,去处理由该外部事件引发的中断服务程序(ISR)。
外部中断常用于与外部设备的交互,如按键输入、传感器检测等。
在编程中,我们可以通过设置中断触发条件和编写相应的中断服务程序来实现对外部中断的处理。
2. 内部中断内部中断是指当单片机内部某个特定的事件发生时,由硬件或软件触发中断请求,并且将控制权交给中断服务程序进行相应的处理。
内部中断的发生可以是由于某个特定条件的满足,如定时器溢出中断、串口接收中断等;也可以是由软件的运行结果触发,如除法溢出中断、地址错误中断等。
不同的内部中断需要通过编程实现相应的中断服务程序。
二、中断的处理方法中断处理是指在中断发生时,单片机通过中断向量表找到相应的中断服务程序,并对中断事件进行处理的过程。
下面将介绍两种常用的中断处理方法。
1. 优先级中断处理优先级中断处理是指对多个中断源按照优先级进行划分和处理的方法。
在单片机的中断系统中,每个中断源都被赋予了一个优先级,高优先级的中断可以打断当前正在执行的低优先级中断,从而增加了中断的响应速度和灵活性。
优先级中断处理需要在编程时设置中断的优先级,并根据不同的中断事件编写相应的中断服务程序。
2. 嵌套中断处理嵌套中断处理是指当一个中断正在执行的过程中,又发生了另一个中断时,将当前中断挂起,转而处理新发生的中断,并在处理完毕后返回原中断继续执行的方法。
ARM异常与X86架构中断
2.ARM中,当正常的程序执行流程发生暂时的停止时,称 之为异常。中断包括在异常模式之内。
相同点:
1.ARM异常和X86中断一样,在执行时都会保护现场,在异常或中断 处理完之后会恢复现场,并且多个异常或中断会按照一定的优先级顺 序执行; 2.异常和中断的过程类似(请求、响应、处理、返回); 3.异常和中断可类似得分为软件和硬件两方面; 4.两者都提高了CPU的工作效率,能实现实时处理和故障处理;
不同点:
1.ARM异常的原因是正在执行的程序的暂停,而X86中断是由异步的 外部事件引起的,前者范围比后者要宽泛; 2.中断可以被屏蔽,而异常需要得到及时响应和处理,通常不能被屏 蔽。
arm中断实验的实验报告
arm中断实验的实验报告ARM中断实验的实验报告引言:ARM中断是一种常用的处理器功能,它可以在特定条件下中断当前的程序执行,转而执行指定的中断服务程序。
本次实验旨在通过ARM中断实验,深入了解中断的原理和应用。
一、实验背景ARM中断是ARM处理器中的一种重要功能,它可以在特定条件下中断当前的程序执行,转而执行指定的中断服务程序。
中断可以分为外部中断和内部中断两种类型。
外部中断是指来自外部设备的中断请求,例如外部设备的输入信号变化;内部中断是指来自处理器内部的中断请求,例如算术溢出、指令错误等。
二、实验目的1. 了解中断的概念和原理;2. 掌握ARM中断的实现方法;3. 学习如何编写中断服务程序。
三、实验步骤1. 准备实验环境:搭建ARM开发板,连接必要的外设;2. 配置中断控制器:根据实验需求,配置中断控制器的相关寄存器,使其能够正确响应中断请求;3. 编写中断服务程序:根据实验需求,编写中断服务程序,实现中断处理的相关功能;4. 运行实验程序:将编写好的程序下载到ARM开发板上,运行程序,观察中断的触发和响应情况;5. 实验结果分析:根据实验结果,分析中断的触发条件、中断服务程序的执行情况等。
四、实验结果与分析通过实验,我们成功实现了ARM中断的功能。
在实验过程中,我们配置了外部设备的中断引脚,当引脚状态发生变化时,中断控制器会产生中断请求,处理器则会立即中断当前的程序执行,转而执行中断服务程序。
在中断服务程序中,我们可以完成一些特定的操作,例如读取外设数据、更新系统状态等。
实验结果表明,中断服务程序能够正确地响应中断请求,并完成相应的操作。
五、实验总结本次实验通过ARM中断的实验,我们深入了解了中断的原理和应用。
中断是一种重要的处理器功能,它可以在特定条件下中断当前的程序执行,转而执行指定的中断服务程序。
掌握了中断的实现方法和编写中断服务程序的技巧,我们可以在实际应用中更好地利用中断功能,提高系统的响应速度和稳定性。
ARM的异常处理学习笔记转贴
ARM 的异常处理学习笔记转贴ARM的异常处理这部分比较不好理解。
当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。
当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指令处执行。
在进入异常中断处理程序时,要保存被中断程序的执行现场,从异常中断处理程序退出时,要恢复被中断程序的执行现场。
1、引起异常的原因(1)、指令执行引起的异常软件中断、未定义指令(包括所要求的协处理器不存在是的协处理器指令)、预取址中止(存储器故障)、数据中止。
(2)、外部产生的中断复位、FIQ、IRQ。
2、ARM中异常中断的种类(1)、复位(RESET)a、当处理器复位引脚有效时,系统产生复位异常中断,程序跳转到复位异常中断处理程序处执行,包括系统加电和系统复位。
b、通过设置PC跳转到复位中断向量处执行称为软复位。
(2)、未定义的指令当ARM处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义的指令异常中断,可以通过改异常中断机制仿真浮点向量运算。
(3)、软件中断这是一个由用户定义的中断指令(SWI)。
可用于用户模式下的程序调用特权操作指令。
在实时操作系统中可以通过该机制实现系统功能调用。
(4)、指令与取终止(Prefech Abort)如果处理器预取的指令的地址不存在,或者该地址不允许当前指令访问,当被预取的指令执行时,处理器产生指令预取终止异常中断。
(5)、数据访问终止(DATAABORT)如果数据访问指令的目标地址不存在,或者该地址不允许当前指令访问,处理器产生数据访问终止异常中断。
(6)、外部中断请求(IRQ)当处理器的外部中断请求引脚有效,而且CPSR的寄存器的I控制位被清除时,处理器产生外部中断请求异常中断。
系统中个外设通过该异常中断请求处7)、快速中断请求(FIQ) 理服务。
(当处理器的外部快速中断请求引脚有效,而且CPSR的F控制位被清除时,处理器产生外部中断请求异常中断。
学习笔记——ARMCortex-M0异常与中断
学习笔记——ARMCortex-M0异常与中断1.异常类型及编号2.Cortex-M0的每个异常源都有一个单独的编号:3.1~15内部系统异常:Reset(1), NMI(2), H/W Error(3), SVC(11), PndSV(14), SysTick(15)其他编号未用;4.16~47外部中断: IRQ#0~IRQ#31.5.异常优先级(Cortex-M0 支持7个)6.1). Cortex-M0 支持3个固定的最高优先级(Reset(-3), NMI(-2), H/W Error(-1))和4个可编程优先级;7.2). 可编程寄存器有8bit宽,但只有Bit7和Bit6可配置,其余Bits为0. (优先级由高到低:0x00,0x40,0x80,0xC0);8.3). 如果两个同时发生的异常的优先级相同,则先执行异常编号小的。
(IRQ#0,IRQ#1 则先执行IRQ#0)9.向量表(异常处理所需的起始地址信息)10.异常向量的地址为异常编号乘以4(Reset向量的地址为:1*4=0x00000004),其他向量地址如下图所示:11.12.EXC_RETURN(32Bits)13.该值用于异常返回机制,下图是其位域的含义:14.3个合法值:0xFFFFFFF1 返回处理模式(嵌套异常发生的情况)0xFFFFFFF9 返回线程模式并在返回中使用主栈(MSP);0xFFFFFFFD 返回线程模式并在返回中使用进程栈(PSP);15.异常的流程接受异常请求:1) 中断和SysTick中断使能;2) 未被NMI屏蔽掉;3) 异常优先级大于当前执行的异常优先级。
压栈及相关寄存器更新:1) 压栈并更新栈指针(8个registers被压栈:R0~R3, R12, R14/LR, R15/PC, xPSR);2) 取出异常向量写入PC中;3) 3个寄存器更新(LR<–EXC_RETURN, IPSR<–异常编号, NVIC<–对应的中断控制和状态)执行异常处理:1) 自动定位异常向量,并处理;2) 利用EXC_TURN的值来触发异常返回机制。
ARM体系结构与编程
和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小 ,从而使功耗和成本下降、可靠性提高。微控制器是目前嵌入式系统工业的 主流。微控制器的片上外设资源一般比较丰富,适合于控制,因此称微控制 器。
嵌入式微控制器
嵌入式微控制器目前的品种和数量最多,比较有代表性的通用 系列包括8051、P51XA、MCS-251、MCS-96/196/296、 C166/167、MC68HC05/11/12/16、68300等。另外还有许多半通 用系列如:支持USB接口的MCU 8XC930/931、C540、C541; 支持I2C、CAN-Bus、LCD及众多专用MCU和兼容系列。目前
2021/2/5
ARM分类
基于指令集体系结构(构架ISA)的分类 ARM V1 体系是最初版本,只有26位的寻址空间,没有乘法指 令,最终没有商业化 ARM V2 体系与V1体系同为26位寻址空间,具有乘法和加法指 令,支持协处理器 ARM V3 体系的寻址范围扩展到32位,具有乘法和加法指令, 支持协处理器 ARM V4 体系增加了半字存储操作,对调试的支持以及支持嵌 入的ICE ARM V5 体系增加了DSP指令支持和对Java指令的支持 ARM V6 体系增加了媒体指令,ARMv6指令集合中加入了超过 60条SIMD单指令多数据指令 ARM V7 体系定义了三种独立的内核型--A(应用领域), R( 实时领域),M(控制领域)
嵌入式系统基础第7章中断和异常
为减少延时,ARM在快中断中采取了 两个措施: (1)专门为快中断FIQ设置了一个FIQ模式, 并为这个模式配置了较多的私有寄存器, 从而可使中断服务程序有足够的寄存
器来使用,而不必与被中断服务程序使用 同一组寄存器,这样就免去了因寄存器冲 突而必需的保护及恢复现场工作。
(2)ARM把FIQ的中断向量放在了中断 (异常)向量表末尾0X0000001C处,因此 它后面没有其它中断向量,允许用户将中 断服务车工许程序直接放在这里。
除了外部设备可以发出可以发出中断 请求之后,处理器内部也会有一些事件可 以发出中断请求,例如读取指令出错或在 进行除法运算时除数为零等。为了与外部 事件引起的中断相区别,人们把这种由内 部事件引起的中断叫做异常。
7.1.2
中断请求信号的屏蔽
处理器中用来屏蔽中断的积存器和开 关如下:
1、可屏ห้องสมุดไป่ตู้中断
1、低端和高端向量表
ARM有低端和高端两种向量表,用户可 以根据需要选用其中一种,如下所示:
ARM中断(异常)的各个向量在向量表 中的分配如下:
中断(异常) 复位(RESET) 未定义指令(UNDEF) 向量在低端向量表的地址 0x00000000 0x00000004 向量在高端向量表的地址 0xFFFF0000 0xFFFF0004
一般情况下,这个优先排队机构可能 在处理器中有一套,在中断控制器中也有 一套,甚至在借口电路中也会有一套。
(2)软件实现方法
就是把所有中断源的中断请求信号分 成两路,其中一路经“或”逻辑送到处理 器的中断请求输入端,而另一路则送入中 断接口电路经数据总线送入处理器。
中断源的软件查询法电路的接线如下 图所示:
异常/中断 复位(RESET) 未定义指令(UNDEF) 软中断(SWI) 地址 LR LR 说明 指向未定义指令的下一条指令 指向SWI指令的下一条指令
ARM7内核的中断屏蔽方法
ARM7内核的中断屏蔽方法ARM7内核的中断屏蔽方法是通过设置与中断相关的寄存器来实现的。
ARM7内核提供了多个中断屏蔽寄存器,可以分别对不同的中断进行屏蔽设置。
下面将对常见的中断屏蔽方法进行详细介绍,包括通过CPSR寄存器和INTCON寄存器进行中断屏蔽。
1.CPSR寄存器屏蔽中断ARM7内核的CPSR寄存器(Current Program Status Register)是一个32位寄存器,其中的第7位(I-bit)用于控制中断的屏蔽。
当I位为1时,中断被屏蔽,当I位为0时,中断不被屏蔽。
通过修改CPSR寄存器的I位,可以实现对中断的屏蔽和开启。
中断屏蔽可以通过以下方式进行设置:(1)通过修改CPSR寄存器的I位:在特权级别下,可以直接修改CPSR寄存器的I位,来控制中断的屏蔽。
(2)通过使用屏蔽和解屏函数:ARM提供了两个专门的汇编指令用于修改CPSR寄存器的I位,分别是CPSID和CPSIE。
CPSID指令用于屏蔽中断,CPSIE指令用于解除中断的屏蔽。
2.INTCON寄存器屏蔽中断ARM7内核还提供了INTCON寄存器(Interrupt Control Register)用于屏蔽和控制外部中断的响应。
INTCON寄存器是一个32位的寄存器,每个位对应一个外部中断的屏蔽位。
当一些屏蔽位为1时,对应的中断将被屏蔽,当屏蔽位为0时,对应的中断不被屏蔽。
通过修改INTCON寄存器的屏蔽位,可以实现对外部中断的屏蔽和开启。
中断屏蔽可以通过以下方式进行设置:(1)直接修改INTCON寄存器的屏蔽位:在特权级别下,可以通过直接写入INTCON寄存器来修改外部中断的屏蔽位。
(2)使用特殊函数来修改INTCON寄存器的屏蔽位:ARM提供了特殊的函数用于修改INTCON寄存器的屏蔽位。
需要注意的是,中断屏蔽方法只能屏蔽外部中断,对于内部中断(如软中断、异常中断)无法进行屏蔽。
同时,ARM7内核的中断屏蔽方法也存在优先级的问题,当多个中断同时发生时,只会响应优先级最高的中断请求。
ARM异常中断以及对ARM异常返回地址的分析
返回地址:SUBS PC,R14,#8 返回地址分析: 当进入异常时,R14_abt = address of the aborted instruction + 8
所以要返回到有问题的指令处重新执行,所以返回的地址为 R14-8 IRQ 中断异常:
产生原因: 当处理器的外部中断请求引脚有效,且 CPSR 寄存器的 I 控制位被清除 时,处理器产生外部中断 IRQ 异常。
是因为当前指令即引起软件异常中断的指令执行后所引起的,说明当前指令已近执行,当从
中断返回时,执行的指令应该是当前指令的下一条指令,即待执行指令的地址应该是 0x3004, 而 R14 中存放的即为 0x3004,所以返回时使用将 R14 的值直接赋给 PC 即可。
指令预期中止异常: 发生原因:若在指令预取阶段遇到无效指令时,系统存储器将该预取的指令标记为无
效指令,当处理器试图去执行这一条被标记为预取无效的指令时,将产生指令预取中止异常, 注意若处理器没有执行无效指令时将不会产生异常中断(在流水线中存在一条分支指令,导 致该非法指令没有执行,将不会产生该异常)。
处理器动作: R14_abt = address of the aborted instruction + 4 SPSR_abt = CPSR ….. …..
2、各异常分析
举个小例子,下面是一段 ARM 汇编代码: (后面的返回地址分析中将会用到此图)
ARM嵌入式体系结构与接口技术
23
精品课件
ARM芯片厂商
2、PCB设计仿真阶段
需要在EDA仿真设计平台下,设计系统原理图及
PCB,并对PCB板上的信号完整性、EMI等进行
仿真,根据仿真结果来对PCB进行合理的布局布
线调整,完成PCB的设计
PCB图
ML67Q4051, ML67Q4060, ML67Q4061, ML696201, ML69Q6203
Samsung (ARM7/ARM9/Cortex-M3 Family)
S3C2410A, S3C2440A, S3C44B0X, S3C4510B,S5PC210
Sharp (ARM7/ARM9/Cortex-M3 Family)
LPC2294, LPC2364, LPC2366,, LPC2880, LPC2888, LPC3180
OKI (ARM7/ARM9/Cortex-M3 Family)
ML674000, ML674001, ML674002, ML674003, ML675001, ML675002, ML675003, ML67Q4050,
到终端用户手中
云计算的核心思想,是将大
量用网络连接的计算资源统
一管理和调度,构成一个计
算资源池向用户按需服务。
精品课件
12
1.2 嵌入式系统的组成
应用 软 件
嵌 入 式操 作 系 统
硬件 设 备
嵌入式处理器
外围 设 备
图1-1 嵌入式系统结构简图
精品课件
13
1.2 嵌入式系统的组成
