汽车电子架构 | 必备技能一文读懂 AUTOSAR

引言

AUTOSAR 标准(AUTOmotive Open System Architecture,汽车开放系统架构) 是全球最大汽车公司合作的产物。它是汽车行业电气/电子架构的开放式标准,于 2003 年在由汽车原始设备制造商、供应商以及软件、半导体和电子行业其他公司组成的 AUTOSAR 开发合作组织制定。

该标准的目的是提供一套规范,描述基本软件模块,定义程序连接,并在标准化格式的基础上实施进一步开发的通用方法。这种标准化格式可确保该标准适用于不同制造商的车辆,同时也可由这些车辆中使用的不同电子设备制造商实施。

AUTOSAR口号:"Cooperate on standards and compete on implementation." 即"在标准上合作,在实现上竞争"

AUTOSAR 为什么很重要

AUTOSAR之所以如此重要,主要是因为它使得汽车行业能够应对不断增长的车辆复杂性和快速变化的技术需求。

有了 AUTOSAR,就可以开发独立的软件,这些软件可以在不同的系统或 ECU 中转移或使用。因此,它可以适用于不同的车辆、平台或硬件。

以下是AUTOSAR的重要性:

🛵 软件独立性和可移植性: AUTOSAR标准允许开发独立的软件组件,这些组件可以在不同的汽车系统或电子控制单元(ECU)中自由移植和重用。这意味着汽车制造商可以更轻松地在不同车型、平台或硬件配置中使用相同的软件功能,从而降低了开发和维护成本。

🛵 应对车辆复杂性: 当代汽车的复杂性不断增加,每辆车通常包含超过100个ECU,并且每个ECU都执行数千种功能。AUTOSAR通过提供一种统一的软件架构和标准化的接口,使得管理和维护这些复杂系统变得更加容易。

🛵 硬件无关性: AUTOSAR标准的采用意味着软件不再受限于特定的硬件配置。这意味着即使在硬件发生变化时,软件也可以保持不变或者只需要进行最小程度的调整,从而大大加速了新技术的部署和汽车的上市时间。

🛵 全行业标准化: AUTOSAR是由全球主要汽车制造商和供应商共同开发的标准,这意味着它得到了广泛的行业支持和认可。这种标准化使得汽车生态系统更加健壮,并促进了行业内部的合作和互操作性。

因此,汽车制造巨头们迫切需要联合起来,使软件独立于硬件。为了实现这一目标,他们将 AUTOSAR 定为全行业标准,这是软件可重复使用的核心解决方案。使得软件开发变得更加灵活、高效和可持续。

AUTOSAR 三层架构

AUTOSAR 标准采用了三层架构,包括以下组成部分:

🌴 基础软件 (BSW):基础软件是高级软件层所需的标准化软件模块。这些模块包括底层驱动程序、操作系统、通信协议栈以及其他与硬件相关的功能。基础软件提供了与底层硬件通信和控制的接口,使高级软件能够在各种硬件平台上运行而无需修改。

🌴 运行环境 (RTE):运行环境是AUTOSAR架构中的中间件,负责实现软件组件与基础软件之间的通信。RTE提供了一种标准化的通信机制,使得不同的软件组件能够相互交互和通信,而无需了解底层基础软件的具体细节。这种解耦合的设计有助于提高系统的灵活性和可维护性。

🌴 应用层 (Aplication Layer):应用层包含与RTE通信的应用软件组件。这些组件实现了汽车系统的具体功能,例如引擎控制、制动系统、安全功能等。应用层通过RTE与基础软件和其他应用组件进行通信,从而实现系统级别的功能和服务。

这三层代表了 AUTROSAR Classic 平台架构,其重要意义在于实现了电子控制单元 (ECU) 内部和之间的通信。此外,应用软件的开发和使用与平台无关,无需了解下层。

除经典平台外,后来还开发了更新的 AUTOSAR 自适应平台架构 (AP, AUTOSAR Adaptive Platform Architecture) ,与 AUTOSAR 经典平台 (CP, AUTOSAR Classic Platform) 不同的是,在经典平台(CP)中,单个车辆 ECU 静态集成到系统中,并且以后不能更改初始配置,而这种新平台的主要优势是在运行期间将应用程序集成到系统中。

在本章中我们使用经典平台(CP)来解释 AUTOSAR 架构中最重要的部分和元素。

Aplication Layer(应用层)

软件组件(SWC)就像是汽车电子系统中的小任务专家,每个组件都专注于完成特定的任务。它们之间通过端口来进行通信,就好像是电话线一样,端口代表了通信的起点。重要的是,每个端口都属于一个特定的组件,就像每个电话号码都属于一个特定的人一样。

虚拟功能总线(VFB)就像是一个通信中心,负责处理 SWC 之间的通信。但是,在系统配置完成之前,每个组件与电子控制单元(ECU)之间的连接还没有确定。只有在系统配置完成后,才能确定将哪些 SWC 分配给哪个ECU。因此,虚拟总线实际上代表了ECU内部以及ECU之间的通信,而且该虚拟总线是一组尚未部署到特定电子控制单元的 RTE 接口。由于通信是通过端口进行的,因此通信接口必须与这些端口相连。

就像电话系统中的交换机一样,虚拟总线负责将信息从一个SWC传递到另一个SWC,而通信接口就像是电话插孔,必须连接到端口才能让通信顺畅进行。

另外,每个软件组件都包含一个或多个运行项,它们实际上包含了该软件组件的实现,并使其具有可执行性。这些运行项可以看作是软件组件内部的小程序,包含了代码或指令集的一部分,让软件组件能够执行具体的任务。这些可运行程序可以通过两种方式激活:

循环激活:(取决于周期和调度程序)根据预定的周期和调度程序进行激活。就像定时器一样,软件组件会定期执行任务,以确保系统的正常运行。

事件发生后激活:(如接收数据)当某个事件发生时,例如接收到特定的数据或触发了特定的条件,就会激活相应的运行项。这种方式类似于按下按钮或收到信息后的响应动作,根据需要执行相应的任务。

通过这两种激活方式,软件组件可以在特定的时间点执行任务,从而实现系统的功能和逻辑。

Runtime Environment(运行环境,RTE)

在AUTOSAR体系结构中,软件组件(SWC)和基础软件(BSW)之间的通信是通过运行时环境(RTE)接口实现的。这意味着软件组件只能通过RTE接口与其他组件和/或基础软件模块进行通信。这种设计不仅确保了软件组件之间的独立性,还确保了软件组件与各个电子控制单元(ECU)之间的独立性。

运行时环境(RTE)是一个抽象层,它管理着操作系统、通信服务、硬件接口以及软件组件之间的工作调度。换句话说,它像是汽车电子系统的"大管家",负责协调各种任务的执行和信息的传递。通过RTE,软件组件可以在不了解底层细节的情况下与其他组件进行通信,从而提高了系统的灵活性和可扩展性

在AUTOSAR中,RTE(运行时环境)可以帮助软件组件(SWC)进行两种不同类型的通信:

📞 客户端/服务器通信有两种工作模式:同步和异步。在同步模式下,客户端发起通信请求,服务器执行所请求的服务,并对请求做出响应。在异步模式下,客户端和服务器在不同的上下文中工作,通信请求和响应是分离的。软件组件可以根据需要充当客户端或服务器,这取决于其实现方式。

**举个例子:**就像你给朋友打电话一样。在同步模式下,你打电话给朋友,她立即回答你的问题。在异步模式下,你留言给朋友,她在自己方便的时候回复你。在汽车系统中,软件组件可以像客户端一样发送请求,等待服务器(另一个软件组件)的响应。

📞发送方/接收方通信有两种模式:显式(使用显式 RTE API 调用来接收和发送部分数据)和隐式(在调用可运行组件之前,RTE 自动读取某些数据集)。发送方/接收方通信可进一步划分如下:

**举个例子:**就像你发送短信或邮件给朋友一样。在显式模式下,你明确地给朋友发信息,她明确地收到并回复。在隐式模式下,你把信息放在一个地方,朋友会在需要的时候读取它。在汽车系统中,软件组件可以明确地发送和接收信息,或者在需要时RTE自动处理信息的传输。

  • 📌 直接通信(Rte_Read、Rte_Write):RTE直接访问数据缓冲区,实现1:N通信和初始值传递。组件通过Rte_Write调用与其他组件进行数据通信,并通过Rte_Read调用接收来自其他组件的通信数据项。
  • 📌 缓冲通信(Rte_IRead、Rte_IWrite、Rte_IWriteRef):RTE在执行可运行组件之前生成数据副本,并在执行后将数据复制到全局缓冲区。在执行期间,数据不会改变。
  • 📌 队列(Queued )通信 (Rte_Receive, Rte_Send):RTE从特定的接收队列读取数据,并可以使用Rte_Receive和Rte_Send进行通信。

Basic Software(基础服务)

基础软件(BSW)由基础软件模块(BSWM)组成,它是软件文件(代码和说明)的集合,定义了 ECU 上的某些基本软件功能。基础软件由 3 层组成:

🔋 服务层(Services Layer)- 这是基础软件的最上层。I/O 访问由 ECU 抽象层组织,服务层提供以下服务:

  • 🌎 操作系统服务:管理整个系统的运行,确保各个部分协调工作。
  • 🌎 车辆网络通信和管理服务:负责处理车辆内部各个部分之间的通信和协调。
  • 🌎 NVRAM管理:负责管理非易失性内存,用于存储关键数据。
  • 🌎 诊断服务:帮助检测和解决系统中的问题。
  • 🌎 ECU状态管理:跟踪和管理ECU的状态,确保系统正常运行。

🔋 ECU 抽象层(ECU Abstraction Layer)- 为设备提供应用程序接口,与设备的位置无关。该层的任务是使上层独立于 ECU 硬件布局。

🔋 微控制器抽象层(Microcontroller Abstraction Layer)- 这是基础软件的最底层。该层包含直接访问微控制器、内部外设和外部设备内存映射微控制器的驱动程序。微控制器抽象层的任务是使高层独立于微控制器。

🔋 复杂设备驱动程序(Complex Device Drivers)- 通过直接访问微控制器来控制特殊传感器和执行器。它们是 AUTOSAR 分层软件架构中的特例。

🏆 举个例子: 让我们以汽车的ABS(防抱死制动系统)为例来说明基本软件(BSW)的层次结构和功能: 🍭 服务层

  • 操作系统服务:确保ABS系统正确运行,管理系统的任务调度和资源分配,以及处理系统中的各种事件。
  • 车辆网络通信和管理服务:负责与其他车辆系统进行通信,如与发动机控制单元(ECU)或车轮传感器的通信,以获取必要的车辆状态信息。
  • NVRAM管理:负责管理ABS系统的非易失性内存,其中存储了系统的关键配置和校准参数。
  • 诊断服务:监控ABS系统的运行状况,并在出现故障时生成相应的诊断码以供检测和修复。
  • ECU状态管理:跟踪ABS系统的状态,例如系统是否处于激活状态或非激活状态。

🍭 ECU抽象层

ABS系统可以通过ECU抽象层与车辆的任何ECU进行通信,而不需要关心具体的ECU硬件布局。这意味着ABS系统可以与各种车辆硬件配置兼容,而无需进行修改。

🍭 微控制器抽象层

在微控制器抽象层,ABS系统的驱动程序直接与车辆的微控制器及其相关外设交互。例如,通过该层,ABS系统可以直接控制车轮制动器的压力,以实现防抱死的功能。

🍭 复杂设备驱动程序

在ABS系统中,可能会存在与特殊传感器或执行器直接交互的驱动程序,如轮速传感器或制动阀。这些驱动程序直接控制这些设备的操作,以实现ABS系统的功能。

通过这些层次结构,ABS系统可以在不同的车辆配置和硬件环境中运行,同时保持其功能和性能不变。

结语

本篇文章介绍了 AUTOSAR 体系结构、技术方面以及该体系结构对汽车行业的重要性。今天,我们可以说汽车行业的所有主要公司都在应用 AUTOSAR 标准和其中定义的各个方面。

即使是世界最大的汽车软件公司也在其工作中实施 AUTOSAR 并开发软件解决方案,因为 AUTOSAR 的目标包括对不同车辆和平台变体的可扩展性、软件的可移植性、对可用性和安全要求的考虑、不同合作伙伴之间的协作、资源的可持续利用以及整个软件产品生命周期内的可维护性。

相关推荐
修己xj19 小时前
三月,我只想做好这四件事
程序员
sunny_1 天前
⚡️ vite-plugin-oxc:从 Babel 到 Oxc,我为 Vite 写了一个高性能编译插件
前端·webpack·架构
不要秃头啊1 天前
别再谈提效了:AI 时代的开发范式本质变了
前端·后端·程序员
兆子龙1 天前
模块联邦(Module Federation)详解:从概念到手把手 Demo
前端·架构
jonjia1 天前
引入新维度化解权衡难题
程序员
jonjia1 天前
优秀的工程师如何打破规则
程序员
jonjia1 天前
在大厂交付大型项目的策略
程序员
jonjia1 天前
RFC 与设计文档
程序员
jonjia1 天前
为什么你(或任何人)应该成为一名研发经理?
程序员
jonjia1 天前
管理技术质量 (Manage Technical Quality)
程序员