摘要:以51芯片为例,讲述了模型的建立、调试与验证,以及基于模型的嵌入式C代码的自动生成及软硬件在环测试。实践表明,该基于模型的设计方法可显著提高工作效率、缩短研发周期、降低开发成本,并且增加了代码的安全性与鲁棒性,有效降低了产品软件开发的风险。
关键词:Matlab/Stateflow;RTW;MBD;软件在环仿真;自动代码生成;快速原型
引言
伴随着嵌入式系统的复杂性越来越高,系统的开发周期不断延长。但开发周期与系统的安全性、可靠性又有一定的冲突。目前,一台中高档汽车的软件控制代码就超过了500万行,F-35的控制软件更是高达1 500万行,一艘航母的控制代码超过一亿行。与此同时,设计本身也变得更加复杂。嵌入式系统设计师必须面对以下挑战:更快地向市场交付产品,更低的成本,保证复杂系统的协调一致,高质量的代码,具有足够的灵活性以适应最后一分钟的变化修改。为了在日趋激烈的市场竞争中占据有利地位,开发出高质量的产品,同时缩短开发周期,手工编写的代码已很难满足应用要求,必须改变传统的项目开发方式。通常,编程人员花费大量的时间来编制程序、查错、调试和验证,增加了工作量,延长了研制周期。此外,手工编制的代码良莠不齐,降低了软件运行的可靠度,增加了代码错误的可能性和系统出错的风险。为了迎接这些挑战,工程师必须找到以更快速有效开发软件和硬件的方法。鉴于软件工程化思想的引入和盛行,软件业发展潮流逐渐趋于工程化、流水化。Matlab环境下集成的Sireulink/Stateflow模型设计和使用RTW生成目标代码的软件设计方案便是这一大背景的产物。基于模型的设计就是解决该问题的一种方法。Matlab MBD解决方案可以使用户方便地穿梭于建模、仿真、验证与实施之间,而无需重写代码或改变软件环境。经过近几年的不断完善,这种方法已经从概念演变成实际应用中重要的开发模式。洛克希德·马丁、波音、空中客车、通用汽车、奔驰、西门子、摩托罗拉等公司都有应用MBD技术开发的成功经验。
1 基于模型的设计优点
传统开发模式利用手工编写代码,即把控制策略翻译成高级语言代码,然后用断点调试的方式测试和修改控制程序。其存在很多弊病:
①对软件工程师在嵌入式软件代码编写方面要求较高,虽然软件工程师对被控对象的特性和控制方法有深入了解,但往往并不擅长编写MCU的底层代码。这迫使软件工程师花费大量精力去仔细阅读MCU相关说明书。
②控制算法的翻译和验证困难。最初的控制策略和算法必须手工翻译成MCU上的程序代码,控制策略的修改将伴随大量原始代码的修改,致使代码的人工维护成本较高。
③硬件平台依赖。软件开发过程与硬件平台紧密相连,可移植能力往往较差。硬件平台一旦更换,代码移植成本很高。
而在基于模型的设计中通过自动编码生成技术以及循环硬件测试,工程师们可以消除由于手动操作以及缩短通往产品出货的路径时所产生的错误,生成测试、验证以及最终使用产品的编码,大大提高效率。例如,美国直升飞机制造商基于模型设计为Tiltrotor飞机开发了飞行控制程序,比原来的方法缩短了40%的软件开发时间。采用传统的设计流程,一个有多年VHDL编码经验的工程师,一般要花费645小时对全功能SDR波形进行手动编码,而另外一个没有多少经验的工程师采用基于模型设计技术,只用了不超过46个小时就完成了相同的工作。通过采用基于模型设计技术,英国国防和航天公司的软件无线电系统(SDR)工程师们能够减少10%的重复工作以及
整体开发时间。
基于模型的设计与传统设计相比有以下优点:
①开发人员具有统一的开发平台,模型的理解具有非歧义性。使用一种公共设计环境,在开发的早期就避免了需求分析错误。
②模型复用性好,便于维护、组装。
③RTW技术将程序员从代码的海洋中解放出来,使其专注于核心技术的研究上。
④基于模型的设计在效率和代码的安全性方面具有无与伦比的优势。
⑤可显著降低系统开发周期与研发成本。
⑥通过多范畴的仿真改进算法。
⑦降低了对物理原型的依赖。
⑧设计集成了测试,不断地发现和纠正错误。
在大系统开发中广泛采用MBD技术。从美国的F-35、GM的
混合动力车,到X系列空天飞机以及欧洲的空客A380,再到G4的开发都采用了基于模型设计。美国CRC出版社于2009年11月出版了第一本基于模型的嵌入式设计专著《Model-Based Design for Embedded SystEMS》。而国内基于模型的设计应用才刚刚起步,在此方面远远落后于国外技术发展,相关文献很少。在设计中的应用主要还是停留在模型的早期仿真测试上,DSP开发多停留在M文件测试无误后再改编C代码的阶段,代码自动生成和模型检验的例子较少,没有真正体现基于模型设计的精髓。更多地关注Simulink,对更适于嵌入式系统建模的Stateflow应用相对较少,硬件描述语言很少应用。相比而言,MBD方法在自动代码生成领域的研究较多,而对软件在回路仿真方面的研究极少。
2 基于模型的设计流程
2.1 DO-17B标准下基于模型的设计
一个完整的基于模型的设计应该符合DO-17B标准,它通常要包含以下几个部分:
◆建立需求文档与可执行的技术规范
◆需求与模型问的双向跟踪
◆模型检查
◆模型的验证
◆软件在环测试
◆处理器在环测试
◆代码优化
◆代码有效性检查
◆代码效率剖析
◆内存用量检查
◆硬件在环测试
◆生成产品代码
[1] [2] [3] 下一页