一种多中断嵌入式程序的高可靠性设计方法技术

技术编号:19424588 阅读:67 留言:0更新日期:2018-11-14 10:25
一种多中断嵌入式程序的高可靠性设计方法是一种用于提高带有多个中断需求的嵌入式高级语言软件安全可靠的方法。在带有多中断需求的嵌入式软件运行过程中通常会出现由于中断某些变量被异常修改,导致程序行为与预期不一致的现象,为了解决这种问题,一般选择对变量进行多次赋值等类似的处理方法来确保即使变量被异常修改,也可以将其改正回来,以避免引起功能异常。本发明专利技术所述方法包括确定临界区的方法,以及如何对临界区进行访问两个方面,大大提高嵌入式软件运行的可靠性和稳定性。

【技术实现步骤摘要】
一种多中断嵌入式程序的高可靠性设计方法
本专利技术涉及一种多中断嵌入式程序的高可靠性设计方法,用于对无操作系统的情况下,多中断配置的嵌入式程序的可靠性设计,解决在多中断随机运行的情况下,存在多中断异步随机访问冲突时的程序可靠性提高的问题。
技术介绍
随着医疗电子、智能家居、物流管理和电力控制等方面的不断风靡,单个芯片的处理能力增强和集成接口的愈加丰富,使得嵌入式系统的应用获得了较大的增长。嵌入式系统的设计核心在于运行于微处理器或单片机中的具有特定功能的软件程序。随着嵌入式系统的需求越来越复杂,运行于微处理器中的程序规模也越来越大,所运行的逻辑也越来越复杂。嵌入式操作系统的引入部分地减轻了嵌入式应用软件开发程序员的负担,但对于实时性要求较高的应用领域,无操作系统的嵌入式程序还是被作为首选设计方案。如此,嵌入式程序的可靠性和安全性设计就变得更加重要。微处理器除了进行与应用相关的一些算术逻辑运算外,其最主要的功能就是响应外部输入。通常微处理器有三种响应外界输入的方法:查询、中断以及DMA,其中中断是一种常用且方便的设计方式。但中断在使用过程中就会涉及到临界区的访问问题。若同一个变量在中断中以及中断外均在进行修改且访问时不加保护,那么程序的运行逻辑很可能与设计者的设计目标不同,甚至会对系统功能造成较大影响或危害。随着嵌入式软件功能的复杂性增加,这个问题会变得更加严重,且临界区的识别也会变得更加困难。更困难的是,在程序的运行过程中,临界区访问冲突造成的程序功能异常问题会以小概率的情况下随机出现,这会给调试过程带来巨大的人力物力成本。
技术实现思路
本专利技术主要面向嵌入式程序设计领域,提出一种多中断嵌入式程序的高可靠性设计方法,主要解决了多中断嵌入式程序设计中临界区的识别与安全访问问题。本专利技术的主要技术方案如下:一种多中断嵌入式程序的高可靠性设计方法,通过解决多中断嵌入式程序中的异步随机访问冲突,防止程序运行结果的不确定性,提高程序设计可靠性。进一步的,解决多中断嵌入式程序中的异步随机访问冲突通过下述方式实现:首先识别多中断嵌入式程序的临界区;然后,在同一时刻避免多个处理角色同时访问临界区的原则,对临界区进行访问控制;所述的处理角色包括中断处理程序和主程序两种类型。进一步的,所述的临界区可以通过如下步骤确定:步骤1,搜索多中断嵌入式程序中所涉及到的所有全局变量、硬件接口,将搜索的结果作为公共资源;步骤2,将步骤1中的所有公共资源按照下述定义分为三类:第一类,所有处理角色均只对其进行读操作;第二类,只有一个处理角色对其进行写操作,其他处理角色仅仅对进行读操作;第三类,多于一个处理角色对其进行写操作;步骤3,对于第一类资源,无临界区定义;对于第二类资源,当读取公共资源作为条件、并用于是否进行后续操作判断时,需要将读取部分和后续操作部分同时作为临界区,其中用于判断的公共资源定义为该临界区的焦点资源;对于第三类资源,在更改公共资源的时候需要将写操作的全部过程作为临界区,其中用于判断的公共资源定义为该临界区的焦点资源。进一步的,步骤3中对第二类资源中的所述的当读取公共资源作为条件、并用于是否进行后续操作判断时,其中的条件包括单独条件判断分支和循环退出条件两种类型。进一步的,所述的对临界区的访问控制包括以下步骤:步骤1,比较需要关闭的中断集合Sm和当前已经关闭的中断集合Sc之间的差异;步骤2,求集合差∑=Sm-Sc,在进入临界区前,关闭集合∑中所有中断;步骤3,进入临界区,访问临界区,退出临界区;步骤4,打开步骤2中集合∑中所定义的所有中断。进一步的,所述的Sm包括所有对临界区所对应的焦点资源进行更改操作的中断。在多中断嵌入式程序执行过程中,由于中断处理的随机性,导致对资源访问是异步进行的,如果多个中断处理需要访问同一个公共资源,则处理逻辑的正确性会受到对公共资源的访问顺序的影响。为了避免这种异步随机访问公共资源带来的程序运行结果的不确定性,本专利技术提出了一种设计方法,确保在这种情况下,程序运行的正确性,从而提高程序的可靠性。本专利技术所提出的方法与现有技术方案相比,主要有以下优点:1.本专利技术提出了一套提高多中断嵌入式程序设计的可靠性方法。其通过对临界区的定义和临界区的访问方法的设计,在设计阶段确定了多中断异步随机访问公共资源,产生竞争冲突时的访问规则,避免了在程序运行过程中,多中断异步随机访问冲突所导致的程序执行结果的不确定或执行结果异常的完整方法。2.本专利技术所提出的方法明确了在嵌入式程序设计时,可能会产生临界区的所有公共资源,尤其是硬件接口,避免由于对其的随机访问导致的程序输出异常;3.所涉及到的临界区的辨识方法,尤其是针对常常被忽视的公共资源仅在一个处理角色中进行写操作,其他处理角色中进行读操作的临界区的确认方法,避免了由于条件被随机更改,导致基于条件进行的处理操作行为异常。4.本专利技术所提出的方法所定义的临界区外均为安全访问的范围,不会发生由于多中断异步随机访问冲突导致的程序执行结果的随机性,从而节约了可靠性质量工作的测试成本。经过实践使用验证,该方法可以有效提高嵌入式程序设计,尤其是中断较多的嵌入式程序设计的正确性、可靠性和安全性,从设计阶段就保证了程序设计的高质量,从而减轻后期调试、测试和维护成本。附图说明图1为本专利技术的临界区处理逻辑示意图。具体实施方式下面结合实例对本专利技术做详细说明。本专利技术一种多中断嵌入式程序的高可靠性设计方法,通过解决多中断嵌入式程序中的异步随机访问冲突,防止程序运行结果的不确定性,提高程序设计可靠性。其中解决多中断嵌入式程序中的异步随机访问冲突通过下述方式实现:(一)识别多中断嵌入式程序的临界区;下面对临界区的确认部分进行实例化说明。上述代码描述了一个自动控制电梯门开关的代码片段,其实现的功能描述为,当系统接收外部激励如按动开门开关时,芯片会收到一个中断,从而调用中断服务程序调用OpenDoor()函数来打开电梯门,而在中断外的程序中将循环检测开门的时间是否已经达到8s,若已达到8s,则调用CloseDoor()函数将电梯门关闭;在这段程序中,dwUpdateTimeMs、dwCurrentTimeMs是在中断内外读写的全局变量,dwCurrentTimeMs属于第一类公共个资源,dwUpdateTimeMs属于第二类资源,临界区在进行访问之前需要进行保护(即访问控制),现有常用的保护方法可以写成如下的形式:当中断出现在dwCurrentTimeMs=GetSysTimeMs();语句之后时,上述的临界区保护方式显然与设计意图是不能符合的。当此情况出现后,变量dwCurrentTimeMs已经被置为当前时刻,而在其之后dwUpdateTimeMs被更新为比dwCurrentTimeMs更加新的时间值,这样变量dwCurrentTimeMs的值就小于dwUpdateTimeMs的值,在相减后变量发生溢出,从而大于8000ms,而dwUpdateTimeMs亦满足不等于0xFFFFFFFF的标志值,故而if条件得到满足,从而执行关门操作。但此刻距离最近一次开门时刻的时间间隔显然不满足8s的条件。在应用过程中,这种情况却经常出现,如在电梯门即将关闭的时候,又来了一个乘客准备乘坐电梯,此时他在电梯门即将本文档来自技高网...

【技术保护点】
1.一种多中断嵌入式程序的高可靠性设计方法,其特征在于通过解决多中断嵌入式程序中的异步随机访问冲突,防止程序运行结果的不确定性,提高程序设计可靠性。

【技术特征摘要】
1.一种多中断嵌入式程序的高可靠性设计方法,其特征在于通过解决多中断嵌入式程序中的异步随机访问冲突,防止程序运行结果的不确定性,提高程序设计可靠性。2.根据权利要求1所述的方法,其特征在于:解决多中断嵌入式程序中的异步随机访问冲突通过下述方式实现:首先识别多中断嵌入式程序的临界区;然后,在同一时刻避免多个处理角色同时访问临界区的原则,对临界区进行访问控制;所述的处理角色包括中断处理程序和主程序两种类型。3.根据权利要求2所述的方法,其特征在于:所述的临界区可以通过如下步骤确定:步骤1,搜索多中断嵌入式程序中所涉及到的所有全局变量、硬件接口,将搜索的结果作为公共资源;步骤2,将步骤1中的所有公共资源按照下述定义分为三类:第一类,所有处理角色均只对其进行读操作;第二类,只有一个处理角色对其进行写操作,其他处理角色仅仅对进行读操作;第三类,多于一个处理角色对其进行写操作;步骤3,对于第一类资源,无临界区定义;对于第二类资源,当读取公共资源作...

【专利技术属性】
技术研发人员:高飞崔宇刘思东邱枫隋强强丁万兵叶绍凯李慧张磊仲宇
申请(专利权)人:北京航天自动控制研究所中国运载火箭技术研究院
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1