




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Good is good, but better carries it.精益求精,善益求善。ARMCortexM0嵌入式微处理器中断控制系统研究平顶山工学院毕 业 设 计 论 文题 目:ARM Cortex-M0 嵌入式微处理器中断控制系统研究学 院: 电气与信息工程学院 专 业: 自动化 摘 要本文介绍了ARM Cortex-M0嵌入式微处理器中断控制系统的设计。Cortex-M0是ARM公司开发的一款提供超低功耗、低成本微处理器,采用独特的中断控制系统,能够有效加速中断响应过程。通过对M0处理器的中断控制系统研究,可以更深入的了解微处理器架构以及中断控制系统设计。本文首先简述了嵌入式系统的
2、结构、现状以及发展趋势,然后解释了中断和中断嵌套优先级的概念,重点介绍了ARM Cortex-M0的结构特点,总结了M0异常和中断的特点,并对M0的中断优先级、嵌套向量中断控制器(NVIC)和ARM Cortex微控制器软件接口标准(CMSIS)作说明,最后在ALTERA DE2-115上用按键边沿触发中断,通过观察LED的闪烁状态来验证编写的中断控制程序。关键词:ARM Cortex-M0,中断,NVIC3IABSTRACTThis article describes the ARM Cortex-M0 embedded microprocessor interrupt control sy
3、stem design. ARM Cortex-M0 is the development of a company to provide ultra-low-power, low-cost microprocessors, using a unique interrupt control system that can effectively accelerate the process interrupt response. By M0 processor's interrupt control system can be more in-depth understanding o
4、f microprocessor architecture and interrupt control system design.This paper outlines the structure of the embedded system, status quo and development trends, then explained the priority of interrupts and interrupt nesting concept, focusing on the ARM Cortex-M0 structural characteristics, summarized
5、 M0 exception and interrupt characteristics, and the interrupt priority for M0, nested Vectored Interrupt controller (NVIC) and the ARM Cortex microcontroller Software Interface Standard (CMSIS) for illustration, the last in ALTERA DE2-115 with the keypad on edge-triggered interrupts, by observing t
6、he status LED flashing to verify that implements interrupt control.Keywords: ARM Cortex-M0, interrupt, NVICII目 录摘 要2ABSTRACT3目 录III1 绪论11.1 研究背景11.2 研究内容11.3 研究成果11.4 论文结构22 嵌入式系统32.1 嵌入式系统简介32.2 嵌入式系统的组成与分类42.3 常见嵌入式处理器的体系结构52.4 嵌入式处理器的发展趋势63 中断83.1 中断的定义83.2 中断源93.3 中断分类93.4 中断应具有的功能103.5 中断嵌套与优先级
7、103.5.1 中断优先级103.5.2 中断嵌套113.6 中断控制方式的优点124 ARM Cortex-M0的中断134.1 ARM Cortex-M0简介134.2 ARM Cortex-M0总线架构134.3 异常处理模型144.3.1 异常状态144.3.2 异常类型144.3.3 异常处理154.3.4 异常向量表154.3.5 异常优先级164.3.6 异常处理的进入与返回174.3.7 Cortex-M0异常处理机制204.4 嵌套向量中断控制器224.4.1 异常模式和系统中断映射234.4.2 操作描述254.4.3 Cortex-M0中断的特点274.5 CMSIS软件
8、接口标准284.5.1 CMSIS标准的软件架构294.5.2 CMSIS规范305 实验335.1 控制要求335.2 实验准备335.2.1 Keil uVision4简介335.2.2 ALTERA DE2-115简介335.3 程序流程图355.4 程序代码及分析355.5 实验结果36结 论37参考文献38致 谢39附 录40IV1 绪论1.1 研究背景随着半导体行业进入深亚微米乃至纳米时代,在单一集成电路芯片上就可以实现一个复杂的电路系统,即SoC系统。随着人们对消费电子产品的多功能、智能化的要求越来越高,SoC芯片被大量使用,而微处理器是SoC系统的核心。纵观嵌入式微处理器的发展
9、历史,从高端微控制器领域到低端微控制器领域,人们对低成本、低功耗、高性能的追求似乎永无止境。ARM 公司推出了低成本、低功耗、高性能的Cortex-M系列产品,其中于2009年初推出了Cortex-M0 处理器,这是市场上现有的除Cortex-M0+ 外尺寸最小、能耗最低、最节能的ARM 处理器。该处理器能耗非常低、门数量少、代码占用空间小,能以8位器的价位获得32位处理器的性能,将逐步取代现有市场中的8051微控制器。1.2 研究内容ARM Cortex-M0处理器采用独特的中断控制系统,能够有效加速中断响应过程。通过对M0处理器的中断控制系统的研究,了解主流的嵌入式微处理器及其主流架构,掌
10、握基本的微处理器中断处理流程,了解M0中断控制系统,并针对M0微处理器编写实例程序,使用keil软件仿真器仿真验证M0的中断控制过程。本次设计需要有单片机原理和C语言基础,自行查阅Cortex-M0的有关资料,了解M0中断控制系统,在此理论基础上,用M0的中断控制系统去控制LED的闪烁状态,具体来说就是:当按下电源开关后,LED开始慢闪,当按下按键后,LED进入快闪状态,当松开后,LED恢复慢闪,但是当按键按下去和松开的时间间隔小于200ms时,NVIC禁止中断,LED保持常亮。编写相应的程序代码,用keil uvision4编译代码并在ALTERA DE2-115上进行中断控制实验。实验结果
11、应符合中断控制系统控制要求,体现出M0中断控制的特点。1.3 研究成果在ARM Cortex-M0中断控制系统的设计中,了解基本的微处理器中断处理流程,重点是掌握ARM Cortex-M0中断控制系统,对Cortex-M0处理器的抢占、末尾连锁、迟到等加速中断响应的技术作细致的了解,并对比所学过的51单片机的中断控制过程,充分的体会到M0能够有效加速中断响应过程的特点。1.4 论文结构第二章讲述了嵌入式系统的概念、结构及应用领域,嵌入式微处理器分类、主流的体系结构和未来发展趋势,并介绍了当前主流的嵌入式操作系统。第三章简要的阐述了计算机技术上中断的概念、类型和作用,同时也介绍了中断嵌套优先级的
12、概念。第四章介绍ARM Cortex-M0的中断,首先简单介绍了M0的结构特点,其次讲解了M0的异常处理模型,另起一节讲解了嵌套向量中断控制器 (NVIC),并在此总结了M0中断的特点,最后介绍了CMSIS软件接口标准。第五章为实验,按照控制要求进行硬、软件的设计,绘制程序流程图,编写程序代码,并记录下实验结果,并对其进行分析。382 嵌入式系统2.1 嵌入式系统简介嵌入式系统是将计算机的硬件或是软件嵌入其他机、电设备或应用系统中去,所构成了一种新的系统,即嵌入式系统。是以应用为中心,以计算机技术为基础,采用可裁剪软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统,用于
13、实现对其他设备的控制、监视或管理等功能。嵌入式系统具有系统内核小、专用性强、系统精简、高实时性的特征1。由于嵌入式系统具有体积小、性能好、功耗低、可靠性高以及面向应用的突出特点,因此嵌入式系统已被广泛应用于军事、国防、电子信息、家电、网络通信、工业控制等领域。嵌入式系统的应用前景是非常广阔的,IC 卡、手持电脑、智能手机、车载GPS、数字电视机顶盒,人们在生活中无时无处不接触到嵌入式产品,尤其是嵌入式无线网络产品的出现,使嵌入式产品和我们的生活紧密相连2。军事电子信息家电嵌入式应用工业设备智能玩具智能仪表通讯设备汽车电子移动设备网络设备电子商务网 络图 嵌入式系统的应用领域工业控制消费电子军事
14、国防网络其他 图2.1 嵌入式系统的应用领域嵌入式系统可以说无处不在,无所不在,有着广阔的发展前景,也充满了机遇和挑战3。 2.2 嵌入式系统的组成与分类嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统(可选),以及用户应用软件系统等四个部分组成4。嵌入式系统结构如图2.2所示。嵌入式应用软件系统嵌入式操作系统嵌入式处理器为核心的硬件平台应用系统的I/O图2.2 嵌入式系统结构嵌入式系统由嵌入式硬件与嵌入式软件组成。嵌入式硬件以芯片、模板、组件、控制器形式埋藏于设备内部。嵌入式软件是实时多任务操作系统和各种专用软件,一般固化在ROM或闪存中。嵌入式系统软硬兼施,融为一体,成为产品,
15、但在开发过程中需要一些开发工具进行辅助开发。如图2.3所示。功能层应用程序软件层文件系统图形用户接口任务管理实时操作系统(RTOS)中间 层BSP/HAL硬件抽象层/板极支持包硬件层D/A嵌入式微处理器通用接口A/DROMI/OSDRAM人机交换接口图2.3 嵌入式系统的整体架构嵌入式处理器毫无疑问是嵌入式系统的核心部分,其直接关系到整个嵌入式系统的性能。通常情况下嵌入式处理器被认为是对嵌入式系统中运算和控制核心器件总的称谓,但如果要仔细划分的话,大体上可以将其分为四大类,即嵌入式微处理器、嵌入式微控制器、嵌入式数字信号处理器、系统级芯片。 嵌入式微处理器:嵌入式微处理器(Embedded M
16、icroprocessor Unit,简称MPU)的基础是通用计算机中的CPU。在应用中将微处理器装配在专门设计的电路板上,只保留和嵌入式应用有关的母板功能,这样可以大幅度减小系统体积和功耗。为了满足嵌入式应用的特殊要求,嵌入式微处理器虽然在功能上和标准微处理器基本是一样的,但在工作温度、抗电磁干扰、可靠性等方面一般都做了各种增强。 嵌入式微控制器:嵌入式微控制器(Microcontroller Unit,简称MCU,也称单片机)一般以某一种微处理器内核为核心,芯片内部集成ROM、RAM、总线、总线逻辑、定时计数器、I/O、串行口等各种必要功能和外设。为适应不同的应用需求,产品的处理器内核都是
17、一样的,不同的是存储器和外设的配置及封装。和嵌入式微处理器相比,微控制器的最大特点是单片化,体积大大减小,从而使功耗和成本下降、可靠性提高。 嵌入式数字信号处理器:嵌入式数字信号处理器(Embedded Digital Signal Processor,简称DSP)对系统结构和指令进行了特殊设计,使其适合于执行DSP算法,编译效率较高,指令执行速度也较高。在数字滤波、FFT、谱分析等方面,DSP算法正在大量进入嵌入式领域,DSP应用正从在通用单片机中以普通指令实现DSP 功能,过渡到采用嵌入式DSP 处理器。 系统级芯片:系统级芯片(System On Chip,简称SOC,也称片上系统)是一
18、个有专用目标的集成电路,其中包含完整系统,并有嵌入式软件的全部内容。在SOC中通常将一个以上MPU和DSP,以及RAM、ROM、Cache、时钟电路、定时器、中断控制器、I/O端口、ADC、DAC等电路集成到一块芯片中,同时可以由外部对芯片进行编程。应用SOC可以使系统电路板变得很简洁,起到减小体积、降低功耗、提高可靠性的作用。2.3 常见嵌入式处理器的体系结构各种嵌入式处理器层出不穷,嵌入式处理器市场呈现出百花齐放的景象。目前常用的嵌入式处理器的主要结构归结起来有:8051体系结构、ARM体系结构、MIPS体系结构、PowerPC、DSP、x86 等2。 8051体系结构:8051 单片机最
19、早由Intel公司推出。它在一块超大规模集成电路芯片上同时集成了CPU、ROM、RAM以及TIMER、COUNTER 等部件,具有64KB的寻址能力。由于某些原因,8051在国内的使用非常普遍,但总的来说8051因其微处理器性能落后,仍然是一款低端产品。 ARM体系结构:ARM处理器遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的处理器应用约占据了32位RISC微处理器75%以上的市场。目前市面上常见的ARM处理器架构,可分为ARM7、ARM9、ARM11和Cortex系列。IPhone、NOKIA、HTC 等智能手机中的微处理器,就是由高通和德州仪器
20、授权生产的ARM处理器。 MIPS体系结构:MIPS是美国历史悠久的RISC处理器体系,分为32-bit以及64-bit两大家族,以技术授权作为主要营利模式。MIPS除了在手机中应用的比例极小外,其在一般数字消费、网络语音、个人娱乐、通讯、与商务应用市场有着相当不错的成绩,不过近年来因为其它IP授权公司的兴起,其占有比率稍有衰退。MIPS应用最为广泛的应属家庭视听电器(包含机顶盒)、网通产品以及汽车电子方面。 PowerPC体系结构:PowerPC是早期Motorola和IBM联合为Apple的MAC机开发的CPU芯片,PowerPC的体系结构也是RISC,有200多条定长32位的指令,通常只
21、执行一个单一的操作(比如将内存加载到寄存器,或者将寄存器数据存储到内存),同时支持字节(8位)、半字(16位)、字(32位)和双字(64位)数据类型。 DSP体系结构:DSP是一种专用微处理器,主要对数字信号进行实时处理,以得到相应的处理结果。DSP 在存储容量和运算速度上都很高,成为语音处理、图像硬件处理技术的基础,同时在高端的工业控制方面也得到广泛应用,如空间矢量PWM控制系统,电机的DSP控制系统等。 x86体系结构:x86处理器应用在嵌入式系统的历史相当悠久,但其普遍都有功耗过高且芯片数量庞大的缺点,因而不适合应用在要求精简省电的嵌入式架构中。可是在有些对于能耗控制要求不高的领域,如工
22、控电脑产业中,可以看到许多x86处理器仍然在被使用。同时Inter最新的嵌入式处理器Atom系列也是兼容x86结构的5。2.4 嵌入式处理器的发展趋势 嵌入式处理器性能的提高。嵌入式处理器给人的第一感觉就是稳定、功耗低、性能差。实际上嵌入式处理器确实需要有很好的稳定性,较低的功耗,但这并不表明嵌入式处理器不需要高性能。事实上对于嵌入式处理器性能的追求从来就没有停止过,尤其在消费类电子产品中,嵌入式处理器的性能往往对产品具有决定性的影响。未来对于嵌入式处理器性能的追求肯定也不会停止,更好的处理器设计和更先进的制造工艺都将被运用进来,使嵌入式处理器的性能产生巨大的提升。 更高的集成度和更丰富的功能
23、。嵌入式处理器的集成度将不断提高,越来越多的功能将被集成到处理器当中。如内存控制器已经被普遍集成到处理器当中,未来USB 控制器、网络控制器,甚至是图形显示功能都可能被集成到处理器当中。 更低的功耗和更小的体积。嵌入式系统因其工作环境的限制,往往决定了其体积必须小巧,这就要求其核心部分嵌入式处理器也必须在性能保证的情况下尽可能的小。同时,嵌入式系统的能耗也必须很低,有的系统需要在一节电池供电的情况下使用几个月,这就对嵌入式处理器的功耗提出了近乎苛刻的要求,而这些也正是推动嵌入式处理器发展的动力。 嵌入式处理器中将会实现CPU和GPU的融合。CPU和GPU的融合并不是把一个CPU核心和一个GPU
24、核心简单的集成到一块芯片当中。其还需要一套适合的调度算法,融合CPU强大的处理能力和GPU强大的运算能力,使之可以协同工作2。目前,AMD已经在通用处理器上实现了上述功能,而其嵌入式产品APU- C系列也开始出现在市场上,并被运用在平板电脑等领域,带来了性能的巨大提升,由此可见嵌入式处理器中CPU和GPU的融合是未来发展的必然趋势15。3 中断3.1 中断的定义中断是指CPU正常执行程序被某种临时发生的事件所打断,当前程序暂时中止,处理器转去处理所发生的事件,处理完毕在返回执行暂时中止的程序。就是说,在当前程序中插进一段别的程序中断服务程序或中断处理程序。CPU执行现行的程序被中断时的后继指令
25、(下一条指令)的地址称为断点地址(简称断点)。中断时,CPU执行程序过程中所处的状态成为现场。中断流程如图3.1。正是有了中断,外部设备才能主动的改变CPU正常执行程序的顺序。何时中断,CPU预先并不知道,因此,中断具有随机性。由外部硬件引起的终端成为硬中断。有主机内部产生,或由程序预先安排的中断称为软中断。通常,在接收到来自外围硬件(相对于中央处理器和内存)的异步信号,或来自软件的同步信号之后,处理器将会进行相应的硬件/软件处理。发出这样的信号称为进行中断请求(interrupt request,即IRQ)。硬件中断导致处理器通过一个上下文切换(context switch)来保存执行状态(
26、以程序计数器和程序状态字等寄存器信息为主);软件中断则通常作为CPU指令集中的一个指令,以可编程的方式直接指示这种上下文切换,并将处理导向一段中断处理代码。中断在计算机多任务处理,尤其是即时系统中尤为有用10。CPU收到中断信号中断服务程序执行结束,返回继续执行原来的程序正在运行的程序中断返回中断CPU中断正在执行的程序,转到执行中断服务程序图3.1 中断处理过程 3.2 中断源凡是能够引起中断原因或提出中断请求的设备和异常故障均称被称为“中断源”。有以下几种: 外部设备请求中断。一般的外部设备(如键盘、打印机和A / D转换器等)在完成自身的操作后,向CPU发出中断请求,要求CPU为他服务。
27、由计算机硬件异常或故障引起的中断,也称为内部异常中断。 故障强迫中断。计算机在一些关键部位都设有故障自动检测装置。如运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他报警信号等,这些装置的报警信号都能使CPU中断,进行相应的中断处理。 实时时钟请求中断。在控制中遇到定时检测和控制,为此常采用一个外部时钟电路(可编程)控制其时间间隔。需要定时时,CPU发出命令使时钟电路开始工作,一旦到达规定时间,时钟电路发出中断请求,由CPU转去完成检测和控制工作。 数据通道中断。数据通道中断也称直接存储器存取(DMA)操作中断,如磁盘、磁带机或CRT等直接与存储器交换数据所要求的中断。 程序自愿中断。C
28、PU执行了特殊指令(自陷指令)或由硬件电路引起的中断是程序自愿中断,是指当用户调试程序时,程序自愿中断检查中间结果或寻找错误所在而采用的检查手段,如断点中断和单步中断等6。3.3 中断分类按中断处理方式,中断可分为以下几类: 简单中断,即采用周期窃用的方法来执行中断服务,有时也称数据通道或DMA。 程序中断,它不是窃用中央处理机的周期来进行中断处理,而是中止现行程序的执行,转去执行中断服务程序。按中断产生的方式,中断可分为: 自愿中断,即通过自陷指令引起的中断,或称软件中断。 强迫中断,这是一种随机发生的实时中断。按中断产生的位置,中断可分为: 外部中断,或称外部硬件实时中断,它由发至CPU某
29、一引脚上的信号引起。 内部中断,或称软件指令中断,是为了处理程序运行过程中发生的一些意外情况或调试程序而提供的中断。3.4 中断应具有的功能中断应具有以下功能: 实现中断及返回。当某一中断源发出申请时,CPU能决定是否响应这个中断请求(当CPU在执行更紧急、更重要的工作时,可以暂不响应中断),若允许响应这个中断请求,CPU必须在现行的指令执行完成后,把断点处的IP和CS值(即下一条应执行的指令的地址)、各个寄存器的内容和标志位的状态推入堆栈保留下来称为保护断点和现场。然后转到需要处理的中断源的服务(Interrupt Service Routine,即ISR)的入口,同时清除中断请求触发期。当
30、中断处理完后,再恢复被保留下来的各个寄存器和标志位的状态(称为恢复现场),恢复IP和CS值(称为恢复断点),使CPU返回断点,继续执行主程序。 实现优先权排队。在系统中通常有多个中断源,会出现两个或更多个中断源同时提出中断请求的情况,这样就必须要设计者事先根据轻重缓急,给每个中断源确定一个终端级别优先权。当多个中断源同时发出中断申请时,CPU能找到优先权级别最高的中断源,响应它的中断请求;在优先权级别最高的中断源处理完了以后,在相应级别较低的中断源。 高级中断源能中断低级的中断处理。当CPU响应某一中断源的请求,在进行中断处理时,若有优先级别更高的中断源发出中断申请,则CPU要能中断正在进行的
31、中断服务程序;保留这个程序的断点和现场(类似于子程序嵌套),响应高级中断,在高级中断处理完以后,再继续进行被中断的中断服务程序。而当发出新的中断申请的中断源的优先级别与正在处理的中断源同级或更低时,则CPU就先不响应这个中断申请,直至正在处理的中断服务程序执行完以后才去处理新的中断申请。3.5 中断嵌套与优先级3.5.1 中断优先级为了管理众多的中断请求,需要按每个(类)中断处理的急迫程度,对中断进行分级管理,称其为中断优先级。在有多个中断请求时,总是响应与处理优先级高的设备的中断请求。中断的优先级有两个:查询优先级和执行优先级。 中断的查询优先级是不可以更改和设置的。这是一个中断优先权排队的
32、问题。是指多个中断源同时产生中断信号时,中断仲裁器选择对哪个中断源优先处理的顺序。而这与是否发生中断服务程序的嵌套毫不相干。当CPU查询各个中断标志位的时候,会依照上述5个查询优先级顺序依次查询,当数个中断同时请求的时候,会优先查询到高优查询先级的中断标志位,但并不代表高查询优先级的中断可以打断已经并且正在执行的低查询优先级的中断服务。IP寄存器不做设置,上电复位后为00H的优先级:外部中断0>定时/计数器0 >外部中断1 >定时/计数器1 >串行中断 中断的执行优先级就是你对IP寄存器的设置。在2个优先级的情况下,某位为1,则相应的中断源为高优先级;为0,则为低优先级
33、。关于中断的优先级有三条原则:1)CPU同时接收到几个中断时,首先响应优先级最高的中断请求;2)正在进行的中断过程不能被新的同级或低行优优先级的中断请求所中断;3)正在进行的低行优优先级中断服务,能被高行优优先级中断请求中断。若同一执行优先级中的中断申请不止一个时,则有一个中断优先权排队问题。同一执行优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,优先权自高到低的顺序即:外部中断0>定时/计数0>外部中断1>定时/计数1>串行接口3.5.2 中断嵌套当CPU正在处理优先级较低的一个中断,又来了优先级更高的一个中断请求,则CPU先停止低优先级的中断处理过程,去
34、响应优先级更高的中断请求,在优先级更高的中断处理完成之后,再继续处理低优先级的中断,这种情况称为中断嵌套。中断程序嵌套模型如图3.2所示。中断3服务程序中断2服务程序中断1服务程序中断2服务程序中断2服务程序主程序中断1请求中断2请求中断3请求1m=1mn1+1n+1断点断点断点IRET(中断返回)IRET(中断返回)IRET(中断返回)图3.2 中断程序嵌套示意图当一个中断正在执行的时候,如果事先设置了中断优先级寄存器IP,那么当一个更高优先级的中断到来的时候会发生中断嵌套,如果没有设置则不会发生任何嵌套;如果有同一个优先级的中断触发,它并不是在“不断的申请”,而是将它相应的中断标志位置即I
35、E寄存器的某位置位,当CPU执行完当前中断之后,按照查询优先级重新去查询各个中断标志位,进入相应中断6 。3.6 中断控制方式的优点中断是用以提高计算机工作效率、增强计算机功能的一项重要技术。如果计算机系统没有中断,则处理器与外部设备通信时,它必须在向该设备发出指令后进行忙等待(Busy waiting),反复轮询该设备是否完成了动作并返回结果。这就造成了大量处理器周期被浪费。引入中断以后,当处理器发出设备请求后就可以立即返回以处理其他任务,而当设备完成动作后,发送中断信号给处理器,后者就可以再回过头获取处理结果。这样,在设备进行处理的周期内,处理器可以执行其他一些有意义的工作,而只付出一些很
36、小的、切换上下文所引发的时间代价。具体有以下好处: 同步操作。有了中断就可以使CPU和外设同时工作。CPU在启动外设工作后,就继续执行主程序,同时外设也在工作,当外设把数据准备好之后发出中断请求,请求CPU中断它的程序,执行输入或输出(中断处理),处理完成以后,CPU恢复执行主程序,外设也继续工作。并且有了中断功能,CPU可以命令多个外设同时工作。这样大大提高了CPU的利用率,也提高了输入输出的速度。 实现实时处理。当计算机用于实时控制时,中断是一个十分重要的功能。现场的各个参数、信息,可在任何时间发出中断申请,要求CPU处理;CPU则可以马上响应(若中断是开放的话)并加以处理。这样的及时处理
37、在查询的工作方式下是做不到的。 故障处理。计算机在运行的过程中,往往会出现事先预料不到的情况,或者出现一些故障如电源突跳、存储出错、运算溢出等。计算就可以利用终端系统自行处理,而不必停机或报告工作人员。中断系统明显的提高了计算机系统中信息处理的并行度和处理器的效率,改善了计算机系统的性能。它解决了CPU与各种慢速外部设备之间的速度匹配问题。中断系统在故障检测、实时处理与控制、分时系统、多级系统与通信、并行处理、人机交互中得到广泛使用和不断发展。4 ARM Cortex-M0的中断4.1 ARM Cortex-M0简介ARM公司于2009年推出了Cortex-M0微控制器,这是市场上现有的尺寸最
38、小、能耗最低、最节能的ARM微控制器。该微控制器能耗非常低、门数量少、代码占用空间小,能保留8位微控制器的价位获得32位微控制器的性能。超低门数还使其能够用于模拟信号设备和混合信号设备及MCU应用中,可明显降低系统成本,同时保留功能强大的Cortex-M3微控制器的工具和二进制兼容能力。该微控制器的推出把ARM的MCU路线图拓展到了超低能耗MCU和SoC应用中,如医疗器械、电子测量、照明、智能控制、游戏设置、紧凑型电源、电源和马达控制、精密模拟系统和IEEE 802.15.4(ZigBee)及Z-Wave系统等13。4.2 ARM Cortex-M0总线架构随着深亚微米工艺技术日益成熟,集成电
39、路芯片的规模越来越大。数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。在基于IP复用的SoC的设计中,片上总线设计是最关键的问题。为此,业界出现了很多片上总线标准。其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。AMBA规范主要包括了系统总线 (Advanced High performance Bus,简称AHB)和外围总线(Advanced Peripheral Bus,简称APB) 7。Cortex-M0处理器Cortex-M0处理器核心内嵌向量中断控制器(NVIC)可
40、选调试部件可选调试部件可选唤醒中断控制器(WIC)断点及观测点单元断点及观测点单元中断可选调试访问接口(DAP)调试接口总线矩阵调试接口总线矩阵AHB总线接口SWD或JTAG调试接口图4.1 Cortex-M0处理器架构Cortex-M0属于ARMv6-M架构,包括1颗专为嵌入式应用而设计的ARM 核、紧耦合的可嵌套中断处理器NVIC、可选的唤醒中断控制器WIC, 对外提供了基于AMBA结构的AHB- lite总线和基于CoreSight技术的SWD或JTAG调试接口。Cortex-M0处理器的硬件实现包含多个可配置选项:中断数量、WIC、睡眠模式和节能措施、存储系统大小端模式、系统滴答时钟等
41、,半导体厂商可以根据应用需要选择合理的配置14。Cortex-M0处理器架构如图4.1所示。4.3 异常处理模型4.3.1 异常状态 未激活(Inactive) 异常没有被激活也没有被挂起。 挂起(Pending) 异常正等待被处理器服务。来自外设或软件的中断请求,能让相应中断变为挂起状态。 激活(Active) 异常正在被处理器服务,并且服务尚未结束。注意:一个异常处理能中断另一个异常处理,在这种情况下,两个异常都处于激活态。 激活且挂起(Active and pending) 异常正在被处理器服务时,又出现了来自同一异常源的异常。4.3.2 异常类型 Reset 复位由加电或热复位引起,异
42、常模型把复位当作一个特殊形式的异常。当复位信号有效时,无论指令执行到什么位置,处理器都停止当前的指令。复位信号失效之后,从复位异常规定的入口地址处开始执行,按Thread模式工作。 NMI 不可屏蔽中断可由外设引起或软件触发,NMI是除Reset之外,最高优先级的异常,NMI被永久允许,拥有固定的优先级-2。NMI不能被:a.任何别的异常屏蔽或阻止;b.除复位之外的任何异常抢占。 HardFault 硬故障是指在正常情况或异常处理时出现错误(error)所引起的一种异常,硬故障有固定的优先级-1,表明硬故障比任何一个可以配置优先级的异常的优先级都高。 SVCall 系统服务调用,利用SVC指令
43、调用系统服务。 PendSV 可挂起的系统服务请求,是一种中断驱动的请求,用于面向系统级服务。在操作系统环境下,当没有别的异常激活时,使用PendSV进行上下文切换。 SysTick 如果处理器实现系统滴答定时器,那么SysTick是由系统滴答定时器计数到0时所产生的一种异常。软件也能产生SysTick异常,在操作系统环境下,处理器能使用这一异常作为系统滴答计时。 中断(IRQ) 中断是由外设或软件请求而产生的异常,所有的中断对指令的执行是异步进行的。在计算机系统中,外设通过中断与处理器通信16。各种异常的优先级如下表4.1所示。表4.1 不同类型异常的优先级异常编号IRQ编号异常类型优先级向
44、量地址激活1-Reset-3,最高0x00000004异步2-14NMI-20x00000008异步3-13HardFault-10x0000000c同步4-10-保留-11-5SVCall可配置0x0000002c同步12-13-保留-14-2PendSV可配置0x00000038异步15-1SysTick-0x0000003c异步15-保留可配置-16及以上0及以上IRQ可配置0x000000040及以上异步为简化软件层,CMSIS仅使用IRQ号,因此采用负数作为异常的编号,IPSR返回异常编号。如果处理器没有系统滴答定时器,则异常15保留。IRQ中断号是在处理器实现时定义的,范围是1-3
45、2。未实现的IRQ异常编号被保留,例如,如果某处理器仅实现一个IRQ,则异常号17及以上的编号均被保留。增长步长为4。对于异步异常,除Reset外,处理器在异常被触发到异常开始被处理的这段时间内,仍能继续执行指令。特权软件可以禁止以上具有可配置优先级的异常。4.3.3 异常处理 ISRs 中断服务子程序处理IRQ中断异常。 Faulthandler 故障处理程序处理硬故障。 系统处理程序 (Systemhandlers) 处理系统异常NMI,PendSV,SVCall,SysTick和HardFault。4.3.4 异常向量表异常向量表包含堆栈指针的复位值,以及起始地址。堆栈指针的复位值和起始
46、地址一起被称为异常向量,用于所有异常处理。下图列出了异常向量表中的异常向量的次序。每一个向量的最低位必须为1,表明异常处理是用Thumb代码实现的。Cortex-M0异常向量表如下表4.2所示。表4.2 Cortex-M0异常向量表16+nn0x440x40+4nIRQn171IRQ11600x40IRQ015-10x3CSysTick,if implemented14-20x100x2C0x38PendSV13Reserved1211-5SVCall10Reserved9876543-130x0CHardFault2-140x040x08NMI1Reset-0x00Initial SP va
47、lue4.3.5 异常优先级所有的异常都有一个优先级。优先级数值越小,优先级越高。除Reset、HardFault和NMI之外,其余所有异常都能配置其优先级。如果软件没有配置优先级,那么所有可配置优先级的异常的优先级为0。可配置优先级的数值范围是0-192,步长为64。Reset、HardFault和NMI是具有负数值的固定优先级异常,比其它异常具有更高的优先级。给IRQ0分配一个较大的优先级数值,而给IRQ1分配一个较小的优先级数值,就意味着IRQ1比IRQ0的优先级高,如果IRQ1和IRQ0都被触发,则IRQ1比IRQ0先执行。如果多个挂起的异常具有同等的优先级,那么具有较小异常号的异常优
48、先执行。例如,如果IRQ0和IRQ1具有相同的优先级,且都挂起,则IRQ0比IRQ1优先执行。当处理器在执行一个异常处理时,如果有更高优先级的异常发生,则该异常可以被抢占。如果发生的异常与正在执行的异常具有相同的优先级,则不管其异常号为多少,正在执行的异常都不会被抢占,而新发生的异常的状态变为挂起。4.3.6 异常处理的进入与返回 抢占(Preemption)。当处理器在执行一个异常处理时,另一个异常处理可以抢占这个正在被执行的异常处理,只要其优先级比正在被处理的异常优先级高。一个异常处理抢占另一个异常处理,被称为异常嵌套。 返回(Return)。当没有以下情况时,异常处理结束之后就异常返回:
49、1)没有挂起的异常需要服务。2)所完成的异常处理不是一个迟到异常。处理器从堆栈弹出数据,现场恢复到中断发生之前的状态。 尾链(Tail-chaining)。该机制加速了异常服务。当一个异常处理刚好完成时,若此时有一个挂起的异常满足进入执行的条件,则从堆栈弹出数据的操作就跳过,直接转到这个新的异常处理。 迟到(Late-arriving)。该机制加速抢占。当一个异常处理正在保存状态时,如果出现了一个更高优先级的异常,则处理器切换去执行这个更高优先级的异常,为新异常初始化预取向量。迟到异常并不影响向量的保存,因为两个异常需要保存的状态是一致的。在迟到异常返回时,正常的尾链规则依然有效。 异常进入。
50、有一个具有足够高优先级的挂起异常,以及以下条件之一,则可以进入异常:1)处理器处于Thread模式。2)新的异常比正在处理的异常具有更高的优先级。这种情况下,新异常抢占正在执行的异常。当一个异常抢占另一个异常时,将出现异常嵌套。足够高优先级的含义是,该异常比屏蔽寄存器的任一有限集的优先级都高。而比有限集的优先级低的异常就挂起,不执行。当处理器处理一个异常时,除非该异常是一个尾链或迟到的异常,处理器把信息压入当前堆栈,这一操作称为入栈,而这个8字的数据结构被称为一个堆栈帧,堆栈帧包含如下图4.2所示。SP point here before interruptDecreasingSP+0x00S
51、P+0x04SP+0x08SP+0x0CSP+0x10SP+0x14SP+0x18SP+0x1C<previous>xPSRAddressPCLRR12R3R2R1SP point here after interuptR0图 4.2 堆栈帧入栈后,堆栈指针指向帧的最低地址,堆栈帧是双字地址对齐的。地址,该地址值保存在堆栈帧信息的PC中,因此被中断程序能恢复现场。处理器从向量表中读取异常处理程序的起始地址,当保护现场的入栈操作完成后,处理器开始执行异常处理程序。与此同时,处理器会将一个EXC_RETURN值写到LR寄存器,这能指明与堆栈信息帧相应的堆栈指针,以及进入异常之前处理器所
52、处的操作模式。如果在进入异常时没有发生更高优先级的异常,则处理器开始执行该异常处理,并自动把该异常的状态由挂起修改为激活。如果在进入异常时发生了另一个更高优先级的异常,则处理器将执行高优先级的异常处理,先前的异常的挂起状态保持不变,这属于迟到异常的情况。 异常返回。当处理器处于Handler模式,且执行以下之一指令将PC的值置为EXC_RETURN的值,则发生异常返回:1)执行POP指令,加载PC寄存器。2)执行BX指令(任何寄存器均可)。在异常进入时,处理器把EXC_RETURN的值保存到LR寄存器。处理器根据此数值来决定异常处理完成时的动作。EXC_RETURN值的31:4位是0xFFFF
53、FFF,当处理器加载的值与之匹配时,处理器将检测到这不是一个正常的分支操作,而是异常结束。因此,处理器将开始异常返回操作。EXC_RETURN值的3:0位指出所需的返回堆栈以及处理器模式,如表4.3所示。表4.3 异常返回行为EXC_RETURN描 述0xFFFFFFF1返回Handler模式。异常返回从主站获取状态。返回之后使用MSP。0xFFFFFFF1返回Thread模式。异常返回从主站获取状态。返回之后使用MSP。0xFFFFFFF1返回Thread模式。异常返回从主站获取状态。返回之后使用MSP。其他值保留 故障处理。故障是异常的一个子集。在NMI或HardFault异常处理时发生的
54、故障将会引起HardFault异常或导致锁定(Lockup)。故障包含:1) 执行一条SVC指令,该指令的优先级高于或等于SVCall。2) 缺少调试器连接时,执行BKPT指令。3) 在加载或存储数据时,系统产生总线错误。4) 执行XN存储区的指令。执行来自系统已产生总线故障的地址位置的指令。5) 取向量时系统产生总线错误。6) 执行一条未定义的指令。7) T位已清为0,处理器不在Thumb状态时执行指令。8) 试图读取或保存数据到未对齐的地址。注意,只有Reset和NMI能抢占具有固定优先级的HardFault异常。而HardFault异常则能抢占除Reset、NMI或另一个HardFault异常之外的所有异常6。 锁定。以下这些情况处理器会进入锁定状态:执行NMI或HardFault异常处理时发生故障;或在使用MSP异常返回时,还没有从堆栈恢复PSR寄存器的值系统就产生总线错误。当处理器处于锁定状态时,不能执行任何指令。处理器将保持锁定状态直到以下情况之一发生:1) 处理器
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年八年级历史下册 第三单元 建设中国特色社会主义 第10课《科学技术的发展》教学实录 华东师大版
- 唐山市滦县二中高一期中考试历史试卷
- 学校卫生保健工作总结
- 热力公司工作总结
- 医院检验科个人工作总结
- 2025上海市商业店铺租赁合同(合同版本)
- 二零二四年第一季度种鸽交易电子合同模板本回滚预案
- 2025健身中心结构性钢网架建设施工合同
- 2025个人消费类抵押贷款合同
- 办公写字楼租赁合同范本
- 决策与协调机制制度
- 心理咨询保密协议(2024版)
- 土地整治项目工程复核工作流程
- 劳动合同到期不续签证明
- 水文资料在线整编规范
- DZ∕T 0222-2006 地质灾害防治工程监理规范(正式版)
- 2024届高考语言运用之比较赏析句子的表达效果+
- 施工现场动火作业安全(旁站记录)
- 工程变更通知单ECN模板-20220213
- 2024武汉六校联考高一(下)期中数学试卷及解析
- 课本剧哈姆雷特剧本
评论
0/150
提交评论