1 引言
随着座舱显示系统的迅猛发展,各种显示软件的开发面临着市场需求的多样化和快速变化的挑战。传统的开发模式是按需求分析、设计、实现、测试等步骤顺序进行,开发过程中常因为开发环节多,中间文档多等因素,导致各开发环节之间的衔接存在一定的不确定性和潜在的遗漏现象,一旦在最终实现和测试阶段出现明显的错误,或是发现不能满足需求的情况,就可能需要从头开始设计,甚至会反复开发多次才能达到要求,因此会延长开发周期。
为了解决这些问题,越来越多的工程师都在逐步采用基于模型的开发方式,以提高他们的设计效率和可靠性。本框架主要基于模型开发工具SCADE[1],针对显示软件的高精度、高性能、高可靠性的需求,对显示软件开发框架进行了设计研究,如图1所示。实验结果表明,本框架具有很强的移植性和实用性,对后续显示软件开发项目具有很大的借鉴意义。
图1 显示软件整体框架
2 基于模型的开发方式
2.1 模型开发的流程
基于模型的开发方式是一种能够解决嵌入式系统更快速有效地开发软件和硬件的方法。它的四个主要组成部分分别是:可执行的规范,设计仿真,代码生成和连续的测试和验证。自动代码生成技术是从上世纪末开始起步,近几年发展迅速,相关的热点研究也越来越多,对嵌入式软件开发技术的发展起到了重要的促进作用。基于模型的设计方法在设计阶段就可以避免产生错误或程序缺陷,自动生成代码提高了代码的质量和可复用性。
本框架所采用基于模型的开发流程如图2所示。这样在不同设计阶段之间的往返就变得容易,并且能够有效地减少软件开发迭代过程的时间。
图2 基于模型的开发流程
2.2 工具的选择
目前国内在航空显示软件研发领域用到的模型开发工具主要包括GL Studio、VAPS XT和 SCADE,经过多次对比实验,本框架最终选用SCADE作为模型开发工具。SCADE 是ANSYS公司研制的一个工具包,用于开发达到航空业DO-178B/C标准的嵌入式软件。它运用正确构建的概念,覆盖嵌入式软件开发中从需求到嵌入式代码的整个设计开发流程。
3.图形界面开发环境
SCADE Display界面设计界面如图3所示。这种所见即所得的设计方式能够极大的提高从需求分析到设计再到实现的迭代周期。其代码生成工具能够为用户提供高质量、高安全性代码,极大地减少了研发人员的工作量。
图3 SCADE图形界面开发环境
4显示软件集成
经过SCADE Suite模型和SCADE Display模型联合仿真确认运行无误之后,需转换为显示控制效果与仿真完全一致,运行在特定硬件平台之上的应用程序,实现设计模型到实际应用的转化。
KCG 工具生成的c 代码实现模拟仿真的控制逻辑及界面,与运行平台无关,具有通用性[2]。将生成代码和手写代码在Visual C++2010 环境下进行集成,调用标准图形库,生成和联合仿真运行效果完全一致的应用程序,实现了SCADE 模型到实际应用的转换,提高了软件开发效率和安全性要求。VC2010工程目录结构如图4所示。
图4 VC工程目录结构
其中sdy_code文件夹和ss_code文件夹分别用来存放SCADE KCG工具自动生成的Display代码和Suite代码;其他文件可按照画面文件、ICD文件、通讯处理文件和主文件进行合理分配。
主文件中手写代码主要包括main.c,specification.c和specification.h 文件。main.c文件中的main 函数是软件入口函数,它用到了一系列GLUT 库函数来设置显示窗口大小,显示模式并挂载回调函数。GLUT 简化打开窗口,检测输入等任务,标准化处理及简化了窗口和事件管理。接着,调用SdySpecification_Init函数初始化所有OGLX 的状态和变量,并初始化SCADE Suite 和SCADE Display 上下文数据,其包含在specification.c文件中;最后,调用glutMainLoop函数,对先前回调函数配置的相应事件消息进行循环处理。
通过模拟接收到的ICD数据,验证手写代码无误后,可以快速移植到嵌入式系统中。由于实验环境的稀缺性,维护一套windows平台的模拟器是十分有必要的,对前期演示验证,实验中故障定位,多人协同工作等都起着重要作用。
5.对比与分析
目前市场上应用较多的同类型开发软件还有VAPS[3],除了最终的帧率对比外,同时对其余多个方面的差异进行了对比。
(1)在图形设计方面
VAPS在图形绘制方面发展时间较长,能提供较为丰富的绘图控件(205个),绘图手段丰富,操作方便。并且能够将模型归类整合,建模效率高;而SCADE在图形绘制方面除了基本绘图控件(36个)外还提供了多种自动化的功能,以提高建模效率,如:模型的平移复制和旋转复制等。
(2)代码可读性
SCADE和VAPS都提供了模型的封装功能,支持对模型进行合理的层次划分,使模型具有较好的复用性和可维护性。VAPS生成的代码调用了很多VAPS内置基类,并且进行了大量的继承,使用了很多C++语言的特性。SCADE生成的代码符合C语言特性。
(3)作图效率
经过多项对比测试发现,SCADE经过优化后,帧率提高较大,性能提升明显,在于VAPS对比过程中处于优势。
以上对比可以看出,SCADE在代码可读性和作图效率方面都略胜于VAPS,而且VAPS在进行适配嵌入式系统过程中较为麻烦,SCADE移植更为方面。
6 总结
本框架利用模型开发工具SCADE,为显示软件开发提供了一套通用开发框架,具有可复用、高效率的特点。自动代码生成技术提高了代码的质量和可复用性。通过windows平台仿真数据可以进行前期验证和快速移植嵌入式平台,极大提高了工作效率,在今后的实践应用中,随着用户的需求提高或变更,将持续改进本框架,简化操作,提高绘图性能,更好的为航空事业提供保障。
参考文献:
[1] Ouassila. Mode-Automata Based Methodology for SCADE[C]. Lecture Notes in Computer Science, 2005(3414): 386-401.
[2] 颜雯清, 李秀娟. SCADE 平台下C 代码的自动生成[J]. 计算机仿真,2007(10):264-268.
[3] eNGENUITY Technologies.VAPS User’s Guide (6. 2) [M] .2003.