欢迎来到天天文库
浏览记录
ID:38152881
大小:378.78 KB
页数:3页
时间:2019-05-27
《ARM7内核的中断屏蔽方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、ARM7内核的中断屏蔽方法翁斌(安徽省消防电子工程技术中心蚌埠依爱消防电子有限责任公司,蚌埠233006)引言CPU在执行程序的过程中,由于外部的某种原因,有必要尽快地中止当前程序的执行,而去执行相应的处理程序,待处理结束后再回来继续执行被中止了的原程序,这种情况称为“中断”。从事嵌入式开发的工程师对中断的概念都很熟悉,在x86系列CPU体系中,软件设计人员会调用enable()函数和disable()函数来允许或屏蔽中断。enable()和disable()是两个库函数,函数disable()的作用图1中断源是屏蔽中断,它唯一允许
2、执行的中断是NMI(不可屏蔽中断);函数enable()的作用与函数disable()相反,是将被屏所产生的正常中断。IRQ的优先级低于FIQ,对于FIQ序蔽的中断打开,允许中断。这两个函数的原型都是在头文列它是被屏蔽的。任何时候在一个特权模式下,都可通过件DOS.H中定义的,DOS.H定义的都是一些DOS接口置位当前程序状态寄存器(CPSR)中的I位来禁止IRQ。函数。DOS的全称为“DiskOperatingSystem”,即“磁盘快速中断请求(FIQ)支持数据转移或通道处理,在操作系统”,是一种在x86系列的微型计算机上运行的
3、操ARM状态中,FIQ模式有8个专用的寄存器可用来满足作系统。寄存器保护的需要,这是上下文切换的最小开销。将x86和ARM是两种不同体系的微处理器,ARM不nFIQ信号拉低可实现外部产生FIQ。在一个特权模式支持DOS接口函数,在ARM公司提供的集成开发环境中,可通过置位当前程序状态寄存器(CPSR)中的F标志来禁止FIQ异常。当F标志清零时,ARM7处理器在每ADS1.2的头文件中没有DOS.H文件,DOS.H中定义的所有函数在ARM的编译器中都不支持,所以需要重新设条指令结束时检测FIQ同步器输出端的低电平。计两个函数替代上述函
4、数,以实现相同的功能。3ARM7中断屏蔽程序实现1ARM7处理器简介ARM7内核包含1个当前程序状态寄存器(CPSR),该寄存器中包含条件代码标志位、控制中断的使能和禁止ARM是AdvancedRISCMachines的缩写,ARM公司开发了很多系列的ARM处理器内核,ARM7处理器就位,以及设置处理器操作模式位。当前程序状态寄存器如是其中的一个系列,其中包括ARM7TDMI、ARM7TDMI图2所示。S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJS。该系列处理器提供Thumb16位压缩指令集和Em
5、bededICE软件调试方式,多应用于多媒体和嵌入式设备,包括Internet设备、移动电话、PDA等。2ARM7中断工作模式ARM7处理器具有2个中断输入,分别为IRQ中断和FIQ中断,如图1所示。其对应的中断操作模式为向图2当前程序状态寄存器量中断IRQ模式(用于通用中断处理)和快速中断FIQ模当前程序状态寄存器的控制位中包含2个中断禁止式(支持数据传输或通道处理)。位———I和F位:当I位置位时,禁止IRQ中断,清零时允向量中断请求(IRQ)是一个由nIRQ输入端的低电平许IRQ中断;当F位置位时,禁止FIQ中断,清零时允许p
6、aper@mesnet.com.cn(投稿专用)2011年第6期71FIQ中断。器的相应位,为“0”的位则不影响中断使能寄存器中的相在ARM7系列的处理器中,只有“MRS”和“MSR”两应位。条指令可以直接读取和设置当前程序状态寄存器(CPSR)3.2汇编语言程序实现或保存程序状态寄存器(SPSR)。在ARM公司提供的CC语言程序只能实现对向量中断IRQ的屏蔽,具有编译器中并没用提供特殊的语法格式,用于指定生成这两局限性,如想实现对全部中断的屏蔽就只能使用汇编语言条指令,所以如要想将IRQ中断和FIQ中断都屏蔽,就必来实现。程序如下
7、:须使用汇编语言来编写函数。对于IRQ中断,ARM还有;禁止中断,Disable()函数另外一种管理模式,即通过向量中断控制器(VIC)负责管EXPORTDisable理芯片的中断源,如果是只屏蔽或打开向量中断IRQ,也AREADisableC,CODE,READONLY可以使用C语言来设计这两个函数。;声明代码段DisableC3.1C语言程序实现ENTRY;标识程序入口CODE32;声明32位ARM指令本例选用的CPU是NXP公司的LPC2290,内核为DisableSTMFDR13!,{R0,R14};现场保护ARM7TDMI
8、S。在其向量中断控制器VIC中有两个寄MRSR0,CPSR;读取CPSR存器控制向量中断使能或禁止:中断使能寄存器(VICInt-ORRR0,R0,#0xC0;置位I、F位,禁止I、F中断Enable)和中断使能清零寄存器(VICIn
此文档下载收益归作者所有