AUTOSAR(AUTomotive Open System Architecture),即汽车开放系统架构,由全球汽车制造商、零部件供应商及其他电子、半导体和软件系统公司建立,目的是为了降低汽车控制软件的开发风险,提高软件复用度。AUTOSAR联盟自2003年成立以来,成员队伍不断壮大,基本上涵盖了世界各大著名整车厂、零部件供应商、半导体公司及软件工具开发商。
- AutoSAR架构分层
由上图可知,AutoSAR从下到上依次为基础软件层(Basic Software Layer,BSW),运行时环境(Runtime Environment,RTE)和应用层(Application Software Layer)。
(1)Microcontroller
这一层为硬件,即当前使用的MCU。
(2)Microcontroller Abstraction Layer
微控制器抽象层,包含可以直接访问微控制器和外围设备的底层驱动,将上层软件与具体mcu型号独立。
(3)ECU Abstraction Layer
提供控制ECU上硬件的API,对某个硬件模块的访问抽象为一个API,上层软件调用时不用关心具体ECU硬件设计,使上层软件独立于ECU硬件设计。
(4)Service Layer
服务层,为应用程序提供可用的服务,包含:
- 输入/输出(I/O):对传感器、执行器和ECU外围设备的标准化访问
- 内存(Memory):对内部/外部(非易失性存储器)的标准化访问
- 加密(Crypto):对内部/外部加密原语的标准化访问
- 通信(Communication):车辆网络系统、车载ECU通信系统和ECU内部软件的标准化访问
- 非车载通信(Off-board Communication):V2X、车内无线网络系统和非车载ECU通信系统的标准化访问
- 系统:提供标准化(包括操作系统,定时器,错误存储器)和ECU特定(ECU状态管理,看门狗管理)服务和库函数
(5)Complex Drivers
复杂驱动,提供集成特殊功能的可能性,例如设备的驱动,这些驱动有以下特点:
- 在AUTOSAR中没有明确规定
- 对时序要求比较高
- 用于移植目的
(6)RTE
运行时环境,提供ECU内部/间的通信,使SWC(软件组件)与ECU映射相互独立,建立一种VBF(虚拟总线功能)机制。
(7)Application Layer
应用层包含若干软件组件(Software Component,SWC),SWC封装了需要实现的具体功能,独立于微控制器的类型,与底层硬件的独立性是通过虚拟功能总线(VFB)来实现。而VFB则提供了一种通信机制,具体由RTE和BSW来实现。
SWC由端口(Port)和运行实体(Runnable Entity,RE)组成。
端口(Port)是SWC之间进行通信的接口,通信内容包含数据元素(Data Element,DE)和操作(Operation,OP)。
两种常用端口:发送-接收端口(Sender-Receiver Interface,S/R)和客户端-服务器端口(Client-Server,C/S)。
S/R用于数据传递,发送方将数据元素(Data Element,DE)发送给一个或者几个接收方。C/S用于操作(Operation,OP),即函数调用,服务器提供函数,而客户端用来调用函数,一个函数可以被多个客户端调用,但是一个客户端不能调用多个函数。
运行实体(Runnable Entity,RE)是一段可执行代码,封装了具体算法。
笔者之前有写过几期AutoSAR相关文章,但是相对比较分散,不成体系,所以后续笔者计划写一个AutoSAR相关的合集。所有内容都是笔者自己的理解,不免会有些错误的地方,如果您有不同的的见解欢迎联系笔者探讨。