引言
ARM7TDMI体系的中断向量的地址是动态分配在中断向量控制器的寄存器中,例如,意法半导体(ST)公司生产的STR71x系列ARM微控制器,其增强型的中断控制器(EIC)的EIC_IVR寄存器(中断向量寄存器)、EIC_SIRn寄存器(源中断寄存器)都是用于存储相关中断通道的中断服务程序在存储器中的地址,内核响应IRQ中断后,再根据当前对应的中断通道的中断向量进行散转,执行相应的中断服务程序。对于一般的8位MCU,通常是将向量中断人口固定分配ROM中,例如MCS-51单片机各个中断的人口地址是固定的。两者相比,ARM的中断体系具有较大的灵活性,但却降低了安全性和可靠性;MCU的中断向量体系虽然失去了灵活性,但确保了系统的安全性和可靠性。
在系统长时间运行和强干扰的作用下,保存在寄存器中的ARM的各个中断地址很容易受干扰信号的影响。当中断向量地址被改写后,程序必定跑飞,这种情况是无法忍受的,特别是在工控系统中。针对这种情况,本文提出了基于STR71x系列ARM微控制器将中断向量固化到ROM的思路,可以提高系统的安全性和可靠性。
2 STR71x结构分析
STR71x系列是意法半导体(ST)公司生产的基于ARM7TDMI内核的微控制器,片上集成高达256 KB+16 KB的Flash和64 KB的RAM,拥有丰富的外设和增强的I/O功能,具有高性价比。STR71x内部有一个独立的增强型中断控制器,可完成多个中断通道的硬件处理、中断优先级决策和自动产生中断向量等功能,如图1所示。
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对应的中断服务程序的存储器地址的首址。
3 IRQ中断防御体系的构建
根据上面的分析可知,STR71x ARM中各个IRQ中断通道的中断服务程序入口地址是动态存放在EIC_IVR、EIC_SIRn等可读写的寄存器中,即存放在RAM中的,这样很容易受干扰信号影响。当这些寄存器中的中断服务程序地址被干扰信号改写,产生中断时,系统肯定无法正确进入相应的中断服务程序,系统程序必定跑飞。所以,保护各个IRQ中断通道的中断服务程序入口地址就显得相当必要。
软件根据EIC_IVR寄存器中存放的地址去散转执行对应的中断服务程序的具体实现代码。下面列举了ST公司公布的标准固件代码中关于IRQ中断部分处理的代码:
在上述程序中,系统响应中断后,首先把R0~R12、SPSR等寄存器入栈保护,然后再通过读取E-IC_IVR寄存器获得当前响应的中断通道所对应的中断服务程序入口地址。
由前面的分析可知,EIC_CICR寄存器是存储当前响应的IRQ中断通道的标号,EIC_CICR寄存器在此成为构建防御体系的关键,利用它可将中断向量固化到ROM中。
在构建的防御体系中,EIC响应IRQ中断,软件读取一次EIC_IVR后,EIC_CICR寄存器更新当前响应的IRQ中断通道的标号,然后获取此标号的值,跳转到固化在ROM的对应当前中断通道的中断服务程序入口,执行所响应的中断通道的中断服务程序。在上述所列出代码的基础上,修改了代码如下,实现防御体系的构建。[page]
比较修改前后的代码,修改后每次执行的代码只比原来增加了5条指令,中断响应处理的实时性有所下降,但是,在高速的ARM微控制器上,牺牲5条指令周期的时间来换取系统的可靠和安全是完全值得的。
一般情况下,程序员不会对未使能的中断通道编写中断服务程序,故此,在32个IRQ中断通道散转向量表中,可以把没有使能的中断通道直接链接到复位向量进行强行复位,代码如下:
4 结束语
本文提出的IRQ中断防御体系的构建,通过了Kell ARM3.04的开发环境调试。并成功应用在基于STR71x ARM微控制器的某数控切割加工的控制系统。在持续一个月的系统运行测试中,对在程序中没有构建IRQ中断防御体系的系统(简称“A系统”)和构建了IRQ中断防御体系的系统(简称“B系统”)相比较,发现A系统曾经出现过两次的程序跑飞现象,而B系统的运行稳定,未出现程序跑飞的情况。可见,采用了该防御体系后,大大提高ARM微控制器的抗干扰能力,增强了系统的可靠性和安全性。
参考文献:
[1]. ARM7TDMI datasheet http://www.dzsc.com/datasheet/ARM7TDMI_139812.html.
[2]. ROM datasheet http://www.dzsc.com/datasheet/ROM_1188413.html.
[3]. MCS-51 datasheet http://www.dzsc.com/datasheet/MCS-51_477840.html.
关键字:STR71x结构 ARM微控制器 IRQ 中断防御体系
引用地址:
基于STR7 ARM微控制器的IRQ中断防御体系
推荐阅读最新更新时间:2024-03-16 13:12
基于ARM单片机的汽车电动助力转向系统的研究
电动助力转向系统(EPS)是汽车工程领域的热门课题之一,目前研究的主要内容为EPS系统的控制规则和硬件控制器(ECU)的设计,而控制规则的实现必须以一个稳定、可靠的控制器为基础。现有的控制器多数基于功能增强的8位单片机,也有的用DSP。目前,以32位处理器作为高性能嵌入式系统开发的核心是嵌入式技术发展的必然趋势。ARM处理器因其具有突出的优点在32位微控制器领域里得到非常广泛的应用,在32位嵌入式系统应用中稳居世界第一。在汽车电子技术领域,从车身控制、底盘控制、发动机管理、主被动安全系统到车载娱乐、信息系统等,都离不开嵌入式技术的支持,因此,ARM处理器在汽车电子领域有着良好的应用前景。本文研究了电动助力转向系统(EPS)及其控制器
[单片机]
ARM单片机的复位电路设计
无论在移动电话,高端手持仪器还是嵌入式系统,32 位单片机ARM 占据越来越多的份额,ARM 已 成为事实的高端产品工业标准.由于ARM 高速,低功耗低,工作电压导致其噪声容限低,这是对数字电路极限的挑战,对电源的纹波,瞬态响应性能,时钟源的稳定度,电源监控可靠性等诸多方面也提出了更高的要求.ARM 监控技术是复杂并且非常重要的。 分立元件实现的监控电路,受温度,湿度,压力等外界的影响大而且对不同元件影响,不一致较大板面积,过多过长的引脚容易引入射频干扰,功耗大也是很多应用难以接受.而集成电路能很好的解决此类问题.目前也有不少微处理器中集成监控电路,处于制造成本和工艺技术原因,此类监控电路大多数是用低电压CMOS
[单片机]
飞思卡尔推出Kinetis系列基于ARM Cortex-M4的90纳米32位MCU
飞思卡尔半导体日前推出Kinetis系列,这是基于新ARM Cortex-M4处理器的90纳米32位 MCU MCU
MCU Microcontroller(微控制器)又可简称MCU 或μ C,也有人称为单芯片微控制器(Single Chip Microcontroller),将ROM、RAM、 CPU、I/O 集合在同一个芯片中,为不同的应用场合做不同组合控制.微控制器在经过这几年不断地研究,发展,历经4 位,8 位, 到现在的16 位及32 位,甚至64 位.经过20多年的发展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域。 ,开创了其 微控制器 微控制器
一
[工业控制]
产业复苏在即,MCU期待蛰伏后的新活力
高交会电子展系列技术会议之一的MCU技术创新与应用大会2009近日完美谢幕,超过500名业界精英齐聚一堂,和iSuppli、 恩智浦、ARM、意法半导体、中国软件行业协会、康佳、金凯博、盛扬,以及海尔集成电路的专家一起,分享了MCU最新产品、技术及发展趋势。 随着全球经济复苏和电子设备需求的回升,中国MCU市场有望将在2010年复苏,本次研讨会上,iSuppli行业分析师孔晓明在他题为“中国MCU市场发展趋势”的演讲中,就与大家分享了这一观点,他乐观预测:整个半导体发展形势在今年非常恶劣。从1999年开始到2013年,对半导体产业有两个低谷,第一个低谷是2001年互联网泡沫,但是在2001年大家可以看到中国整个的半导
[单片机]
回顾2012:各半导体厂商竞相开发ARM内核MCU
2012年对半导体行业而言是严峻的一年。从年初到9月底,半导体的全球销售额同比少4.7%。在这一期间,全球最大的半导体厂商——英特尔的销售额为399亿美元,同比减少1%;ARM的销售额为6.503亿美元,不及英特尔的1.5%,但同比增长了14%,实现了2位数增长。推动其销售额增长的一大因素就是 ARM内核MCU 。该公司称,2012年第三季度(7~9月)ARM内核MCU的供货量同比增加了35%。
英飞凌加入ARM行列
实际上,各大半导体厂商纷纷在2012年宣布致力于ARM内核MCU业务。比如,英飞凌科技公司在1月发布了基于Cortex-M4的“XMC4000系列”。在欧洲,恩智浦半导体公司和意法半导体公司是ARM内核MCU
[工业控制]
SiLabs 1.15亿美元收购小壁虎Energy Micro
Silicon Labs公司日前表示,以1.15亿美元现金外加额外5500万美元激励措施,收购低功耗单片机及射频芯片供应商Energy Micro。 此次收购为Silicon Labs提供了将近250款基于ARM的32位单片机,涵盖超低功耗、小尺寸封装的Cortex-M0+产品以及高性能的Cortex M4内核产品。 同时此次收购,Silicon Labs也加强了其在射频产品领域的产品组合,包括EM的EFR Draco无线收发器及SoC,支持的频率波段范围从小于1GHz的产品到2.4GHz,支持的协议包括超低功耗蓝牙、6LoWPAN、ZigBee、RF4CE、802.15.4(g)、KNX以及ANT+等。 “此次收购可
[单片机]
ARM单片机超声波监测预警系统电路设计
随着信息化、智能化、网络化的发展,嵌入式系统技术获得广阔的发展空间,工业控制领域也进行着一场巨大的变革,以32位高端处理器为平台的实时嵌入式软硬件技术将应用在工业控制的各个角落。嵌入控制器因其体积小、可靠性高、功能强、灵活方便等许多优点,其应用已深入到工业、农业、教育、国防、科研以及日常生活等各个领域,对各行各业的技术改造、产品更新换代、加速自动化化 进程、提高生产率等方面起到了极其重要的推动作用。 障碍物距离检测电路的设计 在本系统中超声波测距电路是由MICROCHIP的PIC16C57设计而成的,选用的超声波传感器是T/R40-16压电陶瓷传感器。在工作中,主控器PIC16C57发出信号使发射端的超声波换能器发出加以电压激
[电源管理]
s3c2410 __attribute__ ((interrupt ("IRQ")))
在中断里面,有这个函数,不太明白是怎么回事,于是网上找答案~原文是关于s3c44B0的,不过感觉都差不多吧~下面整理下~ ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采用中断比以往的查询方式占用更少的CPU时间,让系统提供更好性能。 查询S3C2410的手册,发现它有?(我不清楚有几种)种工作模式,每种工作模式是不一样的。其中最常用的,就是FIQ和IRQ模式。在使用中断之前,一定要初始化每种模式的栈指针SP,如果不初始化,肯定会出错。在CPU进行初始化时,就需要依次进入IRQ模式,初始化SP,接着再进入FIQ模式初始化
[单片机]