由于有了根据模型的规划,使得开发很多的轿车嵌入式体系时,可以由模型主动生成终究编译的软件。不过,这项作业需求一个软件工程结构的支撑。本文运用线控驾驭体系(steer-by-wire system)作为实例,给出了规划轿车嵌入式体系的进程、办法和测验东西的一个结构。
近来,有报导称包含Denso、Motorola和Toyota在内的不同职业的多家公司都在产品代码方面取得了成功。这项技能正日益成为软件下一波演进开展中的一个重要组成部分。尽管整体而言,它对软件工程化进程的影响已为业界所了解,但却并没有十分清楚地树立起来。关于早前类似演进开展(包含从机器代码开展到汇编代码,再开展到源代码)的参与者而言,这一点尤为显着。
跟着笼统与主动化程度的日益前进,新的进程、办法和东西接踵而来。瀑布式进程已让坐落螺旋式办法和迭代办法。实时办法现已呈现并正在替代静态流程规划。新的东西也呈现了,如包含有调试器、优化编译器和主动测验东西的IDE(集成开发环境)。
不过,由于难以运用、缺少了解或是东西支撑缺乏的原因,并非每一种好的思维都能开花成果。有痕迹标明,这些办法和东西关于干流产品运用并非总是有用。例如,用验证来保证软件正确性的正规办法是运用一种全世界只要极少数专家才真实懂得的言语编写的。此外,1980年代的实时用例东西可以辅助规划,但并未供给一条发生终究代码的简练途径。
在前期运用阶段,产品代码生成的作用适当不错,这首要是由于其有用性。不过,其进一步的开展还需求依托集成进程、办法和东西的支撑。一种新的进程只要在具有了所需支撑办法和东西的条件下才会成功。假如这些条件有所短缺,那么对一个公司老练的嵌入式体系进行从头规划的尽力就不会是可行和有用的。
本文给出了首要面向产品代码生成的这样一个结构:
* 根据模型的规划
* 建模、仿真、快速原型、产品代码生成、模型测验和掩盖、在环测验
* 开发东西、验证与收效(V&V)东西、集成东西
模型的规划进程
经过供给一个一起的图形规范和剖析环境,根据模型的规划可以支撑操控/DSP体系工程师和软件开发人员的需求。在这个进程中,模型被创立并用来规则体系数据、接口、反应操控逻辑、离散/状况逻辑和实时行为。
根据模型的规划被运用在简直每个需求嵌入式操控体系的职业之中。而在大型轿车电子操控单元(ECU)等嵌入式运用的开发进程中,其运用更为广泛。DSP和通讯运用也选用这种办法,但它们更着重建模和原型,而不是产品代码生成。
为了满意这些不同的运用,根据模型的规划进程有必要处理线控驾驭体系等安全要害体系的需求。它还有必要发生终究的、可履行的代码,而且有必要特别紧凑、快速和可以追寻。这是由于在大批量出产的ECU中,有必要运用低成本的定点微操控器部件和DSP。
根据模型的规划合适任何进程结构环境,包含那些在IEEE软件工程化规范中描绘过的进程结构。
IEEE Std. 730适用于任何通用软件项目。为了很好地了解它的进程结构,有必要回忆一下它对“要害性”项目文档所列出的需求。
IEEE Std. 730需求包含:
* 软件需求规范(SRS)
* 软件规划描绘(SDD)
* 软件验证与收效方案(SVVP)
* 软件验证与收效陈述(SVVR)
* 用户文档
* 软件装备办理方案(SCMP)
* 包含软件项目办理方案(SPMP)在内的其他文档
图1:查看一个软件进程的一般办法是借助于V形图
查看一个软件进程的一般办法是借助于图1所示的V形图。这个图对应着大部分工程化进程,不过在开发生命周期中,这个进程是迭代性的,有许多重复的进程。图中的软件进程包含以下几个组成部分:
* 开发 (需求、规划、编码和集成)
* 验证和收效(V&V)
* 集成 (软件装备办理、需求可追寻性和文档)
根据模型的规划十分重视进程迭代、前期测验和开发进程中的重用,这使得它既共同而又功用强大。这一进程的内涵有用性体现在V形图的底部,产品代码生成是来自规划的一种主动过渡。
在根据模型的规划中,方框图或状况图模型可以用作体系和软件需求、软件规划,或许在稍作假定改换之后,用作源代码。这个进程的别的一个共同之处是,它在终究编译之前要进行广泛的验证和收效操作。前期验证和收效的优点很显着:它将大大削减在终究体系集成和测验期间发现的bug数目,返工次数也会更少。
开发办法与东西
在软件工程化进程中,选用了根据模型的规划办法
开发办法包含:1. 行为建模;2. 详细软件规划;3. 分布式结构规划;4. 产品代码生成;5. 嵌入式方针集成。验证与收效办法包含:1. 仿真与剖析;2. 快速原型;3. 模型测验与掩盖;4. 代码追寻与查看;5. 硬件在环(HIL,Hardware-In-the-Loop)测验。集成办法包含:1. 源操控接口;2. 需求办理接口;3. 陈述生成。
下面给出了对各种开发办法的简练描绘,并供给有比如和东西支撑信息。留意这儿给出的一切东西都是商业上可以获得的。这以后的部分评论了开发行为,并包含有要害的验证与收效办法。最终,本文将经过集成组件来进行总结。
1. 行为建模
模型用来为单个子体系(如线控驾驭)的各个方面规则需求和规划。
一个典型的体系包含:
* 输入(如方向盘传感器)
* 操控器或DSP模型
* 设备模型(直流马达、齿条和小齿轮、车轮)
* 输出(方向的改动)
图2:用操控体系方框图来标明反应操控
在图2和图3中,经过运用操控体系方框图来标明反应操控、运用状况图来标明离散事情和条件逻辑,以及运用DSP模块来标明滤波器,可以创立一个体系模型来标明所需的行为特性。
图3:创立一个体系模型来标明所需的行为特性
2. 仿真与剖析
然后,经过运用根据时刻或根据事情的仿真以及频域剖析等办法,可以履行和剖析模型,以保证其满意需求。例如,一个线控驾驭体系有必要对传感器毛病进行呼应,并“将高频呼应衰减到3db以下,一起指令传输速率不能低于1.5Mbps”。
图4A和B*中对线控驾驭体系的建模与仿真,可以确认这些需求是彼此抵触的仍是有用的。仿真是一个中心验证行为,它保证可以完成一个体系来满意这些需求。
图4:线控驾驭体系
3. 快速原型
要在产品的芯片上完成一个可以作业的处理方案,设备模型还不行准确,处理才能也不满意要求,因而建模自身并不能供给完好的处理方案。
快速原型关于战胜这些缺点十分有用,由于它用物理设备来替代设备模型。在线控驾驭的比如中,设备有可能是一辆轿车,这时就运用一辆实践的轿车。不过,由于体系并未树立起来,一个实时或嵌入式渠道将担任运转操控器软件并与设备进行交互作用。
有两种方式的快速原型:功用性快速原型和方针性快速原型。功用性原型运用一台功用强大的实时核算机,如多处理器浮点PowerPC或DSP体系,意图在于确认体系对物理轿车的操控是否如对模型轿车的操控相同好。假如真的是这样,则设备模型的不准确性就显得无关紧要,而且操控战略也得到了验证。
方针性快速原型在相同或类似的产品MCU或DSP,而不是高端PowerPC内核或其他专用高端快速原型硬件中履行软件。意图是将代码下载到实践产品方针之中,以便用物理设备进行快速测验。假如履行杰出,则操控器不只看似有用,而且可以在产品中加以完成。
软件规划行为包含定点数据规范、实时使命、数据输入、内建测验和确诊。经过根据模型的规划,用于算法规范和验证的同一模型被软件工程师加以改善和束缚,作为产品代码生成进程的一部分。
4. 模型测验
与将模型布置到硬件上去编译和集成比较,在桌面核算机上测验模型具有更大的优势。根据源代码的测验现已存在许多年了,可是最近的办法答应进行模型测验和结构掩盖。运用的场景假定是开发人员对操控器施加满负荷压力,以便用仿真和掩盖来验证其规划齐备性。另一种测验类型是毛病形式效应剖析(Failure Mode Effect Analysis),用来保证毛病状况下线控驾驭的救生操作,参见图5*。
图5:毛病形式效应剖析用来保证线控驾驭的救生操作
规划齐备性欠安的比如是数值溢出和死码(dead code)。运用最小或最大数值的模型压力测验可以保证不发生溢出状况。运用仿真很简略进行这种测验,但死码就没有这么简略检测出来了,由于检测需求结构掩盖。死码与失效代码不同,其差异在于后者是开发人员已知,而且出于某种原因而使其失效的。实践状况中的死码意味着在确认规范期间遗漏了什么。
模型掩盖用来评价一个测验件的累积成果,以确认哪些功用模块未被履行,或许哪些状况未被抵达。源代码言语(如C和C++)中树立了某些类型的掩盖,但现在模型也可以进行掩盖了。这项作业要求C言语所不需求(或不行能有)的新理论和新东西,由于这些言语没有功用模块或状况这样的结构。
修正条件/决议计划掩盖(MC/DC)被FAA(美国联邦航空办理局)认为是满意安全要害体系所必需的最严厉的掩盖水平。现在,这种掩盖在一种根据模型的规划结构和许多需求线控规划的场合中现已得到了完成。
5. 分布式结构规划
现代嵌入式体系包含一些分布式ECU,它们彼此间经过一个象FlexRay这样的容错通讯体系进行实时通讯。宝马(BMW)最新的DSC(动态稳定性操控)包含ABS作为其15个子功用之一。经过从DECOMSYS向单个子体系添加主机、使命和信号等网络部件,嵌入式功用可以衔接和映射到一个ECU结构之上。此外,它方便了OSEKtime/OS等时刻触发操作体系的使命激活时刻行为的仿真。集群、主机、使命和衔接是在MATLAB/Simulink环境下进行规划和仿真的。最终,整个规划与DECOMSYS::DESIGNER产品完成了无缝集成,可以与FlexRay xCDEF规划数据仓库进行互动。
Vector公司和Cadence公司供给的分布式网络规划处理方案(分别为DaVinci和SysDesign)集成了Simulink/Stateflow的Real-TIme Workshop/Real-TIme Workshop Embedded Coder,由子体系发生代码,并将它们映射到结构上进行验证。
产品代码生成 模型经过验证而且收效之后,就该发生代码了。运用编译器时,这个进程是简略的。这儿存在着各种不同的优化设置和用户装备选项。要害之处在于坚持代码的高效、准确并与原有的代码或其他东西进行集成。另一个关键是坚持代码相对框图的可追寻性,以便进行查看和验证。
图6:图3中电源办理规划的测验掩盖
1. 代码追寻和查看
图7显现了一个主动链接的HTML陈述。当开发人员挑选代码中的求和模块时,它将把该模块在框图中进行高亮显现。
图7:代码回放
2. 嵌入式方针集成
图6*中的运用运用了速率转化模块。不过,它与商用RTOS之间也存在着直接的联络,包含VxWorks 和各种OSEK产品。如图7*所示,还需求集成设备驱动程序。
3. 硬件在环测验
操控器树立起来之后,就可以在环路中运用实时设备模型来履行一系列开环和闭环测验了。有一种测验仅触及处理器,称作“处理器在环”测验。另一种测验运用实践树立的ECU硬件,叫做“硬件在环”测验。在这两种测验中,都运用设备模型来对物理操控器进行测验。经过这一系列测验(或许与需求验证中所用的是同种测验),操控器有必要看来关于顾客是可以承受的。
4. 集成组件
在开发进程中,大部分软件规范都要求需求追寻才能,这或许源于其他需求东西。此外,还需求软件装备办理(SCM)来对开发进程中的各种工件(arTIfact)进行存储、版别保护和查找。由陈述生成东西发生的文档将保证办理者、顾客和供货商可以看到模型。SCM的接口如图8*所示。
图8:器材驱动模块库
本文小结
当整个软件工程化进程行为得到支撑时,将会推进软件的前进。可是,只是进行部分的、四分五裂的改善是缺乏够。本文介绍了根据模型的规划和产品代码生成的一个完好的软件工程化结构,而且还给出了详细的办法和东西,意在标明它并非只是是一种理论,而是既有用又有用。