详解汽车软件集成与分支管理

原创 水轻言 2024-09-25 07:00
本文摘编自《智能汽车电子与软件:开发方法、系统集成、流程体系与项目管理》,机械工业出版社出版,经出版方和作者授权发布,转载请标明文章来源。

首先,我们还是将汽车软件放在整车系统下来看。因此,我们会分离出3个层级的集成:

  • 软件组件集成。
  • 软件向硬件集成。
  • ECU向整车集成。



1

软件集成与分支划分


简单来说,软件集成就是创建一个边界明确、质量可靠的完整软件包。再扩充一些的话,就是基于源代码管理工具和分支管理策略,针对不同的单元(如.c或.h文件)逐级进行集成,并将相关的辅助文档、集成测试、配置文件等配置项进行配置管理。



1.1  “分支”的概念


由于汽车软件的平台化需求很高,所以,我们一般会进行“开发分支”和“交付分支”的区分。


  • 开发分支侧重于维护新特性的上线和通用性技术方案的导入

  • 交付分支则关心的是基于特定项目要求(如标定参数、项目配置参数、bug修复等)的释放。


二者的区分也可以让“开发的技术完善性”和“交付的时间及时性”不至于直接冲突和互相干扰


一般而言,软件集成的主要任务是识别、确认不同分支之间的公共组件,定义哪些组件应该从一条分支摘取到另一条分支上、哪些组件的变更需要单独释放以及哪个软件基线最终能够被用于哪个配置的交付上。



1.2 具体的集成


集成的策略取决于项目或平台释放的目的,而这又来源于项目的整体考量,所以,集成任务是需要项目经理类角色驱动的。简要集成流程如图1所示。


 

图1 软件集成简要流程


1.2.1 集成输入


尽管邮件也是一种输入,但对于繁杂的集成任务来说,通常最好使用ALM工作流类的工具来支撑,或是bug,或是变更,或是新特性需求,都可以通过相关工作项来驱动集成,比如,输入需求基线、变更范围、版本规则、工件、上一版本软件基线、交付日期等。


实际上,良好的集成更多来源于管理


1.2.2 编译、测试、打包


集成工程师在任务驱动下,去完成相应的源代码编译和相关错误清除,并完成必要的接口、资源消耗、冒烟等静动态集成测试。最后,根据预定规则,完成可执行文件、配置信息、测试报告、架构模型、设计文档、遗留问题、释放清单等的打包释放。此时,一个常规的集成任务就完成了。


1.2.3 软件配置管理


不管是集成组件选择,还是文件打包,其实都可以归属为配置管理这个大的概念,第3章我们从项目层面解释了配置管理,这里进入软件包里看,主要讲两部分。


(1) 软件版本号

软件的名字,也就是软件版本号,这是我们日常交流的主体对象,最基本的逻辑是一个版本号唯一对应一版代码


理论上,我们用V1、V2、V3也可以去描述软件,但为了增加软件的辨识度、可见性和交流的便利,我们会为软件版本号增加更多的信息,比如,项目名、车型名、客户名、硬件类别、芯片类别、架构类别、集成序列号、标定版本号、软件阶段(签名与否、适用工厂与否、ABCD级别等)等。


(2) 细化的分支概念

我们再细化讨论下分支的概念。注意,这是一个逻辑概念,并不真实存在。通俗理解,分支就是把组件的变更放在这个软件包里,而不是另一个,也就是不同的组件版本组合。


另外,前面我们说过可以把分支大体分为“开发分支”和“交付分支”。进一步地,二者都可以继续划分为更细化的分支概念,如图2所示。


 

图2 软件分支类型


1) 开发分支

“开发分支”可以细分为平台开发分支特性开发分支特定项目开发分支


  • 平台开发分支

平台开发分支是我们的平台化软件,是平台开发人员维护的、最具普适性的基础软件,是所有其他分支的源头,所有的变更、修改、提交应该严格审慎。如图3所示。


 

图3 平台开发分支示意图


  • 特性开发分支

特性开发分支一般是,经过普遍分析后,认为有必要导入到平台的特性开发或复杂bug修复,而且,这样的变更需要一定的周期和工作量。


为了避免影响到平台软件的日常维护,这时就有必要单独拉出来分支进行开发。在开发过程中,需要定期地将平台开发分支的变更进行同步,并在新特性释放后,合入平台开发分支,以保证平台开发分支的最新状态和完整性。如图4所示。


 

图4 特性开发分支示意图


  • 特定项目开发分支

对于特定项目开发分支来说,有些功能或特性的变更需求来源于特定项目,但需要动到平台开发分支,而由于其特殊性,又不需要永久合入平台开发分支的平台软件里,再加上二者团队的差异性,这时,就可以单独拉出来一个分支去完成这部分变更,但最终不会合入平台软件,而是合入到交付分支里。如图5所示。

 

图5 特定项目开发分支示意图


2) 交付分支

那么,“交付分支”也可以继续分为项目主干分支项目释放分支等。


接着看交付分支,交付分支的意义整体在于,既能基于平台化软件加速开发,又能保持一定的项目释放独特性与灵活性


  • 项目主干分支

对于项目主干分支来说,道理与平台开发分支类似,对于特定的车型类别或客户群项目,往往有更相近的需求,可以维护一条项目交付层级的“平台”软件


这条分支由项目团队精心维护,同时做好与平台的同步更新,保证其是一条构建和测试成功的“绿色“分支。如图6所示。


 

图6 项目主干分支示意图


  • 项目释放分支

而对于更多的项目变体,即项目释放分支,就能够以这条“绿色”的项目主干分支为交付基础,而高效地从中摘取软件基线,并完成自身的配置,比如,传感器、MCU、零件号等配置参数。如图7所示。


 

图7 项目释放分支示意图


值得说明的是,以上仅给出了一种分支拆分的思路,基本逻辑是平台化和定制化的权衡。实际上,有些产品与项目甚至不需要分支,只在一条分支上开发下去,具体项目需根据软件的成熟度和复杂性以及变体的多寡等来综合考虑合适的分支策略。




2

软件向硬件集成


在完整软件交付出来之后,我们要做的就是将软件刷写到ECU硬件中(具体刷写方式可能通过OBD口或USB或直接连接芯片针脚,或者通过远程OTA),这其实就是我们所要讲的系统(软硬件)集成


理论上讲,集成都是通过接口来完成的,系统集成也就是通过软硬件接口来进行,具体表现就是物理的芯片引脚和逻辑的传输数据的软件接口。如果开发流完整的话,这些接口应该在系统架构的部分进行过定义。


如果把系统集成再细分一些,我们再往上走,会有电路板与机械外壳、接插件、屏幕等的集成,只不过这步集成更多有着机械装配的意味,落在现实工作里就是打一批样件了。


当然,我们都知道一套完整的电控系统一般会包含传感器、ECU和执行器,处于中间的ECU是我们前述两步集成的结果。但传感器和执行器往往由外部其他组织提供,如果从系统的视角考虑,我们通过线束支撑的接口来完成这一级别的集成也是必要的。至少,内部开发中经常需要这样的环境来验证ECU的功能。




3

ECU向整车集成


整车集成基本是属于OEM的工作范围,也是它们的核心竞争力所在。


这一步的系统是从整车来看的,比如,驱动系统、刹车系统、转向系统、被动安全系统、照明系统、辅助驾驶系统等。


对于某一个电子控制器来说,在所有内部集成和验证完成后,必不可缺的一步是,在整车环境中完成布置确认、模态分析、传感信号校验、电子对手件联调、产线确认以及EMC、振动、冲击、水淋、盐雾、高低温等一系列的考验


对于软件来说,尤其要考虑对手件联调,越来越多的电子功能需要多模块协同,最常见的诊断、通信问题就是该环节频繁识别出来的。另外,很多在整车层面的属性性能也是需要在整车环境下进行软件标定匹配的。在汽车行业里做软件,要意识到,所有的代码其实都是最终服务于整车里的表现


但是,我们也要知道,我们并不期望在整车集成环节解决软件问题。毕竟,一台试验车动辄几十上百万,有些试验甚至是整车破坏性的,整车试验的成本通常都会比较高。当软件问题从开发团队一路逃逸到这个环节时,往往会带来比较大的成本。


关注公众号,点击公众号主页右上角“ ··· ”,设置星标,实时获取公众号“水轻言”最新文章。




延伸阅读:

以上是分享的节选内容,更多精彩内容,可以通过以下链接购买本书(全网正版最低价):

水轻言 致力于汽车软件研发管理。
评论
  • 一、前言Java 除了广泛用于后端开发与跨平台服务,也支持图形用户界面(GUI)的开发。对于需要构建桌面应用、工具软件、图形交互系统的场景,Java 的 GUI 框架(如 Swing、JavaFX)提供了丰富的组件和事件机制。本文将带你入门 Swing GUI 开发,并通过一个实战项目,构建一个简单但完整的 Java 桌面应用。二、Java GUI 技术体系概览Java 支持多种 GUI 开发方式,最常见有:技术特点AWT最早的 GUI,依赖本地组件,跨平台性差SwingAWT 的增强版,组件完
    小菜菜编程 2025-06-10 23:21 6038浏览
  • 一、前言在当今互联网应用中,网络编程是 Java 开发者必须掌握的一项关键技能。无论是构建聊天系统、文件传输、物联网交互,还是服务端 API 通信,Java 的网络编程提供了强大的支持。本文将从基础的 Socket 通信开始,逐步深入到多线程服务器开发,并提供图文实例帮助理解。二、Java 网络通信的基础概念Java 网络编程主要依赖于以下核心类:类名用途Socket客户端通信套接字ServerSocket服务器监听套接字InetAddressIP 地址解析与封装DatagramSocketUD
    小菜菜编程 2025-06-10 23:20 5837浏览
  • 1.03" CVBS 驱动方案 Micro-OLED显示技术因其高分辨率、高亮度、低功耗和小体积的优势,已成为微显示领域的首选方案。针对Micro-OLED在光学瞄准、夜视成像、工业检测、安防监控及户外探索等终端应用,上海冠显光电(TDO)设计开发了1.03"CVBS驱动方案。这一方案能够实现CVBS信号向Micro-OLED显示屏的稳定转换和显示控制,与市面上大多数光学瞄准应用终端无缝对接,满足行业对高质量、高性能显示解决方案的迫切需求。方案组成型号:TV103F1CSFS02&nb
    冠显光电MicroOLED代理视涯 2025-06-11 16:48 4608浏览
  • 一、前言文件处理是 Java 应用程序中最常见、最实用的功能之一,无论是读取配置文件、处理日志、批量处理 CSV,还是备份、压缩文件,都离不开对文件的高效操作。本篇文章将系统讲解 Java 文件操作的各个方面,包括文件读取、写入、复制、删除、压缩等,并提供实际代码示例。二、Java 文件与目录的基础操作2.1 使用 File 类检查文件属性java复制编辑import java.io.File; publicclassFileCheck { publicstaticvoidmai
    小菜菜编程 2025-06-10 22:34 5271浏览
  • 检测电磁铁性能需要系统性地考察多个关键指标。首先通过吸附测试评估磁力强度,可定量测量最大吸附重量或定性观察衔铁动作的灵敏性。电气参数检测包括测量线圈电阻值是否正常,以及通电后电流是否稳定在额定范围内。动态性能方面需测试响应时间和释放特性,记录通电吸合与断电分离的时效性。环境适应性验证要模拟电压波动和高温条件,观察磁力稳定性变化。安全检测环节必须检查绝缘状态和接线可靠性,运行中注意异常发热、异响等故障征兆。日常维护应保持磁极面清洁,定期复测线圈电阻。专业应用场合建议使用磁通计等仪器精确测量磁场参数
    锦正茂科技 2025-06-12 11:20 3821浏览
  • 磁学为啥神秘?1.磁学应用不直观。2.电感器使用量相对少。3.深度阐述书籍资料比较少。主要内容:第一章介绍磁学的基础概念,电磁感应,磁心损耗,气隙,趋肤效应,临近效应。第二章介绍磁性元件 电感原理与制造工艺,磁珠,变压器原理。第三章介绍应用电路 LC滤波器,谐振电路,射频中电感和变压器的应用,开关电源中变压器的应用。第四章介绍磁能的形态及转换,主要讲磁能存在哪里?转换过程,转换条件。第五章简介电感储能的相关问题,纠正常识性错误。第六章介绍变压器的常识性知识,如功率与初级匝数的关系。本书的阐述角度
    cow74562014 2025-06-10 22:41 264浏览
  • 夸克发布首个高考志愿大模型,为考生提供了智能化、个性化的志愿填报服务,这一创新对考生群体和传统报考机构产生了截然不同的影响。对于考生而言,夸克高考志愿大模型无疑是一大利好。该模型整合了教育官网、省招生办官网等权威信息源,确保数据准确可信,同时将高校毕业生就业信息、产业趋势等纳入知识库,为考生提供更全面的参考。通过深度搜索、志愿工具和志愿报告三大服务,夸克能精准理解考生需求,提供从专业适配性、地域优势到就业前景的全方位分析,并生成专属志愿报告和多种填报策略。这种智能化、个性化的服务大大减轻了考生和
    curton 2025-06-12 17:24 4036浏览
  • 七年前买了个远程控制开关,想想那个时候应该物联网才兴起的时候吧。如今因为控制麻烦且经常出现连接掉线问题,于是给淘汰了。这个设备我是拿来控制吊灯,特别麻烦的是,当晚上关灯后,会有一点灯点亮着,掉线的时候还会闪,想想睡梦中醒来往天花板一看,一个东西在那闪多吓人,关键还是绿色的。而且二次匹配需要打开灯罩,按那个黑色的按钮才能重新配网。种种原因,让我今天给他拆了,结构也简单,拆开外壳就只有一个主板正面正面电路看起来还是很简单的:220V经过整流桥(背面U1),通过变压器将市电转化低压直流电一个继电器,这
    二月半 2025-06-12 14:32 191浏览
  • 电路图GPIO的中断类型相关API函数应用举例总结电路图在ESP32中内部有完整的控制电路,比如上下拉以及滤波器等,所以我们这里可以直接用一个微动开关连接到地。GPIO的中断类型GPIO_INTR_DISABLE不使能中断GPIO_INTR_POSEDGE上升沿触发GPIO_INTR_NEGEDGE下降沿触发GPIO_INTR_ANYEDGE上升沿和下降沿都触发GPIO_INTR_LOW_LEVEL低电平触发GPIO_INTR_HIGH_LEVEL高电平触发在GPIO中断应用中,一般使用上升沿或
    二月半 2025-06-12 10:11 165浏览
  • Micro OLED作为下一代微显示技术的核心,广泛应用于AR/VR等HMD、汽车HUD、电子枪瞄、以及工业和医疗等高分辨率近眼显示领域。当前,Micro OLED的市场规模持续扩大,商业化进程不断加速,终端应用厂商急需加快产品验证步伐,抢占市场先机。为助力加速设计和开发,冠显光电推出了TV系列评估套件,帮助客户快速启动相关应用开发,提升验证效率,推动产品从概念到市场的快速落地。冠显0.39" Micro OLED显示解决方案主要包括0.39" 显示屏、FPC及驱动板,是TV系列中最小巧紧凑的一
    冠显光电MicroOLED代理视涯 2025-06-12 09:54 3925浏览
  • 在自动驾驶时代奔涌向前的路上,仿真测试早已不再是可选项,而是验证智能驾驶系统安全性、鲁棒性和泛化能力的刚需,如何提升仿真测试的保真度已成为无法避免的重要话题。这正是“数字孪生”出现的时代背景。本文为大家详细介绍如何用传统与前沿结合的数字孪生构建流程,再配合3DGS 的神经网络重建技术,为自动驾驶仿真测试注入真正的“现实之眼”。一、从点云到高精地图的重建依托独家的aiData工具链与aiSim仿真平台,本文建立了一套高精度数字孪生地图构建流程,已经广泛应用于布达佩斯 Kolosy广场、ZalaZo
    康谋 2025-06-11 14:13 225浏览
  • 近年来,随着全球能源转型和清洁能源行业的快速发展,户用光伏系统的装机量正呈逐年上升态势。同时,为了应对居民用电价格的显著上涨以及峰谷电价差异的持续扩大,在户用储能单元可大幅降低用电成本的背景下,各国正在大力扶持光伏配储政策,户用光储系统已逐步成为普通家庭应对电价波动与电网停机的经济之选。据高工产研储能研究所(GGII)统计数据显示,2024年全球户用储能装机规模约14GWh,GGII预计2025年全球户用储能市场规模将以25%的增速发展,装机规模将达到17.5GWh,整体增长趋势显著。而这也从侧
    华普微HOPERF 2025-06-12 14:16 307浏览
  • 一、前言多线程是 Java 的强大特性之一,它允许程序并发执行多个任务,提高资源利用率和响应能力。无论是 Web 服务、高性能计算、文件下载、图像处理,还是后台任务调度,多线程都是提升效率的利器。本篇文章将深入介绍 Java 多线程编程,包括创建线程、同步控制、线程通信、线程池与实际案例。二、Java 创建线程的三种方式2.1 方式一:继承 Thread 类java复制编辑publicclassMyThreadextendsThread { publicvoidrun() {
    小菜菜编程 2025-06-10 22:35 5463浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦