0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Vector DaVinci Team解决方案实现AUTOSAR Classic ECU软件开发

Vector维克多 来源:Vector维克多 2024-09-13 11:23 次阅读

当下ECU软件开发的挑战

随着软件技术的发展,车辆的开发过程从硬件主导转变为软件定义汽车(SDV),软件开发在汽车的开发过程中扮演着举足轻重的角色。车辆E/E架构由原先的各ECU只负责单一功能的分布式架构,转变为高性能计算单元(HPC)和区域控制单元(Zonal ECU)分工协作的架构。因此,ECU的软件功能越来越多,越来越复杂。ECU的软件开发,也将引入不同部门、不同公司的更多项目开发人员的协作。在ECU软件开发变得更加复杂更加紧密协作的同时,软件的版本迭代周期也变得越来越短。

传统的工作流程和开发过程难以满足这些要求,因此以DevOps为导向的持续集成方法正成为新的趋势。然而,由于AUTOSAR Classic项目的单一工程结构,实现AUTOSAR Classic ECU软件开发的持续集成并不是一项容易的任务。根据项目的部署和开发过程,可以观察到以下三种方式及挑战。

1.1 基于功能开发中的合并冲突问题

将项目中各成员的增量(设计、配置和实现)合并是一个重大挑战,特别是基于各功能团队独立开发的模式。对于AUTOSAR Classic项目(图1-1),基于功能的开发方式意味着项目成员开发应用软件(SWC),并自行将其集成到基础软件(BSW)中。这种方法可以应用于独立完整的SWC,也可以应用于与其他项目成员协作开发的SWC。

wKgaombjsJWAaR84AACnzQmpA7c483.jpg

图1-1基于功能的开发方式

1.2 基于组件开发的集成滞后问题

另一种方法是将工作角色划分为项目内更专业的角色,这里定义为基于组件的开发方式(图1-2)。在这种项目开发方式中,有专注于SWC的应用开发人员,以及一个软件集成团队负责配置BSW,并将SWC和BSW进行集成。

wKgaombjsJWAcM8oAAC7w46Oe2k858.jpg

图1-2基于模块的开发方式

在这种情况下,应用开发人员既无法访问BSW的配置,也无法使用工具将SWC与BSW集成。相比于基于功能的开发方式(每个项目成员可以独立处理自己的功能),在基于组件的开发方式中,应用开发人员依赖于软件集成团队。

wKgZombjsJWAEKDEAACkUa5MT-A837.jpg

图1-3基于模块的开发方式的集成流程

这种方法的好处是减少了合并问题,缺点是集成的总时长增加了。软件集成团队只能在应用开发人员完成他们的工作后才开始集成,而且集成必须根据软件集成团队的可用时间进行安排。据应用开发人员的反馈,许多人等待他们的SWC与BSW集成的时间在1到4周之间,导致验证延迟,发现问题延迟,最终可能会危及项目的里程碑。图1-3描述了这种集成流程。

1.3 手动集成中的重复工作问题

在传统的基于DaVinci Configurator Classic GUI的工作模式中,将SWC与BSW集成需要许多手动步骤(图1-4)。

wKgZombjsJWALzi8AACh_A2wcqg566.jpg

图1-4手动集成步骤

首先,需要打开DaVinci Configurator Classic并将SWC加载到项目中。接下来,针对每个 SWC需要执行以下重复的步骤:

手动配置RTE,例如将Runnable映射到Task,将NvSWC连接到对应部分,创建或调整内存块,以及添加数据映射;

配置完成后,需要验证配置,并解决可能存在的问题。

在SWC和Runnable数量庞大的大型项目中,这种重复的集成活动将非常耗时,并且会花费大量人力。因此,手动集成步骤的自动化实现,对缩减项目集成时间,降低集成的人力成本,加快版本发布,都能带来极大的好处。

如何解决这些挑战?

上述挑战,使得ECU的软件开发过程变得繁琐,且迭代周期变得滞后。为了应对这些挑战,DaVinci Team提供一种分布式开发团队高效协作的解决方案。基本概念如下:

SWC和BSW解耦;

前移集成决策(例如,Runnable和Task的映射、端口映射、数据映射或NvM集成决策),以便于SWC开发人员能够自行将SWC与BSW集成;

提供一个自动化Pipeline,自动执行SWC与BSW集成的步骤。

结合支持自动化的工具,基于定制的持续集成Pipeline,工程师能够独立工作,并省去大量的重复工作。

2.1 基于组件开发的集成滞后问题

使用DaVinci Team,可以通过不同的方式组织项目,从而显著解决前文提到的这些挑战。首先是拆分项目(图2-1)使得SWC与BSW解耦并将BSW定义为Root Configuration。

对于优化工作流程至关重要的一步是移除RTE并为SWC添加集成指令(Integration Instruction)。这完全避免了RTE的合并,解决了合并项目增量时经常遇到的冲突问题。

wKgaombjsMmAHFlwAAC4g15rNKM865.jpg

图2-1DaVinci Team工作流程

关于SWC,需要由SWC开发人员将其分解为App Package。这种分解的最大好处是限制合并冲突,并通过Instruction文件来管理App Package,从而实现持续集成。

在此背景下,App Package定义如下:

SWC组件(ARXML)

源代码或库文件

Instruction文件(Task Mapping、Port Mapping、Data Mapping等JSON文件)

wKgaombjsMmAJrFUAAAsGOqGwvU207.jpg

图 2-2 示例App-Package

图2-2显示了一个示例App Package。这些JSON格式的Instruction文件描述了RTE应该如何构建(下一章中将详细说明)。

尽管项目被拆分成多个包,用户仍然可以自由选择他们喜欢的开发方法。这只是一个在仓库中组织包的问题:包含所有包的单一仓库(适用于基于功能的开发方法)或创建多个仓库,每个仓库包含单一的包(适用于基于组件的开发方法)。

2.2 前移集成决策

App Package作为DaVinci Team的输入,包含了JSON格式的Integration Instruction。为了在不同角色之间实现高效协作,也可以为整个项目定义全局集成指令(Global Integration Instruction),不同集成角色将使用不同类型的Integration Instruction。

>显式映射

这种类型的Integration Instruction可用于明确定义映射关系。例如,在Task映射的示例中,可以定义哪些runnable应该映射到哪些Task。如图2-3所示,runnable0和runnabl1需要映射到task0,并且在JSON文件中列出了runnable的属性(以runnable0为例,runnable0在swc0中,具有schedulePoint和activationOffset的属性)。

wKgaombjsOGAd05yAAAx4bV2Mh8621.jpg

图2-3显式映射

>基于规则的映射

也可以使用基于规则的映射方式,如图2-4所示,是一个包括了不同规则的Instruction文件。首先定义应用规则的Task(task0),然后指定触发类别(周期、初始化或其他),接着是触发条件(周期:100ms),最后列出应用此规则的SWC(这里是swc2)。

wKgZombjsOGAfl-bAAAaZRIGbPM298.jpg

图 2-4 基于规则的映射

>自动映射

这个功能可以在配置文件中配置为启用或禁用。特别是在项目早期阶段或用于原型设计时,自动映射可以在不需要Integration Instruction的情况下获得符合AUTOSAR标准的映射。这个功能旨在作为一个补充解决方案,生成的配置应该由开发人员进行评估或优化。

除了Task映射之外,还有其他类型的Instruction,如时序顺序约束文件(Execution Order Constraint)和NvM集成Instruction,还可以为端口映射(Port Mapping)和数据映射(Data Mapping)提供Integration Instruction。

>全局集成指令

全局集成指令很多情况下,中央集成团队可能仍然希望监督集成决策,这可以通过提供Global Instruction来实现。这些Global Instruction具有与App Package相同的格式和映射指令类型,但具有更高的优先级,并且会覆盖App Package中的指令。

2.3 用于自动集成的Pipeline

该Pipeline基于Gradle构建系统实现,并且项目中每个成员都可以使用。无论是更改SWC还是更改BSW的Root Configuration,都会以确定性的方式执行相同的集成步骤。根据这一理念,每个开发人员都可以轻松集成ECU软件。

DaVinci Team可以在本地或服务器上运行。在服务器场景下,对代码仓库的提交可以触发Pipeline的集成动作,例如通过Jenkins这样的构建服务器进行控制。这使得SWC开发人员可以独立于中央集成团队工作。在本地场景下,可以通过命令行触发Pipeline的集成动作。前文描述的在DaVinci Configurator Classic的GUI中的重复手动步骤(见第1.3节),现在可以完全自动化处理。如图2-5所示,集成Pipeline被触发后将自动执行图中灰色的集成步骤。

wKgaombjsOKADQ1KAABmof7hiKg529.jpg

图2-5 自动集成步骤

自动集成步骤如下:

1.准备步骤:

a. SIP被复制到执行主机(如有必要)

b. Root Configuration和App Package被复制到执行主机

2.执行DaVinci Team自动化操作:

a. SWC类型被实例化

b. 通过NV data port配置文件,生成NvSWC

c. 基于集成指令(如Port Mapping、Data Mapping、Task Mapping等),生成RTE

d. 初始化未使用的SWC端口

3.输出步骤:

a. 生成模块

b. 生成源码

c. 编译

d. 打包工程

集成ECU软件(包括SWC、RTE和BSW)完成后,输出文件包括.elf、.c/.h和.dpa,同时还包括执行Pipeline期间的操作报告。值得一提的是,DaVinci Team支持vVIRTUALtarget项目以及Real Target平台,无论开发人员是基于vVIRTUALtarget或是实际ECU验证,都能通过DaVinci Team集成软件并生成相应的目标产物来支持后续的验证工作。

集成后的结果可以上传到类似Artifactory的二进制数据管理系统,以便开发人员下载集成版本。然而,集成结果不需要存储在像Git这样的源代码管理系统中,后者更适合用作开发人员代码版本管理的工具。这种集成过程通过动态执行,可以有效避免RTE的合并问题。

自动化Pipeline还可以通过添加自定义扩展来进行定制,这使得工具专家可以进一步创建适配于项目工程的自动化工具脚本,并扩展CI/CD Pipeline。

总结

当今的ECU软件开发正逐步转变,以应对日益增加的软件功能、更多的协作以及实现更短的发布周期。然而,采用DevOps方法并实现持续集成的自动化会面临诸多挑战,特别是由于AUTOSAR Classic项目的串行开发特性。面对这些挑战,Vector基于DaVinci Team工具,为软件开发人员提供可行的解决方案:

挑战:不同软件开发人员在同一项目中的SWC和BSW配置有不同的实现,合并这些不同的实现是一个重大的挑战。

解决方案:通过移除RTE,来解耦SWC和BSW,极大程度地避免了合并时的冲突问题。这个解决方案在第2.1节中有详细描述。

挑战:按计划进行的SWC集成时间过长,导致延迟发现问题,这可能会危及项目的里程碑。

解决方案:将集成决策前置(例如Runnable和Task的映射、端口映射、数据映射或NvM集成决策),以赋予SWC开发人员自行集成SWC与BSW的能力。这一概念在2.2节中有详细描述。

挑战:将SWC集成到BSW中通常涉及许多手动步骤,违背了敏捷开发的原则。

解决方案:DaVinci Team使用自动化Pipeline,可以自动执行SWC和BSW集成过程中的手动步骤。这个自动化Pipeline在2.3节中有详细描述。

Vector通过DaVinci Team提供解决方案,以实现敏捷和高效的AUTOSAR Classic ECU软件开发。工程师们可以通过基于多种工具的自动化Pipeline来独立工作。这一自动化过程可以简化大部分重复的工作步骤,避免集成过程中的冲突问题,集成时间滞后问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件开发
    +关注

    关注

    0

    文章

    606

    浏览量

    27324
  • AUTOSAR
    +关注

    关注

    10

    文章

    350

    浏览量

    21453
  • ecu
    ecu
    +关注

    关注

    14

    文章

    877

    浏览量

    54384
  • Vector
    +关注

    关注

    3

    文章

    54

    浏览量

    8547

原文标题:DaVinci Team | 助力CI环境下的AUTOSAR Classic ECU 软件开发

文章出处:【微信号:VectorChina,微信公众号:Vector维克多】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ECU电控软件开发及测试介绍

    本文重点介绍符合AutoSar架构的应用软件开发、MBD开发模式下的软件质量评估与优化方案、复杂场景下的
    的头像 发表于 09-26 14:25 3202次阅读
    <b class='flag-5'>ECU</b>电控<b class='flag-5'>软件开发</b>及测试介绍

    Autosar软件开发技术概述

    AUTOSAR是由全球汽车制造商、部件供应商及其他电子、半导体和软件系统公司联合建立,各成员保持开发合作伙伴关系。自2003年起,各伙伴公司携手合作,致力于为汽车工业开发一个开放的、标
    发表于 12-26 10:34

    如何购买AUTOSAR软件

    >>>点我返回总目录目录前言购买联系人工程和ECU信息硬件层系统相关模块诊断模块内存模块1. 前言AUTOSAR的模块繁多,且价格不菲,一般项目购买AUTOSAR时都是慎之又慎。然
    发表于 07-23 08:33

    AUTOSAR架构深度解析及开发指引 精选资料分享

    (Virtual Functional Bus)的实现,隔离了上层的应用软件层(Application Layer)与下层的基础软件(Basic Software),摆脱了以往ECU
    发表于 07-28 08:54

    ECU/MCU软件开发

    汽车电子技术——ECU/MCU软件开发1. ECU/MCU软件开发知识储备1.1 ECU/MCU相关基础知识1.2 C语言编程知识1.3 外
    发表于 09-10 08:13

    AUTOSAR的相关资料推荐

    AUTOSAR基础篇之EcuM_wto9109的博客-CSDN博客【AutoSAR】【EcuM】ECU状态管理专注汽车软件开发AutoSAR
    发表于 01-27 08:25

    基于OSEKturbo的电控柴油机ECU软件开发实现

    采用基于OSEKturbo的模块化方法设计电控柴油机ECU软件开发框架。在此框架下进行了ECU软件开发,并分析目标代码的可调度性。实验证明采用这种
    发表于 04-21 22:01 68次下载

    基于AUTOSAR规范的汽车ECU软件开发方法

    针对汽车ECU常规开发方法用于整车系统级分析与建模所存在的缺陷与不足,基于汽车开放式系统架构(AUTOSAR)基本理论,首先阐述了AUTOSAR规范的层次化、模块化系统架构及层间接口,
    发表于 07-24 16:40 142次下载
    基于<b class='flag-5'>AUTOSAR</b>规范的汽车<b class='flag-5'>ECU</b><b class='flag-5'>软件开发</b>方法

    基于CANoe和Visual Studio实现Classic和Adaptive AUTOSAR应用层调试

    而无法实现传统调试或测试工作。在面对复杂控制器软件系统时,CANoe可在虚拟环境实现软件系统的调试和测试工作,Visual Studio(简称VS)或许是虚拟环境下进行
    的头像 发表于 03-10 15:47 2352次阅读

    Classic AUTOSAR软件架构和方法论

    随着汽车电子软件规模的不断扩大,Classic AUTOSAR(以下简称CP)的软件架构和方法论已被越来越多的 OEM 和供应商认可。与此同时,CP 也面临着巨大的挑战,无法满足汽车对
    的头像 发表于 05-24 17:12 2958次阅读

    AUTOSAR软件开发环境之EB tresos Studio简介

    EB tresos是一款经典的AUTOSAR软件开发环境,依赖于一致的单一工具环境来通过汽车开放系统架构 AUTOSAR 开发电子控制单元 (ECU
    的头像 发表于 09-19 10:06 8316次阅读
    <b class='flag-5'>AUTOSAR</b><b class='flag-5'>软件开发</b>环境之EB tresos Studio简介

    AUTOSAR软件开发流程简介

    AUTOSAR软件开发流程简介 AUTOSAR软件开发流程是指在AUTOSAR架构下进行软件开发
    的头像 发表于 10-27 15:55 3042次阅读
    <b class='flag-5'>AUTOSAR</b><b class='flag-5'>软件开发</b>流程简介

    Elektrobit已正式推出现成的Classic AUTOSAR和OSEK软件和服务

    Elektrobit现已正式推出现成的Classic AUTOSAR和OSEK软件和服务。无论您的项目大小,我们都能根据您的需求提供可靠且互通的解决方案,同时支持多个汽车制造商规范,并
    的头像 发表于 03-26 10:03 392次阅读

    Vector和HighTec推出基于Rust和AUTOSAR Classic实现安全应用的解决方案

    Vector和HighTec两家公司成功展示了Rust应用程序与基于C语言的AUTOSAR Classic基础软件的集成,这在行业内还属首次。这样一来,Rust及其优势可以被应用在有最
    的头像 发表于 07-17 14:42 630次阅读
    <b class='flag-5'>Vector</b>和HighTec推出基于Rust和<b class='flag-5'>AUTOSAR</b> <b class='flag-5'>Classic</b><b class='flag-5'>实现</b>安全应用的<b class='flag-5'>解决方案</b>

    9月12日云技术研讨会 | ECU电控软件开发及测试全流程解决方案

    本次研讨会,经纬恒润将结合业务团队多年来在软件开发和测试领域的工程实践经验,分享探讨基于AutoSar架构的应用软件开发、基于MBD开发软件
    的头像 发表于 09-26 14:18 1323次阅读
    9月12日云技术研讨会 | <b class='flag-5'>ECU</b>电控<b class='flag-5'>软件开发</b>及测试全流程<b class='flag-5'>解决方案</b>