网站首页
IC库存
IC展台
电子资讯
技术资料
PDF文档
我的博客
IC72论坛
ic72 logo
资料首页最新产品 技术参数 电路图 设计应用 解决方案 代理商查询 IC替换 IC厂商 电子辞典
关键字: 技术文章 PDF资料 IC价格 电路图 代理商查询 IC替换 IC厂商 电子辞典

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

    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微控制器的抗干扰能力,增强了系统的可靠性和安全性。

热门搜索:8300SB1 6NX-6 2839237 TLP810NET 8300SB2-LF IS-1000 PS120406 BTS412B2E3062A TLP6B UL800CB-15 TLP712 SBBSM2120-1 LC2400 TLP808TELTAA TW-E41-T1 UL24CB-15 PSF2408 TLP825 TLM815NS B30-8000-PCB BQ25895MRTWR ADS1013IDGSR PDUMH15 2839648 PSF3612
COPYRIGHT:(1998-2010) IC72 达普IC芯片交易网
客户服务:service@IC72.com 库存上载:IC72@IC72.com
(北京)联系方式: 在线QQ咨询:点击这里给我发消息 联系电话:010-82614113 传真:010-82614123
京ICP备06008810号-21 京公网安备 11010802032910 号 企业资质