电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

MBD下的软件开发模式资料

6页
  • 卖家[上传人]:w****i
  • 文档编号:93297881
  • 上传时间:2019-07-19
  • 文档格式:DOC
  • 文档大小:162KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、MBD模式下的软件开发流程介绍王淳(联创汽车电子有限公司,上海 浦东 201203)【摘要】以模型为基础的软件开发,我们称之为MBD(Model-Based Design)。和传统的嵌入式软件开发模式相比,MBD模式无疑是一个巨大的进步,肯定会在今后几年内普及,并完全代替现有嵌入式软件的开发模式。【主题词】MBD,软件开发流程及工具,MIL,SIL,PIL,HIL一、变革的力量:上次的变革:90年代,国内嵌入式软件开发还停留在汇编语言的层次,汇编语言虽然灵活、效率高,但是在处理浮点计算、复杂逻辑运算等问题上,软件开发的工作量相当大。而同期国外已经大面积普及了以C语言为基础的嵌入式系统开发流程。当年很多程序员对于C编译器的正确性、可靠性、效率还都抱有过怀疑的态度,但是随着keil、tasking等公司不断推出的优质的C编译器,这种疑虑很快被打消。C代码不需要程序员关心浮点算法;对复杂逻辑的设计也很方便;而且针对于嵌入系统硬件资源有限的情况,很多专用的C编译器都提供各种优化选项;通过对堆栈的灵活运用,解决了RAM空间不足的问题;代码的可移植性、可继承性也远强于汇编语言。短短几年时间,C语言

      2、编程在国内嵌入式系统的开发中已经普及。先进工具可以大大提高劳动生产率,这一点在这次变革中体现的非常明显。现在的革命:而基于模型进行嵌入式系统开发流程,其优越性以及对传统开发方式的颠覆,一点也不比当年的变革小。对于嵌入式系统开发而言,存在以下一些具体的问题:l 现在嵌入式系统的复杂程度,比起几年前又上了一个台阶,传统C语言开发采用流程图的辅助设计方式,已经很难表达复杂的程序逻辑;l 以手工编写C代码,还是会出现很多低级错误;l 现在的系统开发周期越来越短,再沿用过去那种硬件设计-软件设计-集成调试的流程,无法开展硬件和软件的并行开发;l 随着系统复杂性的增加,用户对最终功能的确定也越来越模糊,很多情况下,用户都需要在得到样机后,才能开展测试,并提出修改意见,从而导致开发的反复,大大增加了开发成本和时间。l 虽然C代码已经在各个嵌入平台上普及,但是因为代码设计者设计思路的局限,加之传统流程图的单线设计思路,软件模块的可继承性还是比较差。国外的企业已经从90年代后期,逐步开始采用MBD开发流程,使用建模工具对复杂嵌入式系统进行分析设计。随着建模工具及配套设备的完善,使得自动代码生成的工具链也

      3、逐渐清晰。现在已经有很多极复杂系统,如电喷控制器等等,全部采用了MBD的设计流程。MBD工具链的可靠性、稳定性已经无需怀疑。l 以建模工具对复杂逻辑进行设计、分析、仿真,使得系统需求分析和软硬件开发结合得更加紧密,系统分析不再仅仅停留在文档阶段,而是直接和设计挂钩。l 采用了MBD的设计流程后,在硬件设计的同时,软件设计即可全面展开,大大缩短了开发周期。l 从软件开发的第一步开始,工程师就可以观察结果,调试逻辑,大大加快调试进度。l 采用成熟工具,可以实现代码自动生成,完全避免了手工编码的低级错误。并且在设计修改后,极短时间内即可重建系统软件,而无需进行多次反复测试。l 采用建模工具及辅助设备,可以在模型建立后,立即实现快速原型仿真,用户马上可以看到设计运行的结果,工具可以协助用户及时修改需求,在最短的时间内完善需求设计。l 模型的可移植性,远强于C代码,可以方便的建立公司内的系统设计模型库,节约开发成本。二、MBD开发流程的环节和作用:2.1 系统设计定义阶段系统设计定义阶段的目的是:针对用户提出的初步需求,逐步细分,将功能需求拆解为可实现功能定义,并且建立系统级模型,包括控制器模型

      4、(controller)、被控对象模型(plant)、测试案例模型(reference position)。其中,测试用案例模型和被控对象模型,是系统设计工程师根据用户需求设计的。在整个开发流程中会多次使用,也是系统设计定义阶段重点关注的内容。系统设计定义环节本身也将在整个设计流程中反复迭代,用户需求会在不同的阶段逐步完善,这些修改最终都需要反馈到系统设计定义中,主要是反馈至测试用案例模型中。控制器模型也在系统设计定义阶段直接输出,这样后续的工作都可以在统一的模型上完成,而不需要在代码、模型、文档之间频繁切换,一方面可以节约时间,一方面可以始终得到最准确的需求文档。控制器模型的详细设计可以由后续的环节完成,在系统设计定义阶段可以只定义为顶层模型。不必细究。系统设计定义阶段,建议使用MATLAB提供的Simulink Verification and Validation(V&V)工具,使用这个模块,可以将需求与模型关联起来,通过Signal Builder(Simulink Library Browser-Sources-Signal Builder)来设计测试案例,通过V&V工具,对

      5、模型执行覆盖度分析;也可以用工具(Design Verifier)自动为模型生成符合模型覆盖度要求的测试用例。这种测试用例和需求文档(doors),可以做一一对应的关联。2.2 模型设计阶段在MBD开发流程中,模型设计阶段的主要工作就是设计控制器模型,根据系统需求的要求,采用MIL技术,对控制器的控制逻辑进行细化。细化的过程从顶层模型开始,直接使用系统设计定义阶段设计的案例模型和被控对象模型,对细化后的控制器模型进行仿真测试,这个步骤就是MIL(Model In Loop)模型在环仿真。MIL的最终结果,是得到一个可以实现所有控制逻辑的控制器模型,这个模型可以不必关系具体的硬件接口,因为被控对象模型及案例激励都是以模型形式存在的,整个环路的仿真可以直接在MATLAB环境下运行。模型设计阶段的目的是:算法设计,完成算法有效性检验;比例扩放设计,溢出检测,为后续定点化取得基础数据;用例跟踪,对测试用例的结果进行记录,并反馈不合理值,修改系统设计定义。模型设计阶段,整个模型都以浮点运行,所以保证了计算的精度和合理的取值范围。建议使用第三方提供的RCP工具,如dSpace公司的AUTOBOX等

      6、,对MIL的结果进行实际验证。这类工具不需进行模型定点化,硬件IO定制也非常简单,可很方便地将模型下载运行。通过简单电路调整,即能直接控制被控对象。在RCP工具的帮助下,软件设计阶段时用户已经能够参与系统开发,直观地看到系统运行的结果,并及时地修改完善系统需求。2.3 C代码生成及调试阶段在模型开发完毕后,需要将PC机上运行的浮点模型,转换为可以在定制嵌入CPU上运行的模型代码,考虑到现阶段嵌入式CPU的资源还不够丰富,系统开发对成本的限制需求等等,直接在CPU上进行浮点运算的方案还是比较少。C代码生成及调试阶段,要通过SIL(software in Loop),对模型进行定点化验证。所谓SIL,就是在保证代码效率、兼顾计算精度和数据表达范围的情况下,采用auto scaling等技术,将模型进行定点化。然后用自动代码生成工具,把模型转换为标准C代码,再将C代码封装为可以在MATLAB环境中执行的模块,代替原有浮点模型,进行软件在环仿真。浮点运算和定点运算在精度和数据表达范围上存在巨大差异,不进行验证直接转换模型肯定会带来无法估量的误差;MATLAB模型中,如果不加强制限制,各个模块的

      7、计算顺序是由MATLAB自己设定的,可能和工程师的看法完全不同;而在MATLAB的模型内,对各个环节的算法,是以MATLAB自己的M语言、库函数、采样周期、时序结构来进行的,其计算步长可能是变化的,而这些都和实际嵌入式C代码存在很大差异(由简单的积分环节组成的常微分方程,在MATLAB中可能采用龙格库塔法等迭代算法进行计算,而在普通嵌入式C代码中,总是对一个个的积分进行累加计算),这种算法上的差异,也会导致最终结果的完全不同,这也是必须要进行SIL仿真的原因。这个阶段非常关键,也是国内走MBD路线进行嵌入式系统软件开发时比较容易忽略的一环。正常情况下,设计一个可以正确运行的模型并不难,但是要进入工程设计,将模型转换为实际的嵌入式C代码,就必须按部就班地完成以上步骤。在SIL环节,采用自动代码生成工具,将控制器模型转换为标准C代码,算法和时序都可以由工程师确定,再将模型生成的C代码(仅限于控制逻辑部分,IO部分暂不包括),以S函数的方式(或其他方式)封装为模块,这种模块可以直接在MATLAB里运行,其内部运行机制取决于C代码本身。然后再取代原模型中的控制器模型,联合测试用案例模型和被控对

      8、象模型,进行仿真。这一步目的是为了检查定点化以后代码的计算精度、算法是否合理、是否产生溢出等,然后及时修改原模型,反复进行SIL仿真后,保证模型定点化的正确性。C代码生成及调试阶段,建议使用MATLAB内自带的RTW,或者dSpace公司的TargetLink等工具。2.4 硬件代码生成调试阶段在这个阶段,硬件设计必须已经完成。所谓PIL,就是将经过SIL设计的模型,在工具的协助下,生成可以在指定CPU上运行的嵌入式C代码,并下载至指定CPU的DEMO板上直接运行,通过数据接口,和MATLAB上的测试用案例模型及被控对象模型进行数据交互,进一步验证代码准确性。因为SIL环节的C代码是在INTEL系列CPU的PC机上运行的,虽然C代码的正确性得到了验证,但是如果转换为汇编机器码,INTEL芯片代码和我们嵌入式系统的指定芯片的代码还是有差别的。进行PIL的目的就是为了检验这两种代码间差异是否可以接受。同时,在PIL环节,模型生成的嵌入式C代码直接在指定CPU上运行,模型逻辑控制部分的代码和最终实际运行的代码完全一致,并且运行环境也大体相当,可以对代码时序的精确性进行进一步验证。PIL的技术

      9、过程是,建模工具提供接口,通过串口之类的通道,和下载到DEMO板上的控制逻辑代码进行交互,把测试用例模型的输出数据下载到DEMO板,把控制逻辑代码的计算结果返回到被控对象模型,形成一个完整的闭环仿真。PIL需要有特殊硬件支持,部分芯片可能无法进行PIL环节仿真。接下来需要把经过SIL、PIL验证的模型,生成特定CPU的机器码,再加入部分和硬件相关的IO驱动代码,一起编译,下载至我们自己设计的硬件运行。主要目的,是将自动生成的代码将和硬件一起联调,解决IO驱动和模型代码之间的接口问题,并形成稳定的IO驱动代码库,保证后续修改模型时,不用再次修改底层驱动。这个阶段建议使用RTW及TargetLink,以及专用的C编译器、PIL仿真用DEMO板。2.5 硬件在环HIL(hardware in Loop),是指控制器采用实际硬件,加上由模型生成的C代码(也许有部分手工设计的底层驱动程序)。而被控对象,可以由模型仿真实现。这个步骤主要是针对那些被控对象复杂、实验费用高昂、有着繁琐测试逻辑的系统设计而言。在这类系统中,采用模型仿真被控对象,可以大大加快实验进度,覆盖诊断案例(如发动机飞车处理等)。如果被控对象简单,可以不用软件进行仿真,而采用labcar之类的实物直接验证。HIL阶段,可以发现设计中被忽略的问题,如实际线缆的干扰、人工输入的错误等等,将这类问题及处理方法需要及时反馈到测试用例、被控对象模型、控制器模型中,进一步完善系统设计定义。硬件在环阶段,建议使用labcar或者AUTOBOX之类工具,模拟实际被控对象,自动测试、自动记录,对控制逻辑进行覆盖性测试。2.6 实车测试实车测试阶段和传统开发流程的实车测试阶段并无区别,只是在发现问题后,需要返回对系统定义设计阶段的相关模型进行修改,并在控制器模型的基础上,修改控制策略,解决问题,经过仿真迭代后再回到实车测试。这样可以保证模型的正确性,代码和模型的统一。三、总结语在整个设计开发流

      《MBD下的软件开发模式资料》由会员w****i分享,可在线阅读,更多相关《MBD下的软件开发模式资料》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.