APP下载

基于嵌入式微处理器LPC2294中断系统分析及其应用

2010-02-06蒋天发刘永奎

关键词:寄存器中断嵌入式

蒋天发,刘永奎

(中南民族大学计算机科学学院,武汉430074)

随着嵌入式技术的发展,嵌入式系统的应用越来越广泛.嵌入式系统是指以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗严格要求的专用计算机系统[1].中断在嵌入式系统中起着十分重要的作用,一个功能完备的中断系统,能极大地提高计算机处理事件的能力,提高效率,增强实时性.中断技术的采用,扩展了计算机的应用以及各应用领域的自动化和智能化.

1 中断的特点

中断是一个非常重要的概念,用来通知处理器发生了某种事情.处理器响应中断后,即会进入相应中断处理程序进行处理.为了能使中断处理完后正确返回到被中断的原程序断点处继续往下执行,必须将断点处的现场(如程序指针PC的当前值,寄存器等内容)压入堆栈保护.待执行完中断处理程序,恢复现场(将原压入堆栈的内容出栈恢复),返回原断点继续执行原程序[2].这一过程,保证了原程序执行的连续性.

2 ARM 体系中异常中断

在ARM 体系结构中,异常中断用来处理软件中断,未定义指令陷阱及系统复位功能和外部事件,这些“不正常”事件都被划归“异常”.表1为中断向量表,它给出了ARM 体系中的几种异常中断[3].复位一般发生在系统加电或系统复位时;当ARM 处理器或者是系统中的协处理器认为当前指令未定义时,产生未定义指令异常中断;软件中断是由用户定义的中断指令;当处理器预取的指令地址不存在或者该地址不允许当前指令访问,而该预取指令被执行时,产生指令预取中止异常;当数据访问指令的目标地址不存在或该地址不允许当前指令访问时,产生数据访问中止异常;当处理器外部中断请求引脚有效,且CPSR寄存器的I位控制位被清零时,产生外部中断请求(IRQ);当处理器外部中断请求引脚有效,且CPSR寄存器的F位控制位被清零时,产生快速中断请求(F IQ).

表1 中断向量表Tab.1 Interrup tion vecto r tab le

异常总是在ARM 状态中进行处理.当处理器处于Thum b状态时发生了异常,在异常向量地址装入PC时,会自动切换到ARM 状态.F IQ和数据中止异常同时发生时,ARM 7TDM I内核首先进入数据中止处理程序,然后立即跳转到F IQ向量.在F IQ处理结束后返回到数据中止处理程序.数据中止的优先级必须高于F IQ以确保数据转移错误不会被漏过.

3 LPC 2294中断系统

3.1 外部中断

LPC2294有4个低有效的外部中断输入管脚:E IN T 0、E IN T 1、E IN T 2、E IN T 3. 通过软件设置引脚选择寄存器(P IN ESLEx),可以将多个引脚同时作为同一个外部中断的输入引脚.E IN T 0~E IN T 3外部中断的逻辑电路接收所有与之相连引脚的状态和信号.

根据其方式位和极性位的不同,外部中断逻辑处理如下.

低电平触发方式:作为E IN T功能的全部引脚的状态相与后作为输入信号;

高电平触发方式:作为E IN T功能的全部引脚的状态相或后作为输入信号;

边沿触发方式:只使用GP IO端口号最低的那个引脚,并且与极性设置无关.

图1 外部中断内部结构图Fig.1 In ternal structu re diagram o f ex ternal in terrup tion

3.2 向量中断控制器

L PC 2294具有2个中断输入,分别为IRQ中断和F IQ中断.但是芯片内部有多个中断源,最多可以有32个中断输入请求.向量中断控制器(V IC)的作用就是允许哪些中断源可以产生中断、可以产生哪类中断、产生中断后执行哪段服务程序[4].

中断输入请求可以在V IC中被设置为以下3类.

快速中断请求(F IQ):具有最高优先级,如果分配给F IQ的请求多于1个,V IC将中断请求“相或”后向ARM 处理器产生F IQ信号.F IQ服务程序从V IC中读出一个字来识别产生中断请求的F IQ中断源是哪一个.当只有一个中断被分配为F IQ时可实现最短的F IQ等待时间,因为F IQ服务程序只要简单地启动器件处理就可以了.

向量IRQ中断:具有中等优先级;该级别可分配32个中断请求中的16个.32个请求中的任意一个都可分配到16个向量IRQ slo t中的任意一个,其中slo t0具有最高优先级,而slo t15则为最低优先级.

非向量IRQ中断:具有最低优先级.

通过中断选择寄存器(V IC In tSelect)来选择产生中断的类型,寄存器中每一位控制着一个中断源(如WDT),每个外围设备都有一条中断线连接到向量中断控制器,但有些可能拥有几个内部中断标志,单个中断标志也有可能代表一个以上的中断.向某位写入1时,对应中断源产生的中断为F IQ中断,写入0时为IRQ中断[5].

V IC最多支持16个向量IRQ中断,这些中断被分为16个优先级,并且为每个优先级指定一个服务程序入口地址.任何IRQ中断产生之后,微控制器跳转到地址0x18执行代码,该地址处的指令为:

LDR PC,[PC,#-0xff0]

在执行该指令时,PC指向当前指令后的第2条指令,即地址0x20.该指令将内存地址:

0x20-0xFF0=0xFFFFF030

处的内容存入PC,该地址正是V ICV ectA dd r寄存器的地址.所以一条ARM 指令即可实现程序向中断服务程序的跳转.这正是向量IRQ中断具有较快的中断响应的主要原因.

任何中断源都可以设置为非向量IRQ中断,它与向量IRQ中断的区别在于不能为每个非向量IRQ中断源设置服务程序地址,而是所有的非向量IRQ中断都共用一个相同的服务程序入口地址.

图2 硬件原理图Fig.2 Hardw are diagram

4 中断的应用——键盘

键盘是通过按键的按下与松开2种状态来改变输入管脚的输入电平,从而产生按键信号,然后根据具体管脚的电平状态来确定是哪个键被按下.

当按键按下以后,一般存在一定的抖动,其抖动的时间取决于按键的机械特性,一般抖动期为几毫秒,因此需要做去抖动处理.

键盘的基本结构如图2所示.

LPC2294共有144个引脚,每边36个,图2只标出了在键盘中断中用到的几个引脚.

具体实现的程序可以分为以下3个函数.

(1)中断使能函数.

(2)I/O口初始化函数vo id IO-In it4().

(3)中断函数vo id--irq IO- In terrup t4(vo id).

if(k!=0){//上面几行程序用来按键消抖,两次读I/O口,延迟//18m s后,仍为低电平,说明有键按下

以上程序已通过调试,按键能够很好地使用,按键具体要实现什么功能,可以在此基础上进行扩展.

5 结语

如果在片内RAM 中调试程序,并使用了中断,那么必须将中断向量重新映射到F lash地址0x0.这是因为所有的异常向量都位于地址0x0及以上,可以通过将寄存器M EMM A P配置为RAM 模式来实现这一点.

把某个引脚设置为外部中断功能后,该引脚为输入模式,由于没有内部上拉电阻,所以必须外接一个上拉电阻,确保引脚不被悬空.

在中断服务程序执行完毕后,对外设中断标志的清零将会对V IC寄存器(V ICRaw In tr、V ICF IQ Status和V IC IRQ Status)当中的对应位产生影响.另外,为了能够服务下次中断,必须在中断返回之前对V ICV ectA dd r寄存器执行写操作,该写操作将清零内部中断优先级硬件当中对应的中断标志.

[1] 周立功.ARM 嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005:1-3.

[2] 李顺章,吴国东,赵河明.微机原理与接口技术[M].北京:机械工业出版社,2006:155-158.

[3] 杜春雷.ARM 体系结构与编程[M].北京:清华大学出版社,2003:17-19.

[4] Ph ilip s Sem iconducto rs.LPC2292/2294 userm anual[EB/OL].[2004-03-01].h ttp://www.zlgm cu.com/NXP/index.h tm

[5] ARM L im ited.Prim eCellV ecto red In terrup tContro ller(PL 190)[EB/OL]. Technical Reference M anual,[2004-05-17].h ttp://infocen ter.arm.com/help/index.jsp?top ic=/com.arm.doc.rss/docsrss.xm l.

猜你喜欢

寄存器中断嵌入式
Focal&Naim同框发布1000系列嵌入式扬声器及全新Uniti Atmos流媒体一体机
Lite寄存器模型的设计与实现
TS系列红外传感器在嵌入式控制系统中的应用
二进制翻译中动静结合的寄存器分配优化方法
基于FPGA的中断控制器设计*
Linux中断线程化分析及中断延时测试
搭建基于Qt的嵌入式开发平台
移位寄存器及算术运算应用
跟踪导练(二)(5)
千里移防,卫勤保障不中断