lpc中的中断处理小结
近来在lpc的中断过程上看了点文献,作为一个初学者感觉这个内容与其它的处理器还是有很大的区别,比如说三星的s3c4510b,两者在中断的处理上理念是完全不同的,个人感觉lpc的要难一些,很多地方感觉上是在和arm的规范打擦边球,下面具体说一下相关内容。
基础知识:lpc2294的ext中断分为了三类,包括fiq,vectored irq,non-- vectored irq,其中,以fiq的优先级最高,而以non-- vectored irq的优先级最低,系统一共提供了27个中断源,并且给这27个中断源进行了固定的编号,但是注意,这个编号和优先级没有任何的关系,并非是编号在前面的优先级就越高,见下面说明。
关键内容:两套控制渠道,
第一套:在arm体系中,本来有swi,fiq,irq等这些中断的定义,并且已经定义了这些中断的开关控制位,就是在cpsr寄存器中,该寄存器包含了一个i位和一个f位,i位用于控制irq中断的开关,f用于控制fiq的开关,但是值得注意的是cpsr的读取和修改在用户模式下是不能完成的,必须要通过swi指令进入到特权模式下才可以进行修改。
第二套:在lpc的sfr(特殊功能寄存器)中,也提供了一套寄存器用于控制相应的中断的进行,这组控制器叫做vic寄存器(都以vic开头),改组寄存器包括了所有的与中断有关的设置,开启,分类等功能,仅仅是将外部中断引脚对应的部分功能分离出去,由ext系列的寄存器来处理,因此,对这一个系列的寄存器的掌握是非常重要的!
两者间的关系:仅仅在第二套控制渠道下打开fiq,irq中断是不够的,如果arm内核没有开中断的话,整个系统就不会有中断产生,因此,常见的做法是这样:先将第二套渠道的控制内容处理好,然后通过swi软件中断指令,将arm处理器的模式切换为特权模式,在特权模式下,对cpsr进行“读出-修改-写回”的操作,将中断打开,然后在返回到用户模式。
lpc的中断的特殊性:fiq的中断和普通的arm规定是没有任何区别的,即是在产生中断时,指令跳转到0x0000001c处开始执行,这个是没有什么疑问的。但是irq的响应过程就不同了,先看下面一段代码,这个是写在程序的头部的部分字节:
reset
ldr
pc, resetaddr
;// 0x00000000,reset
--->supervisor mode
ldr
pc, und_addr
;// 0x00000004,undefined instruction
--->undefined mode
ldr
pc, swi_addr
;// 0x00000008,software interrupt
--->supervisor mode
ldr
pc, pabort_addr
;// 0x0000000c,abort(prefetch)
--->abort mode
ldr
pc, dabort_addr
;// 0x00000010,abort(data)
--->abort mode
dcd
0xb9205f80
;// 0x00000014,reserved
--->
ldr
pc, [pc,#-0xff0]
;// 0x00000018,irq
--->irq mode
ldr
pc, fiq_addr
;// 0x0000001c,fiq
指令为“ldr
pc, [pc,#-0xff0]”非常特殊,其并没有跳转到irq中断程序的入口处,而是进行了一个pc的运算后赋值,这里就要说明其缘由。在lpc系列中,irq的响应过程,程序的入口地址并不是直接写在这条语句中,而是放在一个寄存器中,该寄存器是:vicvectaddr,其地址是0xfffff030,现在就很明白了,在执行语句“ldr
pc, [pc,#-0xff0]”时,pc的值已经变为该语句的后面第二条语句的地址了,也就是0x00000020,而0x00000020-0xff0时,发生借位,其结果恰好为0xfffff030,也就是说,通过这个简单的运算,使pc跳转到了寄存器vicvectaddr中包含的值为地址的位置上,这样就简单的完成了irq的跳转。
当然,irq中断源不止一个,其中断服务程序也不止一个,这个寄存器的值是自动更新的,另有一组寄存器vicvectaddr0~15(后面有数字)将irq的16个中断源的地址分别放在对应的位置上(优先级等内容有另外的寄存器来控制,这里不多说),当irq中断发生时,硬件自动将对应的vicvectaddr0~15中的某个对应的地址传给vicvectaddr寄存器,这个过程不用我们来编程实现。
微软即将新推出Windows 10X系统
各类常用接地电阻的允许值
中兴通讯状告美国芯片厂商 索赔5500余万元
李开复:未来50%工作将被人工智能取代
嵌入式系统设计NI LabVIEW软件的十大特点
一文读懂LPC中的中断处理
看了三星S8的发布会,不知道大家对iPhone8的外观还满意吗?
诺基亚8强势回归:屏幕指纹识别+骁龙821!诺基亚将告别低配时代!
服务器遭受到攻击应该怎么解决?
所有照明控制技术的优点介绍
工信部副部长陈肇雄表示实现携号转网还要解决两个方面的问题
上半年电子设备制造业增长突出,专家建议继续开拓市场
人造毛发传感器来袭 带给机器人别样“感受”
你需要了解的云存储的几大优缺点
一个叫做MATLAB的美国软件被禁用了
如何使用独立调试工具优化汽车软件开发?
在NEPCON能Get到的三个设计生产制造知识
智能化时代工控机产业迎来发展的新时期和新阶段
独领风骚:大咖云集,物联网与智能穿戴峰会及展览4月举行
5G消息潜力巨大 今年将有200家运营商发布商用RCS