原文:http://linked-car.cn/post/2/
引言:
在上一篇AUTOSAR文章中,我们介绍了AUTOSAR即是一个组织,又是一套标准,如果有必要的话,大家还可以再回顾一下什么是AUTOSAR这篇文章,在我们后续的文章中提到AUTOSAR一般都会是指AUTOSAR标准。
既然AUTOSAR标准是汽车行业内的一套软件设计软件开发标准,那么到底什么样的软件是符合AUTOSAR标准的软件呢?主要在于两个方面:
- 软件构架符合AUTOSAR标准,这里软件构架包括软件分层和软件接口
- 软件开发方法符合AUTOSAR标准
AUTOSAR的目标是为了满足未来汽车的需求,增强软件的可用性、安全性、可维护性,增加软件的灵活性和可扩展性,要实现这一目标唯一的手段是通过良好的分层即模块抽象来将软件模块的耦合性降到最低,因此AUTOSAR定义了汽车上所有的ECU都适用的通用的软件构架(软件分层和软件接口)。
AUTOSAR软件分层:
在这一篇文章中我们会跟大家一起看AUTOSAR规定的软件分层是什么样的,在AUTOSAR标准解释文档中,有三张不同详细程度的软件分层图,我们这里拿中间详细程度的这张图来讨论一下,为什么选取这个等级的分层图来讨论呢,因为我们这篇文章是从比较宏观的层面来讨论AUTOSAR软件分层,过粗的图容易漏掉一些基本概念,过细的图则显得累赘没有必要,对于详细的分层和分模块,我们在后续还会有系列文章逐一解析。
位于上面的软件分层图中最下方黑色的部分表示的是汽车电控单元所使用的电子硬件(包括主控CPU以及外围设备),在这一层上边的部分才是软件部分。从整体来看,AUTOSAR将软件分为三层,分别为应用层(Applicaiton Layer),中间件(RTE:Runtime Environment)和基础软件(BSW:Basic Software)。
1. 应用层 – Applicaiton Layer
应用层部分是指实现特定的ECU功能的那部分软件,这部分软件负责实现ECU的逻辑功能,比如说,通过算法控制大灯,控制空调,控制电机,它是汽车功能的一种抽象,与ECU所使用的硬件没有关系。应用层又可以细分为软件组件(SWC),软件组件之间的信息交互不能直接进行必须通过RTE。
![application_layer_swc](http://or7izy150.bkt.clouddn.com/application_layer_swc.jpg)
通过SWC概念的设计,对应用层软件进一步解耦,使得应用层中的SWC具有了被替换的可能。
2. 中间件 – RTE,Runtime Environment
中间件部分给应用层提供了通信手段,这里的通信是一种广义的通讯,可以理解成接口,应用层与其他软件体的信息交互有两种,一种是应用层中的不同模块之间的信息交互,第二种是应用层模块同基础软件之间的信息交互,而RTE就是这些交互使用的接口的集散地,它汇总了所有需要和软件体外部交互的接口。从某种意义上来看,设计符合AUTOSAR的系统其实就是设计RTE,对于这一点我们会在以后的文章中仔细展开。
3. 基础软件 – BSW,Basic Software
虽然汽车中有各种不同的ECU,它们具有各种各样的功能,但是实现这些功能所需要的基础服务是可以抽象出来的,比如IO操作,AD操作,诊断,CAN通讯,操作系统等,无非就是不同的ECU功能,所操作的IO/AD代表不同的含义,所接收发送的CAN消息代表不同的含义,操作系统调度的任务周期优先级不同。这些可以被抽象出来的基础服务被称为基础软件。根据不同的功能对基础软件继续可以细分成四部分,分别为服务层(Service Layer),ECU抽象层(ECU Abstract Layer),复杂驱动(Complex Driver)和MCAL,四部分之间的互相依赖程度不尽相同。
- 服务层(Service Layer),这一层基础软件提供了汽车ECU非应用相关的服务,包括OS,网络通讯,内存管理(NVRAM),诊断(UDS,故障管理等),ECU状态管理模块等,它们对ECU的应用层功能提供辅助支持,这一层软件在不同领域的ECU中也非常相似,例如不同的ECU中的OS的任务周期和优先级不同,不同的ECU中的NVRAM的分区不同,存储的内容不同。
- ECU抽象层(ECU Abstract Layer),这一层软件提供了ECU应用相关的服务,它是对一个ECU的抽象,它包括了所有的ECU的输入输出,比如AD,DIO,PWM等,这一层软件直接实现了ECU的应用层功能,可以读取传感器状态,可以控制执行器输出,不同领域的ECU会有很大的不同。
- MCAL,这一层软件是对ECU所使用的主控芯片的抽象,它跟芯片的实现紧密相关,是ECU软件的最底层部分,直接和主控芯片及外设芯片进行交互,它的作用是将芯片提供的功能抽象成接口,然后把这些接口提供给上边的服务层/ECU抽象层使用。
- 复杂驱动(Complex Drivers),汽车ECU中有一些领域的ECU会处理相当复杂的硬件信号,执行相当复杂的硬件动作,例如发动机控制,ABS等,这些功能相关的软件很难抽象出来适用于所有的汽车ECU,它是跟ECU的应用以及ECU所使用的硬件紧密相关的,属于AUTOSAR构架中在不同的ECU平台上无法移植的部分。
总结:
AUTOSAR定义了汽车上所有的ECU都适用的通用的软件分层结构,想要设计符合AUTOSAR标准的ECU软件,首先需要按照AUTOSAR规定的软件分层来对ECU中不同的软件进行抽象。