1、河南城建学院本科毕业设计(论文) 摘要毕 业 设 计 论 文题 目:ARM Cortex-M0 嵌入式微处理器中断控制系统研究学 院: 电气与信息工程学院 专 业: 自动化 摘 要本文介绍了ARM Cortex-M0嵌入式微处理器中断控制系统的设计。Cortex-M0是ARM公司开发的一款提供超低功耗、低成本微处理器,采用独特的中断控制系统,能够有效加速中断响应过程。通过对M0处理器的中断控制系统研究,可以更深入的了解微处理器架构以及中断控制系统设计。本文首先简述了嵌入式系统的结构、现状以及发展趋势,然后解释了中断和中断嵌套优先级的概念,重点介绍了ARM Cortex-M0的结构特点,总结了M
2、0异常和中断的特点,并对M0的中断优先级、嵌套向量中断控制器(NVIC)和ARM Cortex微控制器软件接口标准(CMSIS)作说明,最后在ALTERA DE2-115上用按键边沿触发中断,通过观察LED的闪烁状态来验证编写的中断控制程序。关键词:ARM Cortex-M0,中断,NVICIABSTRACTThis article describes the ARM Cortex-M0 embedded microprocessor interrupt control system design. ARM Cortex-M0 is the development of a company t
3、o provide ultra-low-power, low-cost microprocessors, using a unique interrupt control system that can effectively accelerate the process interrupt response. By M0 processors interrupt control system can be more in-depth understanding of microprocessor architecture and interrupt control system design
4、.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 M0 exception and interrupt characteristics, and the interrupt pr
5、iority 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 the status LED flashing to verify that implements interrupt contro
6、l.Keywords: ARM Cortex-M0, interrupt, NVICII目 录摘 要IABSTRACTII1 绪论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 中断嵌套与优先级103.5.1 中断优先级103.5.2 中断嵌套113.6 中断控制方式的优点124 ARM Cortex-M0的中断134.1 ARM
7、Cortex-M0简介134.2 ARM Cortex-M0总线架构134.3 异常处理模型144.3.1 异常状态144.3.2 异常类型144.3.3 异常处理154.3.4 异常向量表164.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软件接口标准284.5.1 CMSIS标准的软件架构294.5.2 CMSIS规范305 实验335.1 控制要求335.2 实验准备335.2
8、.1 Keil uVision4简介335.2.2 ALTERA DE2-115简介335.3 程序流程图355.4 程序代码及分析355.5 实验结果36结 论37参考文献38致 谢39附 录40IV河南城建学院本科毕业设计(论文) 绪论1 绪论1.1 研究背景随着半导体行业进入深亚微米乃至纳米时代,在单一集成电路芯片上就可以实现一个复杂的电路系统,即SoC系统。随着人们对消费电子产品的多功能、智能化的要求越来越高,SoC芯片被大量使用,而微处理器是SoC系统的核心。纵观嵌入式微处理器的发展历史,从高端微控制器领域到低端微控制器领域,人们对低成本、低功耗、高性能的追求似乎永无止境。ARM 公
9、司推出了低成本、低功耗、高性能的Cortex-M系列产品,其中于2009年初推出了Cortex-M0 处理器,这是市场上现有的除Cortex-M0+ 外尺寸最小、能耗最低、最节能的ARM 处理器。该处理器能耗非常低、门数量少、代码占用空间小,能以8位器的价位获得32位处理器的性能,将逐步取代现有市场中的8051微控制器。1.2 研究内容ARM Cortex-M0处理器采用独特的中断控制系统,能够有效加速中断响应过程。通过对M0处理器的中断控制系统的研究,了解主流的嵌入式微处理器及其主流架构,掌握基本的微处理器中断处理流程,了解M0中断控制系统,并针对M0微处理器编写实例程序,使用keil软件仿
10、真器仿真验证M0的中断控制过程。本次设计需要有单片机原理和C语言基础,自行查阅Cortex-M0的有关资料,了解M0中断控制系统,在此理论基础上,用M0的中断控制系统去控制LED的闪烁状态,具体来说就是:当按下电源开关后,LED开始慢闪,当按下按键后,LED进入快闪状态,当松开后,LED恢复慢闪,但是当按键按下去和松开的时间间隔小于200ms时,NVIC禁止中断,LED保持常亮。编写相应的程序代码,用keil uvision4编译代码并在ALTERA DE2-115上进行中断控制实验。实验结果应符合中断控制系统控制要求,体现出M0中断控制的特点。1.3 研究成果在ARM Cortex-M0中断
11、控制系统的设计中,了解基本的微处理器中断处理流程,重点是掌握ARM Cortex-M0中断控制系统,对Cortex-M0处理器的抢占、末尾连锁、迟到等加速中断响应的技术作细致的了解,并对比所学过的51单片机的中断控制过程,充分的体会到M0能够有效加速中断响应过程的特点。1.4 论文结构第二章讲述了嵌入式系统的概念、结构及应用领域,嵌入式微处理器分类、主流的体系结构和未来发展趋势,并介绍了当前主流的嵌入式操作系统。第三章简要的阐述了计算机技术上中断的概念、类型和作用,同时也介绍了中断嵌套优先级的概念。第四章介绍ARM Cortex-M0的中断,首先简单介绍了M0的结构特点,其次讲解了M0的异常处
12、理模型,另起一节讲解了嵌套向量中断控制器 (NVIC),并在此总结了M0中断的特点,最后介绍了CMSIS软件接口标准。第五章为实验,按照控制要求进行硬、软件的设计,绘制程序流程图,编写程序代码,并记录下实验结果,并对其进行分析。43河南城建学院本科毕业设计(论文) 嵌入式系统2 嵌入式系统2.1 嵌入式系统简介嵌入式系统是将计算机的硬件或是软件嵌入其他机、电设备或应用系统中去,所构成了一种新的系统,即嵌入式系统。是以应用为中心,以计算机技术为基础,采用可裁剪软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统,用于实现对其他设备的控制、监视或管理等功能。嵌入式系统具有系统
13、内核小、专用性强、系统精简、高实时性的特征1。由于嵌入式系统具有体积小、性能好、功耗低、可靠性高以及面向应用的突出特点,因此嵌入式系统已被广泛应用于军事、国防、电子信息、家电、网络通信、工业控制等领域。嵌入式系统的应用前景是非常广阔的,IC 卡、手持电脑、智能手机、车载GPS、数字电视机顶盒,人们在生活中无时无处不接触到嵌入式产品,尤其是嵌入式无线网络产品的出现,使嵌入式产品和我们的生活紧密相连2。军事电子信息家电嵌入式应用工业设备智能玩具智能仪表通讯设备汽车电子移动设备网络设备电子商务网 络图 嵌入式系统的应用领域工业控制消费电子军事国防网络其他 图2.1 嵌入式系统的应用领域嵌入式系统可以
14、说无处不在,无所不在,有着广阔的发展前景,也充满了机遇和挑战3。 2.2 嵌入式系统的组成与分类嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统(可选),以及用户应用软件系统等四个部分组成4。嵌入式系统结构如图2.2所示。嵌入式应用软件系统嵌入式操作系统嵌入式处理器为核心的硬件平台应用系统的I/O图2.2 嵌入式系统结构嵌入式系统由嵌入式硬件与嵌入式软件组成。嵌入式硬件以芯片、模板、组件、控制器形式埋藏于设备内部。嵌入式软件是实时多任务操作系统和各种专用软件,一般固化在ROM或闪存中。嵌入式系统软硬兼施,融为一体,成为产品,但在开发过程中需要一些开发工具进行辅助开发。如图2.3所示
15、。功能层应用程序软件层文件系统图形用户接口任务管理实时操作系统(RTOS)中间 层BSP/HAL硬件抽象层/板极支持包硬件层D/A嵌入式微处理器通用接口A/DROMI/OSDRAM人机交换接口图2.3 嵌入式系统的整体架构嵌入式处理器毫无疑问是嵌入式系统的核心部分,其直接关系到整个嵌入式系统的性能。通常情况下嵌入式处理器被认为是对嵌入式系统中运算和控制核心器件总的称谓,但如果要仔细划分的话,大体上可以将其分为四大类,即嵌入式微处理器、嵌入式微控制器、嵌入式数字信号处理器、系统级芯片。 嵌入式微处理器:嵌入式微处理器(Embedded Microprocessor Unit,简称MPU)的基础是
16、通用计算机中的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 单片机最早由Intel公司推出。它在一块超大规模集成电路芯片上同时
19、集成了CPU、ROM、RAM以及TIMER、COUNTER 等部件,具有64KB的寻址能力。由于某些原因,8051在国内的使用非常普遍,但总的来说8051因其微处理器性能落后,仍然是一款低端产品。 ARM体系结构:ARM处理器遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的处理器应用约占据了32位RISC微处理器75%以上的市场。目前市面上常见的ARM处理器架构,可分为ARM7、ARM9、ARM11和Cortex系列。IPhone、NOKIA、HTC 等智能手机中的微处理器,就是由高通和德州仪器授权生产的ARM处理器。 MIPS体系结构:MIPS是美国
20、历史悠久的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处理器应用在嵌入式系统的历史相当悠久,但其普遍都有功耗过高且芯片数量庞大的缺点,因而不适合应用在要求精简省电的嵌入式架构中。可是在有些对于能耗控制要求不高的领域,如工控电脑产业中,可以看到许多x86处理器仍然在被使用。同时I
22、nter最新的嵌入式处理器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等直接与存储器交换数据所要求的中断。 程序自愿中断。CPU执行了特殊指令(
28、自陷指令)或由硬件电路引起的中断是程序自愿中断,是指当用户调试程序时,程序自愿中断检查中间结果或寻找错误所在而采用的检查手段,如断点中断和单步中断等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,则为低优先级。关于中断的优先级有三条原则:1)CPU同时接收到几
33、个中断时,首先响应优先级最高的中断请求;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,那么当一个更高优先级的中断到来的时候会发生中断嵌套,如果没有设置则不会发生任何嵌套;如果有同一个优先级的中断触发,它并不是在“不断的申请”,而是将它相应的中断标志位置即IE寄存器的某位置位,当CPU执行完当前中断之后,按照查询优先级重新去查询各个中断标志
35、位,进入相应中断6 。3.6 中断控制方式的优点中断是用以提高计算机工作效率、增强计算机功能的一项重要技术。如果计算机系统没有中断,则处理器与外部设备通信时,它必须在向该设备发出指令后进行忙等待(Busy waiting),反复轮询该设备是否完成了动作并返回结果。这就造成了大量处理器周期被浪费。引入中断以后,当处理器发出设备请求后就可以立即返回以处理其他任务,而当设备完成动作后,发送中断信号给处理器,后者就可以再回过头获取处理结果。这样,在设备进行处理的周期内,处理器可以执行其他一些有意义的工作,而只付出一些很小的、切换上下文所引发的时间代价。具体有以下好处: 同步操作。有了中断就可以使CPU
36、和外设同时工作。CPU在启动外设工作后,就继续执行主程序,同时外设也在工作,当外设把数据准备好之后发出中断请求,请求CPU中断它的程序,执行输入或输出(中断处理),处理完成以后,CPU恢复执行主程序,外设也继续工作。并且有了中断功能,CPU可以命令多个外设同时工作。这样大大提高了CPU的利用率,也提高了输入输出的速度。 实现实时处理。当计算机用于实时控制时,中断是一个十分重要的功能。现场的各个参数、信息,可在任何时间发出中断申请,要求CPU处理;CPU则可以马上响应(若中断是开放的话)并加以处理。这样的及时处理在查询的工作方式下是做不到的。 故障处理。计算机在运行的过程中,往往会出现事先预料不
37、到的情况,或者出现一些故障如电源突跳、存储出错、运算溢出等。计算就可以利用终端系统自行处理,而不必停机或报告工作人员。中断系统明显的提高了计算机系统中信息处理的并行度和处理器的效率,改善了计算机系统的性能。它解决了CPU与各种慢速外部设备之间的速度匹配问题。中断系统在故障检测、实时处理与控制、分时系统、多级系统与通信、并行处理、人机交互中得到广泛使用和不断发展。河南城建学院本科毕业设计(论文) ARM Cortex-M0的中断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指令调用系统服务。 P
43、endSV 可挂起的系统服务请求,是一种中断驱动的请求,用于面向系统级服务。在操作系统环境下,当没有别的异常激活时,使用PendSV进行上下文切换。 SysTick 如果处理器实现系统滴答定时器,那么SysTick是由系统滴答定时器计数到0时所产生的一种异常。软件也能产生SysTick异常,在操作系统环境下,处理器能使用这一异常作为系统滴答计时。 中断(IRQ) 中断是由外设或软件请求而产生的异常,所有的中断对指令的执行是异步进行的。在计算机系统中,外设通过中断与处理器通信16。各种异常的优先级如下表4.1所示。表4.1 不同类型异常的优先级异常编号IRQ编号异常类型优先级向量地址激活1-Re
44、set-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-32。未实现的IRQ
45、异常编号被保留,例如,如果某处理器仅实现一个IRQ,则异常号17及以上的编号均被保留。增长步长为4。对于异步异常,除Reset外,处理器在异常被触发到异常开始被处理的这段时间内,仍能继续执行指令。特权软件可以禁止以上具有可配置优先级的异常。4.3.3 异常处理 ISRs 中断服务子程序处理IRQ中断异常。 Faulthandler 故障处理程序处理硬故障。 系统处理程序 (Systemhandlers) 处理系统异常NMI,PendSV,SVCall,SysTick和HardFault。4.3.4 异常向量表异常向量表包含堆栈指针的复位值,以及起始地址。堆栈指针的复位值和起始地址一起被称为异常向量,用于所有异常处理。