在工作中,对基于模型的嵌入式软件开发有了一些想法,现总结出来与大家讨论,同时后续也会将更多的干货拿出来分享,希望大家早日走好基于模型的设计这条路。
(不知道发在本版是否合适,如果违反版规,请联系更改,谢谢。)
全文如下:
而如何能够在硬件平台上,快速高效的开发出满足航天系统安全性与可靠性要求的专用嵌入式软件成为了制约嵌入式技术应用的瓶颈。
目前,在航天系统,型号嵌入式软件研发过程中往往需要投入大量的人力、时间进行系统设计、算法开发、建模、仿真计算、数据处理、代码实现、产品实现及相关验证等工作,同时控制系统算法、电路、软件等不同专业之间的协作也无法顺畅进行。
导致上述问题的一些重要原因在于
1 软件设计与实现不同部门,专业协同困难型号专业室、软件室两部门分别负责算法设计、软件编码实现,专业设计师前期工作中论证结果、仿真结果、分析结果往往仅作为部门内部设计结果的产物而存在,无法作为后续软件室工作环节的直接输入;专业室将软件研制任务书以纸质文档形式交付给软件室,功能、需求描述不清晰,且传递信息有限。此外除对自身算法设计进行描述外还要增加许多软件专业相关的技术要求,存在专业障碍,易造成理解错误,部门沟通不顺畅。
2 软件编码依赖于硬件登录/注册后可看大图
软件室设计师在硬件到位前难以开展软件编码工作,导致软件编码人员只能通过“加班加点”的方式完成工作,效率不高,难以保障型号任务节点要求。
3 系统问题难分解在型号系统联试过程中出现的问题,难以对设计和软件编码两种因素进行分解,排查问题需要两个部门相关人员共同参与,造成设计师人工的严重资源浪费,同时问题的修改周期长,效率低。
4 设计重用、自动化程度低目前大多数型号的软件重用库中,可重用软件以设计文档、C代码形式存在,设计文档与C代码一致性无法保障,设计师在进行设计重用时需要花大量时间去阅读文档、分析代码,难度较大,导致重用库未能发挥其重要作用。同时,软件开发过程中需要编写大量设计文档,无工具辅助,编写过程工作量大,自动化程度低。
基于模型的嵌入式软件开发方法在国外,一些先进的企业例如洛克希德-马丁已经着手进行跨专业,跨部门的协同设计、仿真、实验工作,并在飞机研制过程中建立基于产品虚拟样机(模型)的型号数据流转、分享、管控机制,通过围绕基于模型的产品虚拟样机来开展数字化的系统架构定义、方案设计、产品实现、测试、验证与仿真等数工作,从而大幅度提升产品的研制效率。
基于模型的设计方法/流程,依次为项目需求、软件算法设计阶段、算法实现阶段和集成验证阶段。各阶段说明分别如下:
1)项目需求阶段从项目需求阶段就建立一套可执行的模型,使与纸质需求书逐项对应;模型可通过Simulink V&V工具与需求文档进行链接,Simulink可自动生成模型和需求双向追溯的报告。
2)算法设计阶段在算法设计阶段,逐步细化模型,仿真验证算法在不同环境下的性能;
对设计模型进行模型规范检查,保证模型符合软件设计标准,同时也对模型的代码生成属性及对硬件的兼容性进行早期验证;模型自动生成相关测试用例、测试覆盖度报告,可搭建自动化测试流程,使模型测试和诊断自动进行并生成测试报告。
3)算法实现阶段与传统手工编码不同,采用基于模型设计的方法,可以直接从模型中自动生成用于 FPGA/DSP的 HDL/C代码,所生成代码与模型具有良好的追溯关系。同时,通过Simulink Code Inspector或者软件在环的方式,进行代码与模型的一致性测试。
4)集成/验证阶段从模型中直接生成用于 FPGA/DSP硬件在环测试的测试平台和测试用例。该过程对源码和目标码进行编译、链接,并加载到嵌入式系统中。代码集成可将驱动代码封装成Simulink模块,使用Simulink自动集成第三方编译器直接生成可执行文件,加载到目标嵌入式硬件中。
总结:
以基于模型的方式来设计项目,即实现以模型追溯需求、以模型仿真算法、以模型自动生成代码及以模型自动测试/验证。
利用自动代码生成技术可高端网站设计以大幅改进嵌入式系统设计和开发的流程。具体的模型和代码双向追溯分析可识别出手工沈阳SEO代码审核不能发现的问题。得到的结构一致性和可追溯性报告被归档以便于对符合性进行审计。
可减少人工代码引入的错误,大幅提高设计的效率与可靠性,大幅节约手工编码时间,使工程师可以将精力更多的放在提高和改进算法性能上,减少手工编码和测试验证所消耗的精力。便于算法模块的复用,大幅降低后续项目开发的时间成本。
后续更多关于Matlab/Simulink前沿技术、基于模型的设计、各系统内单位实例分享请关注微信公众号:基于模型的智能系统研发。