今天呢,简单讲一下AUTOSAR(汽车开放系统架构)的软件架构。为啥要讲这个呢?因为这是入门汽车电子所必须知道的一个名词。
这个架构起于2003年,至今已有20年的历史。AUTOSAR是"Automotive Open System Architecture"的缩写,中文意思是"汽车开放系统架构"。这套架构是对汽车电子开发技术100多年来的一个经验性总结,是老外提出来的。
📌 本文内容概览
AUTOSAR 分层架构概述 应用层与基础软件层的分工 实时运行环境(RTE)的作用 微控制器抽象层与ECU抽象层的区别 复杂驱动的特殊性 分层开发的核心优势
1. AUTOSAR 分层架构概览
很多人可能都见过AUTOSAR的经典分层图,但是能把这张图理解透的人,在个人看来少之又少。甚至有的人在用配置工具做配置,但真正能把这一整套东西理解透的人,并不多。

从这几个层次来看,我们开发的软件一共分为两大部分:BSW(基础软件)和应用层软件(图中最上层的黑色部分)。很多公司开发这种大型软件,都分为BSW工程师和应用层软件工程师两个工种。软件开发完毕后,BSW和应用层合二为一,形成一个完整的代码,放入芯片中运行。
2. 应用层与基础软件层的分工
应用层的代码,一般都是基于模型的开发,用MATLAB/Simulink生成C代码。而BSW呢,有专门的配置工具,通过配置工具来生成BSW代码。
但是,BSW这一部分,既可以用工具生成,也可以用人工手写。或者说,有条件的情况下,用工具生成加手写模式来完成BSW;如果没有条件,并且个人能力超强的话,BSW完全通过手写也是可以实现的。
💡 为什么不能完全依赖工具生成BSW?
最右边有一个绿色的部分叫"复杂驱动",一个项目一个样,它对外的外设模块各不相同,驱动方案也都不一样。甚至模块型号变了,驱动也要跟着变。这部分复杂性和多变性,是工具无法生成的,所以必须手写。
另外,MCAL(微控制器抽象层)这一部分也涉及手写,因为有一些量产过的、经过验证的代码可以直接复用,避免出错。如果是新开发的东西,没有得到充分验证,直接使用的话,出问题的概率会非常大。
3. 服务层、ECU抽象层与复杂驱动
🔹 服务层
服务层是对应用层提供的一些服务。拿一款单片机来说,应用层通常要做存储、通信等操作,这些都通过服务层来完成——没有服务层,应用层什么都干不了。
🔸 ECU抽象层
ECU抽象层跟具体产品有关。同样是同一款单片机,如果开发的是网关产品,涉及LIN通信,那么ECU抽象层就是LIN通信的使用场景;如果开发的是VCU(整车控制器)产品,涉及CAN通信,那么ECU抽象层就是CAN通信的使用场景。所以,ECU抽象层是根据具体产品来走的。
🔹 复杂驱动
复杂驱动也是根据实际产品来走的,具有不确定性。它通常由模块厂家提供,是工具无法自动生成的。
4. 微控制器抽象层(MCAL)
微控制器就是单片机的内部资源——纯硬件资源,包括普通I/O口、PWM、模拟量采集、各类通信模块等。
微控制器抽象层,有人叫它MCAL(Microcontroller Abstraction Layer)。它是对硬件寄存器的第一次封装,是硬件驱动层。而ECU抽象层,则是对硬件抽象接口的又一次封装。
5. 实时运行环境(RTE)
实时运行环境(RTE)相当于一个隔离层。有了RTE,应用层只需跟RTE交互即可,无需直接与服务层打交道。这就把应用层和BSW做了隔离。
每做一层封装和隔离,实际调用的效率就会牺牲一次。牺牲效率换来的好处是隔离性更强。如果没有RTE,应用层也可以直接跟服务层、ECU抽象层和复杂驱动打交道,只要它们之间规定好调用接口就可以。
🔑 关键理解:RTE并非可有可无,它让应用层和基础软件层解耦,使上层开发不再依赖底层硬件细节,这是AUTOSAR架构的核心设计思想之一。
6. 分层架构的"俄罗斯方块"
AUTOSAR的分层图信息量非常大。细心观察会发现,服务层画了一个拐弯,ECU抽象层画得像鞋一样,两者镶嵌在一起,很像俄罗斯方块。这说明:有一部分ECU抽象层直接对应RTE,而另一部分则直接对应服务层,完全取决于产品特点。
看着是自上而下或自下而上的调用,实际上模块之间横向也有交互。这些看不到的东西,需要我们不断学习和积累,加深对模型的理解。
7. 分层开发的核心优势
AUTOSAR架构采用了模块化开发、分层开发的思想,最珍贵的就是这种思想的借鉴。
单片机更新换代很快,厂家为了降成本,经常决定换控制器。采用AUTOSAR架构设计的软件框架,在面对换控制器的情况下,只需要重新配置一下驱动就可以了,其他代码基本不用动。
为什么能做到?因为ECU抽象层依赖于微控制器抽象层的接口,不依赖于接口内部的实现。硬件换了,驱动必然要换,所以只需要在微控制器抽象层做改动,ECU抽象层和上层都不用动。
✅ 总结:AUTOSAR的核心价值
应用层与基础软件层解耦 硬件更换时只需修改MCAL层 模块化开发,提高代码复用率 降低平台迁移成本,缩短开发周期

面试
资料
学习
路线
学习
指导
多名10年+大厂经验
工程师在线指导
学习
交流
众多开发者一起交流
助力你提升技能
夜雨聆风