汽车电子中的自动编码及测试自动化技术
汽车制造商们一直致力于将工业自动化不断推向新的高度。现在,他们在设计进程自动化领域更花功夫。随着软件复杂性的增强,他们将致力于在不牺牲稳定性的前提下,将研发重心向自动代码生成(ACG)和缩短量产时间转移。在现在这个时代,最复杂的汽车可能拥有超过100个微处理器、超过1亿的编码行数(LOC)。而且目前我们还没看到任何迹象表明:这种不断增长的软件发展势头未来会受到遏制。令人惊讶地是,甚至许多资金短缺的公司,也在试图用机器而不是人类来解决这项技术挑战。其实自动代码生成很久以前就应用于这个行业了,现在看来,它正处于迫切需要突破的临界点。自动代码生成工具,有利于使设计原形进入量产。它们创造了易于维护的编码,也有助于工程师创建复合系统,快速进入市场。
“当人们将注意力转向较大型项目、更复杂的运算法则以及32位浮点芯片时,自动编码将成为主流,”MathWorks公司汽车行业部经理Wensi Jin说;“对于混合动力车相关项目而言,这种方式很适用,不需要和海量的修改代码打交道。”
新兴技术领域对自动代码生成特别感兴趣—绝大多数的设计团队都采用编码发生器,进行免修改编程,比如为主动安全和电动转向系统设计编码。现在,汽车制造商们在高级人机界面上应用此技术的机会也越来越多。
“随着越来越多的汽车采用图形显示和人机界面,汽车工业将采用更多工具手段,集中在图形用户界面设计、在实际设备上生成代码,”微软汽车组项目经理Walter Sullivan说。
自动编码的好处
软件技术日益成为促进汽车制造商差异化的关键—他们可以用软件添加特色和功能。对于动力传动系统而言,编程也很关键。适当的编程能够提高性能参数、燃料经济性,降低排放。自动代码生成的最大好处就是:机器编码比人类快得多。“显著降低开发时间,”天合汽车公司电动转向系统高级软件开发工程师Jon Chalmers说:“虽然开始时比较费时间,但是到项目收尾时,成效明显。“
众多观察家认为:手动编程已经不再能够满足行业需求。多年前,汇编语言就开始给C语言让位了。C语言将编程提高到一个更抽象的高度,让开发者能够在同一时间生成更多软件,错误更小。“基于模型的开发将超越C语言迈出一大步,”dSpace公司北美产品经理DirkFleischer说。“更抽象就意味着更不复杂,”自动代码生成工具,在最大程度上消除了一些普通编程错误,比如上溢。
采用模型和编码器,还有助于提高稳定性。因为软件能够在硬件功能完善前获得严格审核及修改。“在电子设备硬件完备之前,设计师可以将自动编码软件放在dSpace盒子中,进行硬件在环测试,”Chalmer说:“还可以尽早调整运算法则—这样当我们把盒子装到汽车上时,对其性能更有信心。”
业内对此技术的信心越来越强,已经将其进一步扩展到提高编码效率的应用上了。曾经有负面观点称:编码器会使软件无法承受、力不从心,占用更大内存和处理功能,超出汽车制造商的预期。
但是现在情况有所改变。“随着自动代码生成工具日益完善,将逐渐接近手动编码实现的效果,”Vector CANtech公司内嵌软件高级项目工程师Ralf Fritz说。
许多程序员称:机器生成代码的效率仅比优秀的手动编码高几个百分点。对于许多在其新项目上用自动代码生成技术的公司而言,这个结果还算令人满意。
自动代码生成不会产生额外工作。但是像许多新技术一样,开始时比传统项目需要花费的时间长,也需要一定的培训或较高的实践经验。
“设定一项自动编码项目是比较复杂的,”天合汽车公司产品总工程师Richard Blachford说;“先确定一个项目,然后用工具以你想要的确定方式生成代码。在此过程中,还需要一两个对自动编码工具没有抵触情绪的软件专家。”
挑战随之而来
随着自动编码在新领域得到更大应用、在大多数系统设计里应用更广泛,免修改代码也出现了—毕竟,没人喜欢改来改去。将机器生成和手工编写结合,对于那些在这个要求高可靠性工业工作的人而言,是一大挑战。
只要在这个领域工作,就需要提高效率、尽快修改不合适的编码。工具供应商承认:在此领域还有很多工作需要去做,“今天我们所面对的重要障碍,就是在免修改环境下的自动代码生成工具集成,”Etas公司产品市场经理VivekJaikamal说。
还有一些挑战比较简单,只要求尽可能减少耗费时间。但是在复杂领域(比如动力传动和安全领域),数据价值变动频繁,程序员必须想法子找到解决之道。
“必须搞清楚如何实现这样的功能,这相对较简单,”MathWorks公司内嵌应用经理Tom Erkkinen说:“如果拥有大量的、还未清楚传送出去的全球数据,很难洞悉未来走向。”
在设计进程中,设计师们还必须面对一个挑战,即:需要程序员修改软件。通常,程序员能够找到容易修改的方式。但是绝大多数观察家认为:很少有人回应这种需求,通过手动编码修改软件。
“如果要消费者自己修改,有时他们会觉得手动的速度更快,”Vector CANtech公司内嵌软件产品线经理Robert Miller说:“但是当你在整个生命周期内做修改,就需要重新生成代码。如果采用手动生成的话,这些变革通常不会实现。
当编码随着供应链移动时,这点特别重要。如果卖方手动修改编码,当OEM商通过同一种编码器查阅编码时,会改变其中记录的信息,卖方对编码的改动可能丢失。
如果用人工进行此类改动,原模型将不再呈现量产时的代码信息。那么在后续项目中,软件工程师就得不断更新手动修改过的软件,还要决定是否使用原始模块或修改过的原代码。
“如果选择质量已经过检验的修改过的原代码,功能模块的价值将逐步消退,”Etas公司的市场副总裁Jeff Kessen说:“代码生成后的修改,可能不会传递到新项目上。”
修改自动生成代码,会扰乱进程持续性,为重新使用带来障碍。现在,越来越多公司在整个开发周期均采用自动编码软件。“但是还有很多公司不信任自动编码,所以他们用它作原型模块,用手动编码量产,”美国国家仪器公司硬件在环(HIL)和动态测试产品经理Chris Washington说:“随着工具公司日益优化代码生成方式,这种情况将越来越少。”
自动编码带动测试自动化
绝大多数自动代码生成(ACG)的拥趸者,都致力于降低开发时间、增加软件的再利用率。但是对于许多人来说,自动代码生成的一大关键好处,就是可以使开发者更容易地测试,确保耐用性。在建模过程中,自动代码生成使工程师更容易持续验证其理念和完成情况。
“所采用的实施方案越高级,就越能持续验证,”Chris Washington说:“这是获得最大好处的关键。”自动代码生成的好处,会在设计和测试过程中一直保持下去。设计团队希望节省时间,对创造成果再加工。能够采用已经考验证明成效的测试,对于手动设计团队非常重要。
“用自动编码来证明效用,是非常容易的,”MathWorks的WensiJin说:“还能再次利用自己的测试案例,大大提高生产率。”
自动代码生成能够满足的各种需求中,验证软件可靠性是非常重要的一项。消费者希望其寿命能够远超其他消费类产品。在这个汽车开始决定乘客生死的时代,性能可靠有效的软件,意义非常重要。“对于安全类系统,我们更关注验证进程,而机器生成的代码非常好用,”MathWork公司内嵌应用经理Tom Erkkinen说。
自动代码生成还有一个好处,就是使工程师团队的工作更轻松,即使没有在技术层面产生重大影响。它还能提供许多程序记录,为开发商提供进程报告。“自动记录能够减少检查的麻烦,”VectorCANtech公司Steve Traicoff说。
页:
[1]