基于SCADE的嵌入式软件开发
针对这种划分,SCADE提供了两套图形化的建模机制:数据流图和有限状态机。对应嵌入式软件结构的划分,数据流图模型可以用来表示连续控制部分,主要包括传感器采样。信号处理。复杂的数学逻辑计算。实现各种算法等功能;有限状态机模型可以用来表示状态逻辑部分,主要包括各种系统状态的迁移和工作模式的变化等功能。
这是一种已被证实为有效并广泛使用的嵌入式软件建模方式之一,能够简单有效的描述嵌入式系统。
4.2需求建模
一个复杂的嵌入式系统的需求建模过程,是一项系统的设计工作,一般有自顶向下和自底向上两种设计方式:
自顶向下的设计方式是一种从抽象到具体的过程。它首先需要根据系统的接口需求,建立系统的黑盒模型;然后根据系统的功能需求,对系统进行模块划分,并层层细化,直至最低层的功能单元;最后是功能单元的实现工作。
自底向上的设计方式是一种从具体到抽象的过程。它根据系统的功能需求,首先实现的是底层的各个功能模块,然后根据各模块之间的接口定义,层层组合,最后形成整个系统模型。
这两种设计方式在实际使用中各有优劣,可以根据具体需要组合使用。
同时,SCADE的建模方式也可以被认为是一种基于组件的开发方式。一个功能独立,接口明确构功能算法模型就类似于一个封装好的组件,可以直接通过接口调用。而SCADE软件开发环境的高安全性限制和平台无关性,保证了模型的通用性和重用价值。这样,基于成熟算法模型的封装与重用,可以使软件开发变成模型组件的"装配",极大的提高软件生产效率,也减少了引人错误的可能。
4.3模型验证手段
基于严密的建模理论,SCADE提供了一系列基于模型的验证手段,使模型检查。系统调试和仿真验证工作都可以在模型层面上完成。其中主要有以下几项:
(1)静态检查,检查模型设计是否有静态语意。语法错误;(2)模拟仿真,根据算法设计测试用例,通过仿真器模拟接口输入输出,直接"执行"模型来实现仿真的功能;(3)形式验证,根据需求设计的安全特性,通过尝试在逻辑上寻找反例来检查模型的安全性;(4)系统原型仿真,通过与其他设计工具的桥接,可以实现系统与模拟外部环境模型的连接运行,方便测试和需求验证。
对于一个系统模型的验证工作,一般是按照自底向上的顺序进行的。首先要对底层功能模块进行验证,由于其结构和接口最为简单,所以最易于调试。在所有组成模块都经过充分验证的基础上,可以继续进行上一层模型的验证工作,并一步步的递推至最顶层的系统模型。
4.4代码自动生成
SCADE基于严格的数学理论和一套形式化方法,能够确保其代码和模型的完全一致,并满足一系列的安全性特征,是完全面向工程的产品代码。
SCADE的代码生成过程提供了多种设置以满足各种需求,需要根据实际使用需要进行配置,一般情况下其产品可以直接嵌人到产品中去而不需要做任何修改。
5开发实例
依据上述开发技术,实例构建某型号制导炸弹飞控软件的制导控制模块,来实践基于模型的嵌人式软件开发流程。
5.1开发流程
基于SCADE的嵌入式软件开发流程,主要工作集中在建模层面,其流程如图3所示。
5.2需求分析软件需求规格描述如下:
(1)需要实现的功能:此模块为计算功能模块,主要根据惯性系下比例导引指令。弹目相对位置和弹体姿态计算弹体需要实现的过载指令。
(2)输入:惯性系下比例导引指令。弹目相对位置。炸弹姿态。
(3)输出:弹体导引指令。
5.3需求建模
需求建模可以分为概要设计阶段和详细设计阶段。概要设计阶段的主要工作是建立系统模型和模块分层细化;详细设计阶段的主要工作是完成具体模块设计。
在这个例子中,根据算法所要实现的功能首先定义了整个系统的输入输出变量,然后建立系统的黑盒模型,如图4所示。
下面根据模块功能,对系统模型进行了进一步划分,主要分为以下几个模块:
(1)飞行状态条件计算模块Condition.其输人为弹体姿态和弹目相对位置信息,以及两个常数参数,输出为三个飞行状态变化的条件。
(2)飞行状态判断模块Fly-State.其输人为三个状态变化条件变量,输出为三种状态标志。
(3)导引指令坐标系转换模块Transition.其输入为弹体姿态和惯性系下比例导引指令,输出为弹体系下比例导引指令。
(4)过载计算模块Acceleration.其输入为三个飞行状态标志,弹体速度。攻角信息,弹体系下的比例导引指令,以及一个常数参数,输出为弹体过载指令。
(5)过载限幅模块Alimit.其输入为弹体过载指令,输出为限幅后的弹体过载指令。
其中Condition.Acceleration.Transition和Alimit是功能计算模块,用数据流图建模;Fly-State是状态计算模块,用有限状态机建模。系统模型图如图5所示。
- 基于SCADE的嵌入式软件开发方法研究(09-12)
- 基于DSP的导弹仿真器嵌入式组件设计(04-30)
- 为嵌入式软件建立统一软件系统框架的方法详介(05-23)
- 在VIM中实现对嵌入式软件的调试(08-06)
- 基于仿真的嵌入式软件白盒覆盖测试系统设计(08-26)
- 嵌入式软件运行剖面建模及测试用例生成(11-06)