车载软件架构 --- 基于AUTOSAR软件架构的ECU开发流程小白篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。

老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:

简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身边有这样灵性的人,一定要好好珍惜他们眼中有神有光,干净,给人感觉很舒服,有超强的感知能力有形的无形的感知力很强,能感知人的内心变化喜欢独处,好静,清静,享受孤独,不打扰别人不喜欢被别人打扰,在自己人世界里做着自己喜欢的事。

时间不知不觉中,快要来到新的一年。2024结束,2025开始新的忙碌。成年人的我也不知道去哪里渡自己的灵魂,独自敲击一些文字算是对这段时间做一个记录。

一、背景信息

汽车ECU作为汽车电子控制系统的核心部件,其开发效率与质量直接关系到整车的性能与可靠性。然而,传统的ECU开发方法在系统级分析与建模方面存在诸多不足,如系统架构不够清晰、模块间耦合度高、扩展性差等问题。因此,引入AUTOSAR规范,以其层次化、模块化的系统架构,为解决这些问题提供了新的思路。

AUTOSAR(AUTomotive Open System ARchitecture)是一个开放且标准化的汽车电子软件架构,旨在提高汽车电子软件的可移植性、可重用性和可扩展性。其系统架构具有层次化和模块化的特点,通过明确的层间接口和模块间通信机制,实现了软件组件的高内聚低耦合。

二、AUTOSAR ECU开发流程总览

AUTOSAR系统架构与标准接口、基本方法与开发流程

1、AUTOSAR系统架构与标准接口

AUTOSAR(Automotive Open System Architecture)即汽车开放系统架构,由宝马、戴姆勒克莱斯勒、福特等主流汽车制造商,以及博世等零部件供应商和半导体、软件公司联合推出。它是一个开放的汽车电子系统架构标准,旨在提供汽车电子系统的标准化和模块化解决方案。

AUTOSAR的架构包括应用层、运行时环境(RTE)、基础软件(BSW)和硬件抽象层(HAL)等组件。其中:

应用层负责实现具体的功能。

-> RTE提供了应用层和BSW之间的接口,是AutoSAR架构中的一个重要组件,负责管理和协调汽车电子系统中的软件组件,包括通信管理、任务调度、事件触发、数据管理和错误管理等功能。

-> BSW提供了一系列的基础软件服务,如通信、诊断、操作系统等。

-> HAL提供了与硬件相关的接口和驱动程序。

此外,AUTOSAR还定义了多种类型的接口,包括标准接口、标准AUTOSAR接口和AUTOSAR接口,这些接口可实现操作系统和RTE、BSW模块和ECU内部之间的函数调用,以及软件组件之间的服务和数据交换。

2、AUTOSAR基本方法与开发流程

AUTOSAR为汽车电子软件系统开发定义了一套通用的解决方案,即AUTOSAR方法论。它描述了从系统层配置到ECU可执行代码的设计步骤,但并未规定要执行哪些活动,也没有定义"责任"和"角色"等。AUTOSAR方法论的开发流程通常包括以下几个步骤:

-> 需求分析:定义系统需求、功能需求以及性能需求,明确系统目标及各个模块的功能,确定软件组件(SWC)的功能,并根据需求编写需求文档。

-> 系统架构设计:设计系统的高层架构,包括硬件和软件组件的结构、ECU间的通信、资源分配等,定义系统架构(如SWC、ECU、通信等),设计BSW、RTE和OS的配置,以及ECU通信协议(如CAN、Ethernet等),并评估系统架构的可行性、性能和成本。

-> 软件组件设计与实现:开发符合功能需求的软件组件,并确保这些组件能够与其他系统模块无缝集成。这包括设计和实现SWC接口、实现业务逻辑和通信协议、开发组件的代码以及集成应用代码与底层软件框架。

-> ECU配置与基础软件配置:根据系统需求和软件组件,配置ECU硬件资源、BSW和中间件。

-> 代码生成与自动化:自动生成BSW、RTE、SWC集成代码,减少手动编码和集成的错误,并自动化测试和验证生成的代码是否符合需求。

-> 验证与测试:验证系统的功能和性能,确保系统符合设计需求。这包括软件单元测试、集成测试、硬件在环(HIL)测试和性能测试等。

-> 系统集成与调试:将所有的软件组件、基础软件和硬件集成在一起,进行调试和性能优化。

-> 功能验证与验收测试:确保系统按预期功能运行,并通过客户的验收测试。

-> 部署与生产:将系统部署到量产环境中,确保产品按计划投入生产。

-> 持续集成与维护:进行版本管理、持续集成,并根据需求进行后续维护。

3、符合AUTOSAR规范的汽车ECU软件开发解决方案

针对汽车电子系统日益复杂、软件代码量急速上升的问题,采用AUTOSAR架构可以显著提高ECU软件的可重用性、可扩展性和互操作性,从而降低开发和维护成本,并促进汽车电子系统的创新和发展。

在符合AUTOSAR规范的汽车ECU软件开发解决方案中,通常会采用一系列的工具和平台来支持开发过程。这些工具和平台包括但不限于:

-> 架构设计工具:如Vector PREEvision、Enterprise Architect、EB tresos Studio等,用于设计系统的高层架构和配置。

-> 集成开发环境(IDE):如Eclipse、Visual Studio等,以及AUTOSAR专用的开发工具,如EB tresos Studio、Vector DaVinci Developer等,用于软件组件的开发和实现。

-> 配置工具:如Vector DaVinci Configurator、EB tresos Studio等,用于ECU和基础软件的配置。

-> 代码生成工具:同样包括EB tresos Studio等,用于自动生成基础软件、RTE、SWC集成代码。

-> 测试工具:如Vector CANoe、dSPACE、EB Assist等,用于系统的验证和测试。

三、AUTOSAR系统架构与标准接口

分层的系统架构传统的汽车电控软件开发是以硬件为中心的,软件严重依赖于硬件平台, 如图所示, 硬件平台的改 变 将 导 致 软 件 维 护 成 本 剧 增。 而 AUTOSAR 的提出, 旨在为汽车电子软件行业提供一个统一的开放的软件架构标准, 以解决传统汽车电子软件可靠性、 重用性低的缺陷。 如图所示, 通过定义标准化的软件功能组件与软件功能组件接口, 将与硬件有关的基础软件进行标准化与平台化, 从而实现上层应用软件和与底层硬件有关的软件 相 互 独 立, 切 实 提 高 软 件 的 更 新 和 升 级能力。

由于 AUTOSAR 提供底层 ECU 抽象, 使得不再因更换 ECU 而需要对上层应用软件进行适应性修改; 用户可以拥有独立于硬件的、 自上而下的以软件为中心的软件平台, 缩减软件的维护成本, 特别是图 AUTOSAR软件与硬件分离

整车厂可以将精力集中放在上层应用程序的开发上, 专注于更有竞争价值的上层功能实现。具体地, AUTOSAR 将运行在底层硬件之上的软件划分为三大层, 即应用层、 运行时环境层与基础软件层, 如图所示。

1、应用层。 应用软件以软件组件(SWC) 的形式进行设计, 每个SWC 都封装一段运行在 AUTOSAR 基础软件架构上的可执行程序, 并具有标准化的应用程序接口(API) , 通过运行时环境(RTE) 进行通信。

2、运行时环境(RTE) 层。 RTE 提供基础的通信服务, 支持SWC 之间的、 以及SWC 与 BSW 之间的通信(包括 ECU 内部的程序调用、ECU 外部的总线通信等) 。 RTE 的思想是提供一个虚拟功能总线(VFB) , 从而允许SWC 请求任意的输入数据, 而不必知道这些数据是从哪个 ECU 传送过来的, 只需要向 RTE 发出请求即可。 RTE 使应用层软件完全脱离于具体的单个 ECU 和 BSW。

3、基础软件(BSW) 层。 BSW 层又被划分为3个子 层: 服 务 层、 ECU 抽 象 层、 微 控 制 器 抽 象 层(MCAL) , 还存在一个特殊的复杂驱动层。 每一子层又划分为不同的功能模块。

服务层分为系统服务、 内存服务、 通信服务等模块。 ECU 抽象层分为板载设备抽象、 内 存 设 备 抽象、 通 信 硬 件 抽 象 与 I/O 抽 象 等。 MCAL 分 为MCU 驱动、 内存驱动、 通信驱动与I/O 驱动等。MCAL 是 BSW 的 最 底 层, 包 含 了 访 问 MCU的驱动。 MCAL 使上层软件与 MCU 分离, 以便应用程 序 的 移 植。 ECU 抽 象 封 装 了 MCAL 以 及MCU 外围设备的驱动, 并且将 MCU 外围设备的访问进行了 统 一, 使 上 层 应 用 与 ECU 硬 件 相 剥 离。

服务层是 BSW 的最上层, 将各种基础软件功能模块以服务的形式封装起来, 供应用层调用。复杂驱动层可以直接访问 MCU, 以实现一些复杂的传感器和控制器操作, 比如喷油控制、 曲轴信号采集等。 复杂驱动层具有重要意义, 首先, 它可以用于实现 AUTOSAR 不支持或者尚未标准化的硬件驱 动; 其 次, 它 可 以 作 为 已 存 在 的 应 用 程 序 向AUTOSAR 过渡的接口。

三、AUTOSAR方法与开发流程

1、SWC(软件组件)在汽车电子开发中的应用

SWC(Software Component)作为汽车电子开发中的核心组成部分,封装了汽车电子系统的各种功能模块,包括应用软件、传感器/执行器、标定、服务、ECU抽象以及复杂设备驱动等。这些SWC通过VFB(Virtual Function Bus,虚拟功能总线)进行交互,共同构成了汽车电子系统的应用软件。

SWC的结构与功能

1、端口与端口接口:

SWC的对外表现形式是一系列的端口(Port)及对应的端口接口(Port-Interface)。

每个SWC都需要定义Port,通过Port和Port-Interface实现SWC之间的通信或SWC与BSW(Basic Software,基础软件)之间的通信。

2、运行实体:

SWC的内部行为通过运行实体(Runnable)表达,每个SWC由若干个运行实体组成, 每个运行实体由一组指令序列构成,与一个特定的RTE事件(RTEEvent)绑定。当绑定的RTEEvent发生时,对应的运行实体就会被触发。

3、功能与数据交互:

运行实体通过Port的数据或操作完成自身的功能,并把结果通过Port对外提供。这种交互通过RTE(Runtime Environment,运行环境)进行,使得运行实体的实现与平台无关,从而SWC也是与平台无关的。

SWC的开发与描述

1、代码实现:

SWC必须提供功能模块的代码实现,即源代码。代码实现可以通过建模工具进行设计并生成代码,也可手工编制。

2、描述文件:

描述文件用于描述SWC的外在属性,包括所使用的端口、端口接口、运行实体及对应的RTEEvent等。描述文件最终以扩展标记语言(XML)文件形式对外提供,方便集成和管理。

SWC的优势与应用

1、可移植性与重用性:

由于SWC与平台无关,因此具有良好的可移植性和重用性。这使得在不同的汽车电子项目中,可以方便地复用已有的SWC,降低开发成本和提高开发效率。

2、模块化设计:

SWC的模块化设计使得汽车电子系统更加清晰、易于管理和维护。开发人员可以专注于单个SWC的开发,而无需关注整个系统的复杂性。

3、支持复杂系统开发:

在复杂的汽车电子系统中,SWC的引入使得系统可以更加灵活地应对各种需求和变化。通过组合和配置不同的SWC,可以快速构建出满足特定需求的汽车电子系统。

SWC在汽车电子开发中发挥着重要作用,它封装了汽车电子系统的各种功能模块,并通过标准化的接口和交互机制实现了模块之间的通信和协作。通过采用SWC,可以显著降低开发成本、提高开发效率,并增强汽车电子系统的可移植性和重用性。

搁笔分享完毕!

愿你我相信时间的力量

做一个长期主义者

相关推荐
程序员侠客行10 分钟前
Mybatis连接池实现及池化模式
java·后端·架构·mybatis
ManThink Technology40 分钟前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络
珠海西格电力科技1 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
QT.qtqtqtqtqt1 小时前
未授权访问漏洞
网络·安全·web安全
bobuddy2 小时前
射频收发机架构简介
架构·射频工程
桌面运维家2 小时前
vDisk考试环境IO性能怎么优化?VOI架构实战指南
架构
半壶清水2 小时前
[软考网规考点笔记]-软件开发、项目管理与知识产权核心知识与真题解析
网络·笔记·压力测试
JMchen1232 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
yuanmenghao2 小时前
Linux 性能实战 | 第 7 篇 CPU 核心负载与调度器概念
linux·网络·性能优化·unix
那就回到过去2 小时前
MPLS多协议标签交换
网络·网络协议·hcip·mpls·ensp