基于SCADE的嵌入式软件开发
嵌入式技术是计算机发展的趋势之一,被广泛应用于工业和军事领域。SCADE(高安全性的应用程序开发环境)为嵌入式软件提供了一套基于模型的开发方式。从嵌入式软件的特点入手,对基于模型的嵌入式系统软件开发技术进行了深入剖析,并给出了一个基于SCADE的开发实例。
1引言
随着嵌入式应用技术的发展,嵌入式系统被广泛应用于人们生活的各个方面。大量功能强大而价格便宜的通用嵌入式硬件随之出现在市场上。而如何能够在通用硬件平台上,高效的开发出满足安全性与可靠性需要的专用嵌入式软件成为了制约嵌入式技术应用的瓶颈。在计算机领域,如何为软件的工业化大生产创造必要的技术条件和设计模式一直是软件工程研究的首要问题。无论是软件工程领域出现过的计算机辅助软件工程的热潮,还是,基于面向对象技术和组件技术的"装配重用"软件思路,都有一些根本性的问题没有得到解决,因此大规模的"装配"软件生产还处在一个理想阶段。
随着研究的深入,用模型化。组件化的方法定义并开发软件及其系统的思想引起了人们的兴趣,也提供了一种新的软件工业化大生产的可能性。在这方面,嵌入式软件由于其本身的特殊性走在了通用软件(PC机用软件)的前面。
2 SCADE软件开发环境简介
SCADE(Safety-Critical Application Develop-ment Environment)高安全性的应用程序开发环境,是法国Esterel Technologies公司研制的一个用于开发达到欧洲航空业DO一178B标准的嵌入式软件的完整工具包。它针对嵌入式软件的特点,运用了正确构建(Correct by Construction)的概念,提出了一种基于模型的图形化开发方式,覆盖了从需求分析到代码实现的整个软件开发流程。
SCADE开发环境提供的一系列开发工具,实现了直观的图形化需求建模功能,基于模型的仿真验证和软件测试功能,以及基于模型的标准C代码和开发文档的自动生成功能。其严谨的建模理论和经过高安全性验证的代码生成器KCG,保证了软件需求和代码产品的高度同步。
SCADE开发环境的出现,使软件设计工作可以集中在需求建模的层面,为基于模型的软件开发方法提供了载体。
3基于SCADE的嵌入式软件开发理论基础
根据嵌入式系统的特点,SCADE提出了反应式系统。确定性。同步假设。并发性四个关键概念,从嵌入式系统的本质特征出发,极大的简化了系统设计的考虑,为基于模型的开发方式提供了理论基础。
3.1反应式系统
反应式(Reactive system)系统是指在运行过程中,不停的和外部环境交换信息,以外部环境的输入信息为主导,进行特定的计算和输出的嵌人式系统。
反应式系统的工作方式是一个"输入一计算一输出"的连续循环过程。反应式系统一般还兼具实时性和周期性,广泛应用于工业领域的嵌入式系统大都属于这种系统。反应式系统的工作方式如图1所示。
反应式系统的概念,把嵌入式系统简化为一个能不断接收输入,并计算输出的黑盒,为嵌人式系统的需求建模提供了基本模型。
3.2确定性
一个系统,如果使用相同的一组输入序列,在相同的时间调度下,其反应情况相同,始终产生相同的一组输出,那么它就是确定的。确定性提高了系统的安全性,是大多数嵌入式软件的重要需求,在航空航天等高科技领域,这也是一个必要条件。‘确定性的要求降低了系统设计的复杂度,简化了系统建模和仿真验证的考虑。SCADE开发环境提供的各种机制确保了系统的确定性,开发者不能引入不确定性。
3.3同步假设
同步假设(synchrony hypothesis)是假设反应式系统的处理速度无限快,即系统在一个可以忽略不计的瞬间响应输入,并产生输出。这样,任何两次响应之间都不会重叠,每一次输出都会在下一次输人前完成。
相对于通用软件的设计,时间是嵌入式系统设计必须考虑的一个因素,而嵌入式软件的运行时间又是与硬件环境息息相关的。为了简化系统设计,SCADE提出了同步假设概念,把物理时间从系统设计中剥离出来。一方面确保了系统的实时性,另一方面也体现了设计的平台无关性。
同时,为了考虑系统的运算时间问题,SCADE通过基本指令步长将实际的物理时间离散成指令周期时间,从而产生了逻辑时间。这样,就可以使用逻辑时间来代替物理时间,给出运算时间的参考值。
3.4并发性
并发性概念认为系统所有输入都是并发的,系统运算模块按照数据流动执行,而且根据同步假设,所有模块的运行都是在可以忽略不计的时间内完成的。其中,没有输入输出关系的模块都是并发执行的,有输入输出关系的模块是按照输入输出关系顺序执行的。
并发性概念进一步简化了系统设计的复杂度,也为系统仿真提供了一种简化的"运行"方式。
4基于SCADE的嵌入式软件开发关键技术
4.1建模机制
基于模型的开发流程,其基础就是模型描述问题,也就是寻找一种合适的形式来描述系统。
根据嵌入式软件的特点,可以把其划分为接口和功能模块两部分,功能模块部分由连续控制部分与状态逻辑部分组成,其输人输出端分别为传感器和执行器。嵌入式软件的一般结构如图2所示。
- 基于SCADE的嵌入式软件开发方法研究(09-12)
- 基于DSP的导弹仿真器嵌入式组件设计(04-30)
- 为嵌入式软件建立统一软件系统框架的方法详介(05-23)
- 在VIM中实现对嵌入式软件的调试(08-06)
- 基于仿真的嵌入式软件白盒覆盖测试系统设计(08-26)
- 嵌入式软件运行剖面建模及测试用例生成(11-06)