中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 传感控制 >>电子行业新闻正文

基于STR7ARM微控制器的IRQ中断防御体系

时间:2007/11/10 10:50:00  作者:  来源:IC72  浏览人数:1141
 
 

      1引言

      ARM7TDMI体系的中断向量的地址是动态分配在中断向量控制器的寄存器中,例如,意法半导体(ST)公司生产的STR71x系列ARM微控制器,其增强型的中断控制器(EIC)的EIC_IVR寄存器(中断向量寄存器)、EIC_SIRn寄存器(源中断寄存器)都是用于存储相关中断通道的中断服务程序在存储器中的地址,内核响应IRQ中断后,再根据当前对应的中断通道的中断向量进行散转,执行相应的中断服务程序。对于一般的8位MCU,通常是将向量中断人口固定分配ROM中,例如MCS-51单片机各个中断的人口地址是固定的。两者相比,ARM的中断体系具有较大的灵活性,但却降低了安全性和可靠性;MCU的中断向量体系虽然失去了灵活性,但确保了系统的安全性和可靠性。

      在系统长时间运行和强干扰的作用下,保存在寄存器中的ARM的各个中断地址很容易受干扰信号的影响。当中断向量地址被改写后,程序必定跑飞,这种情况是无法忍受的,特别是在工控系统中。针对这种情况,本文提出了基于STR71x系列ARM微控制器将中断向量固化到ROM的思路,可以提高系统的安全性和可靠性。

      2STR71x结构分析

      STR71x系列是意法半导体(ST)公司生产的基于ARM7TDMI内核的微控制器,片上集成高达256KB+16KB的Flash和64KB的RAM,拥有丰富的外设和增强的I/O功能,具有高性价比。STR71x内部有一个独立的增强型中断控制器,可完成多个中断通道的硬件处理、中断优先级决策和自动产生中断向量等功能,如图1所示。

IC72新闻中心

      EIC中的优先级解码器是一个不断计算挂起IRQ最高优先级的组合模块,当决策出最高优先级中断后,它把EIC_IVR寄存器(中断向量寄存器)更新为最高优先级中断服务程序的地址,并且拉低nIRQ内部信号。软件读取EIC_IVR寄存器的内容后。获得当前中断通道所对应的中断服务程序的地址,从而散转执行对应的中断服务程序。而在读取EIC_IVR寄存器值的一个时钟周期后,EIC_CICR寄存器(当前中断通道寄存器)被更新为当前响应的IRQ中断通道的标号,EIC_CIPR寄存器(当前中断优先级寄存器)被更新为当前响应的IRQ中断通道的优先级。

      中断向量寄存器EIC_IVR是一个32位的寄存器,其中,高16位IVR[31:16]不依赖于当前响应的中断。对于所有的IRQ中断通道来说,这16位都是相同的,它是在初始化时由用户程序配置的。而低16位IVR[15:0]则依赖于当前响应的中断(即当前具有最高优先级的有效中断),并且它是当前系统响应的中断通道所对应的EIC_SIR寄存器中源中断向量(SIV)的副本。EIC_SIRn是通道n的源中断寄存器,其高16位SIV[31:16]是中断通道n对应的中断服务程序的存储器地址的低16位。EIC_IVR寄存器的高16位IVR[31:16]与EIC_SIRn的高16位SIV[31:16]构成了中断通道n对应的中断服务程序的存储器地址的首址。

      3IRQ中断防御体系的构建

      根据上面的分析可知,STR71xARM中各个IRQ中断通道的中断服务程序入口地址是动态存放在EIC_IVR、EIC_SIRn等可读写的寄存器中,即存放在RAM中的,这样很容易受干扰信号影响。当这些寄存器中的中断服务程序地址被干扰信号改写,产生中断时,系统肯定无法正确进入相应的中断服务程序,系统程序必定跑飞。所以,保护各个IRQ中断通道的中断服务程序入口地址就显得相当必要。

      软件根据EIC_IVR寄存器中存放的地址去散转执行对应的中断服务程序的具体实现代码。下面列举了ST公司公布的标准固件代码中关于IRQ中断部分处理的代码:

IC72新闻中心

IC72新闻中心

      在上述程序中,系统响应中断后,首先把R0~R12、SPSR等寄存器入栈保护,然后再通过读取E-IC_IVR寄存器获得当前响应的中断通道所对应的中断服务程序入口地址。

      由前面的分析可知,EIC_CICR寄存器是存储当前响应的IRQ中断通道的标号,EIC_CICR寄存器在此成为构建防御体系的关键,利用它可将中断向量固化到ROM中。

      在构建的防御体系中,EIC响应IRQ中断,软件读取一次EIC_IVR后,EIC_CICR寄存器更新当前响应的IRQ中断通道的标号,然后获取此标号的值,跳转到固化在ROM的对应当前中断通道的中断服务程序入口,执行所响应的中断通道的中断服务程序。在上述所列出代码的基础上,修改了代码如下,实现防御体系的构建。

IC72新闻中心

      比较修改前后的代码,修改后每次执行的代码只比原来增加了5条指令,中断响应处理的实时性有所下降,但是,在高速的ARM微控制器上,牺牲5条指令周期的时间来换取系统的可靠和安全是完全值得的。

      一般情况下,程序员不会对未使能的中断通道编写中断服务程序,故此,在32个IRQ中断通道散转向量表中,可以把没有使能的中断通道直接链接到复位向量进行强行复位,代码如下:

IC72新闻中心

      4结束语

      本文提出的IRQ中断防御体系的构建,通过了KellARM3.04的开发环境调试。并成功应用在基于STR71xARM微控制器的某数控切割加工的控制系统。在持续一个月的系统运行测试中,对在程序中没有构建IRQ中断防御体系的系统(简称“A系统”)和构建了IRQ中断防御体系的系统(简称“B系统”)相比较,发现A系统曾经出现过两次的程序跑飞现象,而B系统的运行稳定,未出现程序跑飞的情况。可见,采用了该防御体系后,大大提高ARM微控制器的抗干扰能力,增强了系统的可靠性和安全性。

 
【相关文章】
·基于STR7ARM微控制器的IRQ中断防御体系
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9