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

    文章

    586

    浏览量

    27276
  • AUTOSAR
    +关注

    关注

    10

    文章

    339

    浏览量

    21355
  • ecu
    ecu
    +关注

    关注

    14

    文章

    852

    浏览量

    54211
  • Vector
    +关注

    关注

    3

    文章

    53

    浏览量

    8518

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

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

收藏 人收藏

    评论

    相关推荐

    瑞萨电子推出完整的集成开发环境, 无需硬件即可实现ECU级车用软件开发

    全新集成软件开发环境支持多芯片ECU, 缩减开发时间和后期设计修改工作量   2022 年 9 月 28 日,中国北京讯 - 全球半导体解决方案供应商瑞萨电子(TSE:6723)今日宣
    发表于 10-08 10:21 764次阅读
    瑞萨电子推出完整的集成<b class='flag-5'>开发</b>环境, 无需硬件即可<b class='flag-5'>实现</b><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

    如何开发符合AUTOSAR规范的电机控制器软件

    基于AUTOSAR规范的电机控制器软件开发本系列文章主要介绍如何开发符合AUTOSAR规范的电机控制器软件的详细过程。全系类分为基础篇和实战
    发表于 08-30 08:59

    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 2283次阅读

    Classic AUTOSAR软件架构和方法论

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

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

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

    AUTOSAR软件开发流程简介

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

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

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

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

    Vector和HighTec两家公司成功展示了Rust应用程序与基于C语言的AUTOSAR Classic基础软件的集成,这在行业内还属首次。这样一来,Rust及其优势可以被应用在有最
    的头像 发表于 07-17 14:42 468次阅读
    <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>