嵌入式软件中断冲突分析与避免方案

来源 :管理学家·学术版 | 被引量 : 0次 | 上传用户:chen721050780
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:介绍了嵌入式软件在中断使用中存在的中断冲突,通过典型案例分析了冲突产生的机制和类型及对软件造成的影响与危害,针对其中的软件安全漏洞提出了检测和分析方法。针对软件中断冲突提出了三种解决方案,并分析了三种方案的优缺点,为软件设计人员提高软件安全性可靠性提供设计参考。
  关键词:嵌入式软件;中断冲突;软件安全漏洞
  引言
  随着嵌入式软件越来越多的应用在工控领域,其承载着越来越多的数据采集和处理、数据通信、自动控制与管理、系统安全保障等重要任务,同时也满足同步处理、实时处理、突发事件处理等性能要求。嵌入式软件的复杂性要求中断技术成为软件设计中必不可少的组成部分。中断技术的使用很容易引入中断资源的使用冲突,这些冲突存在着随机性、隐蔽性和不可预知性,一旦发生将会造成程序错误,甚至导致严重软件故障,尤其对航空航天等对可靠性安全性要求极高的领域,如何发现和消除中断冲突带来的安全隐患已经成为一个严峻的课题。
  一、什么是中断冲突
  冲突体现在代码针对某个或某些共享资源发生了访问竞争而造成程序错误。如果某个资源在被读取的过程中被打断,进行了写操作,或在被写的过程中被打断,进行了读取或重写操作,则可能存在访问冲突。“被打断”包括主程序中的资源被某个中断服务子程序打断、一个中断服务子程序的资源被某个高级中断服务子程序打断等情况。
  二、如何识别和判断中断冲突是重要前提。
  (一)首先通过一个简单的例子来了解一下什么是中断冲突:
  某嵌入式软件中包含遥控和遥测两个任务,由两个中断服务程序来实现,遥测任务优先级高于遥控任务,即遥控任务可以被遥测任务抢占,两个任务中均进行模式设置,模式设置由一对组合变量TM_Mode和NewModeSet实现,遥控任务中代码如下:
  TM_Mode = TM_Mode| 0xC0; (1)
  TM_Mode = TM_Mode& 0x03; (2)
  NewModeSet = (NewModeSet& 0x38) | 0xC0; (3)
  在遥测中断中会启动遥测任务,由于遥测任务优先级高,若遥控任务被遥测任务打断,遥测任务也对TM_Mode和NewModeSet进行设置,遥测任务中代码如下:
  If(TM_Mode>= 0xC0)
  {
  TM_Mode = (TM_Mode& 0x03) >> 4;
  NewModeSet = NewModeSet& 0x3F;
  }
  如果在遥控任务的第(1)句和第(2)句之间被遥测任务打断,则会改写TM_Mode和NewModeSet的值,遥测任务执行完成后返回遥控任务继续处理时则造成TM_Mode和NewModeSet不匹配的错误。
  (二)再通过一个例子进一步分析中断冲突:
  软件中设置54字节控制信息数据,控制信息数据存放在buf[0]~buf[53],其中buf[48]为压力传感器温度数据,buf[49]为压力传感器压力数据,buf[53]为前53字节的校验和。在主函数中采集buf[48]和buf[49],在外部中断4(采样中断高优先级)中依次采集buf[0]~buf[47]和buf[50]~buf[52],读取主循环中采集的buf[48]和buf[49],并计算校验和写入buf[53]。在外部中断6中(取数中断,低优先级)发送54,字节控制信息数据。与问题相关的流程图如下:
  从流程图中分析,产生数据访问冲突的场景有三个:
  场景一:外部中断4完成累加和计算退出中断到进入外部中断6发送数据前的时间段内,若主循环恰好运行到对buf[48]和buf[49]进行写操作语句,在外部中断6发送之前buf[48]和buf[49]被改写,而未重新计算校验和buf[53],导致外部中断6发送的控制信息数据校验和错误。
  场景二:主程序写buf[48]和buf[49]之间产生外部中 v 断4,读取了buf[48]和buf[49],并对校验和进行了计算,退出外部中断4返回主程序后,又对buf[49]进行写操作,在外部中断6发送之前buf[49]被改写,而未重新计算校验和buf[53],导致外部中断6发送的控制信息数据校验和错误。
  场景三:外部中断4的优先级高于外部中断6,若在外部中断6发送buf[0]~buf[53]的过程中产生外部中断4,在中断4中对buf[0]~buf[47]、buf[50]~buf[52]以及校验和进行了写操作,待退出外部中断4返回外部中断6执行时,由于一部分数据已经被发送,后一部分数据以及校验和在外部中断4中被刷新,仍会导致发送出去的控制信息校验和错误。
  我们可以通过静态分析法检查中断资源冲突,针对所有中断服务子程序中访问资源,逐一分析其在主程序(含其调用的子模块)、各个中断服务子程序中的访问情况,以确定资源访问过程中是否存在冲突:
  表1 中断属性表
  表2 中断程序使用资源引用关系总结表
  此方法不仅能有效检测多字节的变量、缓冲区、数组的数据访问冲突,同时也能够检测寄存器访问冲突,比如主程序给某个寄存器赋值后,被中断打断使用该寄存器进行其他赋值,则在中断返回后主程序使用该寄存器数值时,导致数据被意外改写。目前北京轩宇信息技术有限公司开发的检测工具SpacChecker能够有效检测此类冲突资源。
  三、中断冲突的分类
  中断冲突包含主程序与中断服务程序的资源冲突,低优先级中断服务程序与高优先级中断服务程序的资源冲突。可导致的故障可分为中断向量初始化故障,中断现场保护和现场恢复问题,多级中断与主程序相互干扰问题,中断嵌套问题,与时序相关的中断冲突问题。   四、冲突检测的意义
  嵌入式软件研制中,广泛采用中断服务机制来实现任务需求,但中断系统的设计和实现过程很容易引入软件错误。导致软件在运行过程中不定时发生莫名的错误或遥测数据错误等不可预知的错误,影响软件的正常运行。
  由于中断触发的随机性和不确定性,造成软件测试过程中很难发现和定位该类问题。一旦软件带着这些安全漏洞层层闯关并最终烙焊、生产,将会给使用者带来安全隐患,严重的甚至会造成不可估量的损失。
  五、解决方法研究
  (一)关中断法:读/写过程关中断是常见的数据访问冲突预防措施,在可能产生中断的位置关闭相关中断,以保证数据不被打断,尤其是多字节数据和原子操作语句,采用该措施是非常有效的。另外要注意的是在初始化完成前是不能够打开中断的,因为如果提前打开了中断,在初始化工作还未完成前有中断信号产生,程序允许中断触发,此时中断向量入口还未初始化,则程序将跑飞。关中断措施在具体实施时,需要特别注意如下两个方面:一是确认当前关中断不能意外被打开,如果此时关闭了某一个中断,但在另一个未被关的中断服务子程序中打开了该关闭中断,则造成当前关中断操作失效。二是需要结合软件需求确认当前关中断时间是否影响软件性能要求,如果关中断时间太长影响软件对中断的响应时间,则造成其他功能失效。
  (二)兵乓存储法:是一种应用于数据流控制的常见处理技巧,输入数据流通过输入选择单元将数据流分配到两个数据缓冲区,一个模块对一个数据缓冲区进行读操作过程中,另一个模块对另一个数据缓冲区进行写操作,交替使用,循环进行,避免了数据冲突,提高处理速度。乒乓存储法占用的内存区相对较多,如果软件内存较小,或者内存使用率较高时,可酌情考虑。
  (三)设置中断发生标记法:在读数据之前设置该标记为无效,在中断服务子程序中写该数据后置标记为有效,读写完成后判断该标记是否有效,如果有效则表明该数据已被中断改写过,需要重新读取,以保证当前数据是最新的同步数据,而不会出现跳变。此方法可常用于多字节资源访问的处理,而且常用于资源读取操作。
  另外,中断冲突是设计引入的,设计时需要对资源、时序进行分析,采用针对性的规避措施。有些时候不好的编码形式也会引入中断冲突相关的错误,因此改善编码形式也是一种有效措施。
  六、结束语
  针对当前嵌入式软件中常见的中断冲突,本文基于静态分析技术进行了分类分析,并针对软件安全漏洞给出了不同解决方案,可有效地解决中断冲突问题,提高软件的可靠性安全性,可在较广的应用范围内推广。如果冲突资源量较大的情况下,冲突分析的工作量将会相对增加,如何快速高效准确地分析冲突则需要进一步优化。此外,解决方案也存在各自的利弊,软件设计人员需根据软件实际需求进行选择。希望本文能为软件设计人员提供参考。
  参考文献:
  [1]杨芳.嵌入式软件中断系统资源检测技术.计算机工程与设计,2010 年
  [2]吴萍,陈意云,张健.多线程程序中断冲突的静态检测[J].计算机研究与发展,2006,43(2):329-335.
  [3]董丽.航天型号并发软件测试技术研究 [D].北京: 中国航天第
  二研究院硕士学位论文, 2005.
  [4]Dennis Brylow, Jens Palsberg. Deadline analysis of interrupt-driven software[J].IEEE Transactions on software engineering,2004,30(10):634-655.
  [5]周新蕾,缪峥红.安全关键软件的可靠性测试.载人航天 2005,06(6)
其他文献
摘要:干部作风关系着党的凝聚力、号召力、战斗力,关系着经济社会发展的成败,直接影响着党群干群关系。从总体上看,我们干部的作风是好的,但部分干部在作风上暴露出来的问题,已成为影响工作落实和发展的障碍。具体表现有以下三个方面:  关键词:转变;干部作风;联系;群众  在形式主义方面,主要是知行不一、不求实效,注重形式,做表面文章。个别领导干部缺乏责任心和使命感,工作应付的思想严重,作风飘浮,惰性太强;
期刊
摘要:吉林油田油井采油层系一般可划分1-3套,小的层系则有3-5个不等。由于各层系间天然物性的差异,加之生产后压裂、注水、结垢等因素影响,导致各层系及层段油层间物性、压力、堵塞等参数产生了差异。常规的措施工艺满足不了油田开发的需要,油层污染或堵塞得不到高效处理,化学药剂不能全部发挥作用,形成措施成本高、工艺效果差的现象。该论文阐述了振动工艺技术的应用效果,通过实际操作后,地面井口出现自喷,油层堵塞
期刊
摘要:低渗透油藏由于其特殊的储层物性,油井见水后采油指数大幅下降,延长低渗透油藏低含水采油期,提高低渗透油藏低含水采油期的采收率对低渗透油藏开发起着至关重要的意义。文章针对塞392长6油藏见水井逐渐增多的现状,分析了油井见水的原因及动态特征,提出具有针对性的治理意见,并在指挥生产过程中取得了较好的实践效果,在同类油藏开发中具有一定的借鉴意义。  关键词:低渗透油藏;见水井;油井找水;堵水  一、见
期刊
摘要:煤矿随着开采深度的增加,资源逐渐匮乏,地质条件更为复杂,开采煤层赋存不稳定,受相邻工作面采动和地质条件影响,为避开地质构造带,工作面两巷掘进过程中不平行,出现拐弯现象,需实施工作面调斜和旋转,以发挥出综采工作面高产高效的优势,提高工作面单产水平。经实践检验,表明只要根据具体的条件,采取可行的技术措施,加强现场管理,大角度调斜、旋转技术在工作面推进过程中是可行的,并且具有极大的 经济效益,煤炭
期刊
摘要:下面本研究结合工程施工实例就针对掘进过特殊构造支护工艺技术进行分析,以期提高巷道稳定性,保证巷道工程要求和矿井安全生产,现将报道如下。  关键词:掘金;过特殊构造;支护技术  由于地下媒层开采中,很多生产矿井的运输巷以及回风巷都在数千米以上,在煤矿巷道掘进的过程中,由于穿越的地质地层情况尤为复杂,特别是在经过地质构造、软岩层、应力集中区域以及含水地段等过特殊条件下,巷道很容易出现变形甚至破坏
期刊
摘要:随着社会主义市场的不断发展,煤矿企业的思想政治工作显得日益重要,怎样做好煤矿企业的思想工作,激发员工的积极性是企业的重要任务之一。本文针对新时期煤矿企业思想工作的创新进行研究,结合企业的实际情况探讨思想政治工作的途径与方法。  关键词:煤矿企业;思想工作;创新  思想政治工作本身就是一种社会政治运动,也是国家进步的体现,同时为企业的发展做出了重要的贡献,但是由于员工思想政治工作的开展是一个比
期刊
摘要:党建质量管理体系是东方地球物理公司借鉴ISO9000标准,将受控管理理念引入党建工作,以此提升党建工作质量的重要举措。  关键词:党支部工作;探索与实践;党群建设  自2007年以来,东方地球物理公司华北物探处党委作为体系运行试点单位,坚持以推进党建质量管理体系的规范化运行为主线,促进了基层党支部工作水平的持续提升。  一、突出“细”字抓策划  高质量的工作源于高水平的策划。华北物探处党委要
期刊
摘要:本文详细介绍了化肥厂循环水的工艺流程特点和对自动控制的要求,采用了SIMATIC S7-300可编程控制器以及组态王监控系统对老旧落后的控制系统进行数字化改造,构成了循环水PLC控制系统。  关键词:S7-300;组态王;数字化改造;控制系统  前言  今年来,炼化企业数字化管理建设悄然兴起,规模不断扩大、功能不断完善,在精细管理、可视化监控、安全生产及节能增效等方面都取得了较好的成效,逐渐
期刊
摘要:班组作为矿井最基层、最活跃的组织细胞,是安全建设的前沿阵地,也是职工成长锻炼的初始地,更是群安工作最小的群众组织。为此,笔者以新窑煤矿为表,从班组建设的必要性、基本现状、存在的问题调查研究,并提出途径选择。  关键词:煤矿;班组建设;途径选择  班组处于执行层地位,担负矿井安全生产、经营活动中最繁重的指标和任务,是矿井安全生产、和谐稳定和取得“双重效益”的前沿阵地。强化班组建设,对于夯实群众
期刊
摘要:高校核心价值理念传承对于思想政治教育方法创新具有重要的推动和促进作用。通过引导师生树立和践行科学价值观;构建特色校园文化;组织开展形式多样的社会实践活动,进而提高师生的价值与责任认同,从高校核心价值理念中吸取智慧和养料。  关键字:社会主义核心价值体系;高校核心价值观;思想政治教育  加强思想政治教育,应努力从高校核心价值理念的传承中吸取智慧和养料,推进思想政治教育方法全面创新的同时,要贯穿
期刊