乐于分享
好东西不私藏

想入行汽车软件开发——AUTOSAR是必须要了解的概念

想入行汽车软件开发——AUTOSAR是必须要了解的概念

一文吃透AUTOSAR:软件定义汽车时代的“通用语言”

大家好,我是老王。

我刚入行做嵌入式的时候,一直觉得写代码就是调调寄存器、改改驱动、跑跑中断。至于AUTOSAR?那不是搞架构的人才关心的吗?我写好我的应用逻辑就行了,底层的东西,谁在乎呢?

后来我做车载项目,客户要求必须用AUTOSAR架构;做域控制器项目,甲方说基础软件必须符合AUTOSAR标准;做ADAS项目,芯片厂商提供的参考设计全是AUTOSAR配置好的。我算是看明白了,但凡对软件复用率和开发效率要求高的车载项目,AUTOSAR基本是绕不开的门槛

从那以后我老老实实把AUTOSAR体系啃了一遍,这玩意儿跟传统的单片机裸机开发完全是两套思维——基于组件的、面向功能的、标准化接口的,跟你熟悉的“寄存器直接怼、功能写死在一个main里”的路子完全不搭边。

所以不管你是在做车身控制、动力总成、智能座舱还是自动驾驶,懂点AUTOSAR,真的能救命。

一、AUTOSAR到底是什么?

1.1 AUTOSAR是什么?

AUTOSAR是一种开放的、标准化的汽车软件架构,是一套让全球汽车制造商和供应商在同一个框架下开发、集成、复用软件的方法论和标准体系。

这句话看起来很长,我们来拆开看:

开放,意思是不是某一家公司的私有方案。AUTOSAR是由全球汽车制造商、供应商以及电子、半导体和软件行业的公司组成的开发合作伙伴关系。任何符合标准的公司都可以参与进来。

标准化,意思是AUTOSAR定义了一套统一的接口规范、文件格式、开发流程。不管你是宝马还是博世,用的是英飞凌还是恩智浦的芯片,大家按同一套规则办事。

软件架构,意思是AUTOSAR不只是个“协议”或者“库”,它是一整套从硬件抽象到应用开发的完整框架。它规定了软件怎么分层、模块之间怎么通信、配置怎么管理。

方法论和标准体系,意思是AUTOSAR不光定义架构,还定义了一套从整车功能设计到ECU实现的完整开发流程。怎么拆功能、怎么分ECU、怎么生成配置、怎么集成——全都有标准可循。

AUTOSAR自2003年正式成立以来,核心成员包括宝马、博世、大陆、戴姆勒、福特、通用、标志-雪铁龙、丰田、大众等巨头。目前其合作伙伴已遍布全球,成员数量超过300家。

AUTOSAR关心的是“怎么让汽车软件像搭积木一样可复用”,而不是“这个功能写在哪一段代码里”。

1.2 为什么需要AUTOSAR?

传统的汽车软件开发是“硬件导向”的。每款车、每个ECU、甚至每个项目,软件都是从头写一遍。同样的车窗控制逻辑,在这款车上写一遍,换到另一款车又写一遍。

随着汽车功能越来越复杂,ECU数量越来越多——一辆高端车型的ECU数量已经超过150个。每个ECU里跑着不同的软件,由不同的供应商开发,用着不同的接口规范。集成的时候就是一场噩梦。

AUTOSAR诞生的目标就是解决这些问题:

让软件可以复用。同一套车窗控制逻辑,写完一次,在A、B、C三款车上都能用,不用重写。

让接口统一。不管谁家的ECU,通信接口、诊断接口、存储接口全按标准来,集成的时候不用猜来猜去。

让开发从“基于ECU”变成“基于功能”。先想清楚“车辆需要哪些功能”,再决定“这些功能放在哪个ECU上”,而不是反过来。

让软件可以升级。AUTOSAR支持软件的更新和升级,在车辆的整个生命周期内改进功能。

AUTOSAR的核心思想,用一句话概括就是:“在标准上合作,在实现上竞争” 。接口和框架是大家商量好的,但具体怎么实现,各家可以各显神通。

二、AUTOSAR到底长什么样?

很多人一听到AUTOSAR就头大,觉得太复杂。其实它的核心架构没那么难理解——它本质上就是一个“软件分层”的方案

AUTOSAR经典平台(Classic Platform)的软件架构,从下到上可以分为四层:

第一层:微控制器抽象层(MCAL)

MCAL是AUTOSAR架构的最底层,也是最靠近硬件的一层。它直接操作微控制器的寄存器、外设、内存映射设备。

通俗地说,MCAL就是把芯片厂商提供的底层驱动库,封装成AUTOSAR规定的统一API接口。不管你是用英飞凌、恩智浦还是瑞萨的芯片,上层看到的接口都是一样的。

第二层:ECU抽象层(ECU Abstraction Layer)

ECU抽象层是MCAL的上层。它把MCAL提供的硬件驱动进一步封装,让上层软件不关心“这个信号是从哪个引脚进来的”。

比如车窗控制,上层只需要说“我要控制车窗升降”,不用管具体是哪个GPIO在干活。

第三层:服务层(Services Layer)

服务层是基础软件里最上层,提供各种与硬件无关的基础服务:

  • 操作系统(OS):负责任务调度
  • 通信服务(COM):负责信号收发
  • 诊断服务(DCM/DEM):负责UDS诊断和故障管理
  • 存储服务(NvM):负责非易失性数据管理
  • 网络管理(NM):负责CAN/LIN/Ethernet的休眠唤醒

第四层:运行时环境(RTE)

RTE位于应用层和基础软件之间,是连接上层应用和底层基础软件的桥梁

RTE实现了AUTOSAR的虚拟功能总线(VFB) 概念。应用层的软件组件(SWC)通过RTE互相通信,完全不需要关心对方在哪个ECU上、走的是什么总线。

顶层:应用层(Application Layer)

应用层是AUTOSAR架构的最顶层,由一个个软件组件(SWC) 组成。每个SWC实现一个独立的功能单元——比如“车门控制SWC”“灯光控制SWC”“空调控制SWC”。

SWC之间通过RTE通信,完全独立于硬件。

三、AUTOSAR的几个核心概念

3.1 软件组件(SWC)

SWC是AUTOSAR世界里最小的功能单元。一个SWC就像一块积木,有自己的输入输出接口,有自己独立的功能逻辑。

SWC的好处是可复用、可移植。同一个“车窗控制SWC”,在这款车上用完了,换到另一款车上照样能用。

3.2 虚拟功能总线(VFB)

VFB是AUTOSAR里一个很关键的概念。简单说,VFB是一个逻辑上的通信总线,SWC之间通过它进行通信。

SWC在开发的时候,只需要知道“我跟谁通信、传什么数据”,完全不需要关心“对方在哪个ECU上、走的是CAN还是以太网”。

等到真正部署的时候,RTE会负责把VFB上的通信映射到实际的物理总线上。

这就是为什么AUTOSAR能让软件独立于硬件——SWC只认识VFB,不认识具体的ECU和总线

3.3 运行时环境(RTE)

RTE是VFB在具体ECU上的实现。它负责:

  • SWC之间的数据通信
  • SWC的调度执行
  • SWC对底层BSW服务的访问

3.4 AUTOSAR方法论

AUTOSAR不只定义了架构,还定义了一套从整车功能到ECU代码的完整开发流程

这套流程大致可以分为四步:

第一步:定义整车级SWC和VFB

OEM从整车功能视角出发,把车辆的所有功能拆解为一个个SWC,定义它们之间的交互逻辑。这一步生成SWC描述文件(ARXML格式)。

第二步:把SWC分配到ECU

把上百个SWC分配到数十个ECU上,明确哪些SWC放在同一个ECU、哪些跨ECU通信。这一步生成系统描述文件,记录ECU网络拓扑、总线协议、波特率等核心参数。

第三步:生成ECU提取文件

为每一个ECU从系统描述文件中抽取专属信息,生成ECU Extract(EcuEx) 。这相当于给Tier1的开发说明书。

第四步:生成ECU配置文件(EcuC)

Tier1拿到EcuEx后,进一步配置ECU的底层细节,生成最终的ECU配置文件。

AUTOSAR用一套XML格式的文件(ARXML) 贯穿整个开发流程,从系统设计到ECU配置,全部用标准格式描述。

四、AUTOSAR经典平台 vs 自适应平台

AUTOSAR有两个主要平台:

经典平台(Classic Platform,CP) :用于深度嵌入式系统,对可预测性、安全性、实时性有高要求的场景。比如发动机控制、刹车控制、车身控制。CP跑在MCU上,代码量相对固定,不支持运行时动态更新。

自适应平台(Adaptive Platform,AP) :用于高性能计算ECU,支持动态更新和重新配置。比如自动驾驶域控制器、智能座舱。AP跑在MPU上,支持面向服务的架构(SOA)。

一个常见的误区是“AP会取代CP”。实际上,两者解决的是不同的问题,未来会长期共存。CP管“稳”,AP管“算”。

五、AUTOSAR里的核心模块

AUTOSAR的基础软件层包含很多功能模块,我挑几个最核心的说。

5.1 通信模块(COM/PduR/CanTp)

通信模块负责数据在总线上的收发。COM模块负责信号到PDU的打包和解包。PduR模块是通信栈的核心路由器,负责把PDU路由到正确的总线接口。CanTp模块负责把超过8字节的长数据拆分成多个CAN帧发送,接收端再重组。

5.2 诊断模块(DCM/DEM)

诊断模块负责UDS诊断协议。DCM模块负责与外部诊断工具通信,实现诊断信息的传输和处理。它接收诊断请求,执行诊断操作,返回响应。DEM模块负责处理和存储诊断事件(故障)及相关数据,如故障码(DTC)、故障状态字节、冻结帧数据等。DCM管“通信”,DEM管“存储”,两者配合工作。

5.3 存储模块(NvM)

NvM模块负责非易失性数据的读写管理。它给上层提供统一的存储访问接口,不管是EEPROM还是Flash,上层不需要关心底层硬件细节。

六、AUTOSAR市场与人才需求

6.1 市场规模

2025年全球AUTOSAR软件市场规模达到62亿美元。预计到2034年增长到134亿美元,年复合增长率9.4%。亚太地区以38.2% 的份额位居全球第一。

6.2 人才需求与薪资

目前国内具备AUTOSAR实战经验的工程师不足3000人,而岗位需求每年新增超过5000个。人才供需比严重失衡。

薪资水平:

  • 应届生/1年以内:10K~15K・13薪
  • 1-3年经验:18K~28K・14薪
  • 3-5年经验(能独立搭建架构) :25K~40K・15薪
  • 5年以上资深架构师:40K~60K・16薪

懂AUTOSAR的岗位薪资比同级别岗位高出30%-50%。

七、程序员视角看AUTOSAR开发

7.1 AUTOSAR开发不是“写代码”

很多刚接触AUTOSAR的工程师会有一个误解:以为AUTOSAR开发就是写更多的代码。

恰恰相反。AUTOSAR开发的核心工作是“配置”和“集成”,而不是“写代码” 。

在AUTOSAR项目里,大部分底层代码(通信栈、诊断栈、存储栈)是自动生成的——你配置好参数,工具帮你生成代码。工程师的主要工作是:

  • 配置MCAL参数(时钟、引脚、波特率)
  • 配置BSW模块(通信矩阵、诊断事件、存储块)
  • 配置RTE(SWC之间的通信映射)
  • 集成和调试各个模块

7.2 AUTOSAR工具链

AUTOSAR开发严重依赖工具链:

  • 系统设计工具:PREEvision——定义SWC和VFB
  • SWC开发工具:Simulink/Matlab——建模和代码生成
  • BSW配置工具:EB tresos、Vector DaVinci——配置BSW模块
  • 集成测试工具:CANoe——仿真和验证

工具链昂贵,一套Vector工具链动辄数百万。这也是AUTOSAR工程师稀缺的原因之一。

7.3 AUTOSAR学习的挑战

AUTOSAR学习曲线陡峭:

  • 架构庞大:横跨系统、通信、诊断、安全、存储多个领域
  • 概念抽象:需要理解SWC、VFB、RTE等抽象概念
  • 配置复杂:需要掌握大量配置参数及其关联关系
  • 工具链门槛高:需要熟悉多种专业工具

但正因为难,所以值钱。AUTOSAR工程师正是“软件定义汽车”时代最稀缺的人才之一 。

加入群聊可获得

面试

资料

100+企业面试案例

学习

路线

汽车开发学习路线

学习

指导

多名10年+大厂经验

工程师在线指导

学习

交流

众多开发者一起交流

助力你提升技能

王老师的小程序👇👇点击即达!!!
扫码直接进入汽车嵌入式交流群