当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]ARM7内核的中断屏蔽方法

引言
    CPU在执行程序的过程中,由于外部的某种原因,有必要尽快地中止当前程序的执行,而去执行相应的处理程序,待处理结束后再回来继续执行被中止了的原程序,这种情况称为“中断”。从事嵌入式开发的工程师对中断的概念都很熟悉,在x86系列CPU体系中,软件设计人员会调用enable()函数和disable()函数来允许或屏蔽中断。enable()和disable()是两个库函数,函数disable()的作用是屏蔽中断,它唯一允许执行的中断是NMI(不可屏蔽中断);函数enable()的作用与函数disable()相反,是将被屏蔽的中断打开,允许中断。这两个函数的原型都是在头文件DOS.H中定义的,DOS.H定义的都是一些DOS接口函数。DOS的全称为“Disk Operating System”,即“磁盘操作系统”,是一种在x86系列的微型计算机上运行的操作系统。
    x86和ARM是两种不同体系的微处理器,ARM不支持DOS接口函数,在ARM公司提供的集成开发环境ADS1.2的头文件中没有DOS.H文件,DO-S.H中定义的所有函数在ARM的编译器中都不支持,所以需要重新设计两个函数替代上述函数,以实现相同的功能。

1 ARM7处理器简介
    ARM是Advanced RISC Machines的缩写,ARM公司开发了很多系列的ARM处理器内核,ARM7处理器就是其中的一个系列,其中包括ARM7TD-MI、ARM7TDMI-S、带有高速缓存处理器宏单元的ARM720T和扩充了Jazelle的ARM7EJ-S。该系列处理器提供Thumb 16位压缩指令集和Embeded-ICE软件调试方式,多应用于多媒体和嵌入式设备,包括Internet设备、移动电话、PDA等。

2 ARM7中断工作模式
    ARM7处理器具有2个中断输入,分别为IRQ中断和FIQ中断,如图1所示。其对应的中断操作模式为向量中断IRQ模式(用于通用中断处理)和快速中断FIQ模式(支持数据传输或通道处理)。


    向量中断请求(IRQ)是一个由nIRQ输入端的低电平所产生的正常中断。IRQ的优先级低于FIQ,对于FIQ序列它是被屏蔽的。任何时候在一个特权模式下,都可通过置位当前程序状态寄存器(CPSR)中的I位来禁止IRQ。
    快速中断请求(FIQ)支持数据转移或通道处理,在ARM状态中,FIQ模式有8个专用的寄存器可用来满足寄存器保护的需要,这是上下文切换的最小开销。将nFIQ信号拉低可实现外部产生FIQ。在一个特权模式中,可通过置位当前程序状态寄存器(CPSR)中的F标志来禁止FIQ异常。当F标志清零时,ARM7处理器在每条指令结束时检测FIQ同步器输出端的低电平。
3 ARM7中断屏蔽程序实现
    ARM7内核包含1个当前程序状态寄存器(CPSR),该寄存器中包含条件代码标志位、控制中断的使能和禁止位,以及设置处理器操作模式位。当前程序状态寄存器如图2所示。

[!--empirenews.page--]
    当前程序状态寄存器的控制位中包含2个中断禁止位——I和F位:当I位置位时,禁止IRQ中断,清零时允许IRQ中断;当F位置位时,禁止FIQ中断,清零时允许FIQ中断。
    在ARM7系列的处理器中,只有“MRS”和“MSR”两条指令可以直接读取和设置当前程序状态寄存器(CPSR)或保存程序状态寄存器SPSR)。在ARM公司提供的C编译器中并没用提供特殊的语法格式,用于指定生成这两条指令,所以如要想将IRQ中断和FIQ中断都屏蔽,就必须使用汇编语言来编写函数。对于IRQ中断,ARM还有另外一种管理模式,即通过向量中断控制器(VIC)负责管理芯片的中断源,如果是只屏蔽或打开向量中断IRQ,也可以使用C语言来设计这两个函数。
3.1 C语言程序实现
    本例选用的CPtJ是NXP公司的LPC2290,内核为ARM7TDMI-S。在其向量中断控制器VIC中有两个寄存器控制向量中断使能或禁止:中断使能寄存器(VICIntEnable)和中断使能清零寄存器(VICIntEnClear)。中断使能寄存器相应位置“1”,则允许相应的中断;置“0”则不允许中断。
    程序如下:
   
    函数Disable首先将中断使能寄存器的当前值备份到全局变量(IntEnBak)中,然后通过给中断使能清零寄存器置“1”,来清零中断使能寄存器,从而屏蔽IRQ中断。函数Enable首先将中断使能寄存器清零,然后将全局变量(IntEnBak)备份的数据赋值给中断使能寄存器,从而恢复允许中断。

    设计软件需要注意的一点是,中断使能寄存器虽然是读/写寄存器,但只能向其写入“1”,不能写“0”,写“0”无效,只能通过向中断使能清零寄存器中相应的位写“1”,来清除中断使能寄存器中相应的位。所以写软件时,如想将中断使能寄存器的第4位清零,应注意不能使用下面语句:
    VICIntEnable&=~(1<<0x04);
    该语句的语法没有错误,编译也能通过,本意是将中断使能寄存器的第4位清零,但实际上此功能是无法完成的,语句执行后中断使能寄存器的值没有任何变化。要实现上述功能可用下面语句来代替:
    VICIntEnClear|=1<<0x04;
    中断使能清零寄存器中为“1”的位清零中断使能寄存器的相应位,为“0”的位则不影响中断使能寄存器中的相应位。[!--empirenews.page--]
3.2 汇编语言程序实现
    C语言程序只能实现对向量中断IRQ的屏蔽,具有局限性,如想实现对全部中断的屏蔽就只能使用汇编语言来实现。程序如下:
   
   
    在读/写CPSR时,可以指定传送的区域,指定一种或多种(字母必须为小写)格式:
    ◆_c为控制域屏蔽字节(CPSR[7…0]);
    ◆_x为扩展域屏蔽字节(CPSR[15…8]);
    ◆_s为状态域屏蔽字节(CPSR[23…16]);
    ◆_f为标志域屏蔽字节(CPSR[31…24])。
    在Disable()函数中,通过直接将当前程序状态寄存器的I、F置位来屏蔽I、F中断。ARM7内核在响应中断后将置位中断禁止标志,中断处理结束后再清零中断禁止标志,这样可避免出现不受控制的中断嵌套,即ARM7内核本质上是不支持同级中断嵌套的。所以在Enable()函数中,当ARM7内核在处于不同的工作模式时,应采取不同的模式来分别处理。用户或系统模式下,函数直接清零I、F位,允许向量和快速中断;向量中断模式下只清零F位,允许快速中断;快速中断模式下处理较为复杂,首先要判断在进入快速中断模式之前ARM7内核的工作模式,通过读取存储程序状态寄存器来判断。若之前处于向量中断工作模式,则函数不作任何处理,直接结束;若不是处于向量中断工作模式,则只清零I位,允许向量中断。

结语
    本文介绍一种ARM7内核的中断屏蔽方法,并给出基于该方法的C语言源代码和汇编语言源代码。该段代码已经在笔者参与研制的火灾报警控制器中得到成功应用,可以完全替代x86体系下DOS.H中定义的库函数enable()和disable()的功能。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭