AUTOSAR 是什么

汽车开放系统架构(AUTOSAR)是什么 - 知乎

AutoSAR架构(二) - 知乎

WHAT

AUTOSAR,全称为Automotive Open System Architecture,即汽车开放系统架构。

开放的汽车控制器(ECU)标准软件架构

WHY 基本思想:软硬件分离

WHY——WHERE

在一个汽车控制器中,

  • 应用软件:除了实现具体功能及算法的应用软件,
  • 底层软件:还有许多底层软件来保证控制器的正常运行,
    • 比如CAN总线信号的收发、任务进程的调度、Flash数据的读写等等。
    • 一方面,不同控制器中这部分底层软件的功能重复度很高;
    • 而另一方面这部分底层软件又跟硬件紧密相连,在一个处理器平台上写好的软件,换一个处理器平台就不能用了。去为每一个控制器项目专门写一套底层软件显然是非常低效的,而且也容易出错。

于是人们就想通过

  • 标准化应用软件和底层软件之间的接口

来让应用软件开发者可以专注于具体应用功能的开发,而无需考虑控制器底层的运行过程。这样即使更换了处理器硬件,应用软件也无需做太多修改就可以被移植过去。

而底层软件的开发则交给专门的公司,他们为每一个处理器硬件写好驱动,并封装成标准化接口提供给上层。这样底层软件就可以被高效地集成到不同项目中。

而由于同一套底层软件被大量重复使用,发现bug的概率大大提高,从而可以很快得到修补,并且通过更新对其它项目进行同步修补。

WHY——AIM TO

  • 提高软件的可扩展性和灵活性,方便应用功能的集成和转换,以及控制器网络的优化
  • 提升软件的可复用性
  • 降低产品和流程的复杂度和风险
  • 提升软件的开发和更新速度
  • 降低软件开发和维护成本

WHY——BY

  • 对应用软件与底层软件之间以及应用软件之间的接口,进行标准化,
  • 给出一个控制器软件参考架构,
  • 规范分布式开发流程中的交换格式。

HOW

AUTOSAR的基本架构

AUTOSAR 是什么

 Classic AUTOSAR架构(图片来源:AUTOSAR官网)

  • 微控制器(Microcontroller):即控制器硬件。
  • 应用软件层(Application Software Layer,ASW):即实现具体应用功能的软件。它可以包含多个软件组件(Software Component,SWC)。
  • 运行环境(Runtime Environment,RTE):是AUTOSAR的核心,它将应用软件层与基础软件层剥离开来,为应用层软件提供运行环境,如进程时间片调度、应用层模块之间以及应用层与基础软件层之间的数据交换等。
  • 基础软件层(Basic Software Layer,BSW):基础软件层,它包含了以下4个部分:
    • 微控制器抽象层(Microcontroller Abstraction Layer,MCAL):是与硬件直接相关的驱动软件,例如对存储器、通信寄存器、IO口的操作等等。
    • ECU抽象层(ECU Abstraction Layer,ECUAL):是对控制器的基础功能和接口进行统一,比如CAN报文内容的解析、网关报文的转发、存储器读写流程的控制等等。
    • 服务层(Services Layer):为应用层提供各种后台服务,比如网络管理、存储器管理、总线通信管理服务以及操作系统等。
    • 复杂设备驱动(Complex Device Drivers,CDD):为用户提供了一个可以自行编写特殊设备驱动软件的可能性。

AUTOSAR的开发方法

AUTOSAR遵循的是一种自上而下的开发方式。

即先进行系统设计,再分别进行开发实现,最终进行系统集成。

下图便是AUTOSAR开发流程的一个简要概括。

AUTOSAR 是什么

 

STEP1 系统功能架构设计

这里首先要提一下虚拟功能总线(Virtual Functional Bus,VFB)。

它是为SWC之间的通信和对BSW服务的调用提供一个虚拟的中间层。

这样整车厂在初期进行系统设计(1)时,就可以专注于软件功能模块的设计,而无需考虑硬件的限制。

SWC因而也可以重复利用,并在不同项目里*组合。

STEP2 将SWC分割到不同的ECU上,得到系统描述文档

完成系统功能架构设计后,第2步便是将SWC分割到不同的ECU上。

  • 同一个ECU内不同SWC之间的信息交换可以在ECU内部完成,
  • 而如果不同ECU的SWC之间需要信息交换的话,那就需要通过物理总线了,比如CAN。

通常来说,功能相近的SWC要放在一个ECU上,这样可以减少总线上传递的信号数量,减少总线负载,也减少传输延迟。

这一步会把:

  • 整个网络细节定义好,包括信号的长度、处在哪个CAN报文的哪个位置、CAN总线的比特率等等。
  • 最终生成一个AUTOSAR XML格式的系统描述文档(System Description)。

STEP3 控制器描述文档

完成系统设计之后,就可以为每个控制器单独生成一个控制器描述文档(ECU Extract of System Description),同样是AUTOSAR XML格式。

它包含了系统里跟这个ECU有关的所有信息:

例如拥有哪些总线,每个总线的参数(如CAN的比特率、LIN的Schedule Table等等),在每条总线上都收发哪些信号,是否带E2E校验,包含哪些SWC,分别都收发哪些信号,等等。

STEP4 分发文档给不同供应商

接下来便是把这些控制器描述文档分发给各个控制器相应的供应商。

  • 根据文档生成ECU框架:供应商会从AUTOSAR基础软件提供商(如Vector、Elektrobit)购买相应的基础软件模块,并使用AUTOSAR开发工具导入控制器描述文档,就可以生成该控制器的大体框架。
  • 配置参数:之后只需要完成对各个基础软件模块的具体参数配置,就可以自动生成基础软件的C代码,包括RTE。RTE会把基础软件层与应用层的接口封装好。
  • 而应用层软件的开发可以同步进行。前面已经定义好了各个SWC使用的接口,做应用层开发的时候只需要使用这些接口即可。

应用层的开发即可以是由同一个控制器的供应商来做,也可以是整车厂自己做,甚至可以将同一个控制器的不同SWC交给不同的供应商来做。

开发过程可以是基于模型的,也可以手动编写C代码。

  • 等到应用层和基础软件层都开发完毕之后,由于它们使用了预设好的统一的接口,最后可以很方便地集成到一起。

STEP 5 供应商进行测试

之后供应商便可以对控制器及相应的部件进行测试。前面说过,一辆车上各个部件往往是交给不同的供应商来做的。供应商之间的开发进度往往不同步,而且一般也不会互相往来。那么供应商如何在没有其他部件的情况下,测试自己的部件是否能在系统中正确工作呢?由于我们是在一个设计好的完整系统中切割出一个个ECU Extract的,所以它已经包含了跟系统中其它部件的接口信息。

于是各个供应商可以通过仿真工具建立起一个虚拟的系统环境,来测试他们的部件是否与系统兼容。这也就是硬件在环测试(Hardware in the loop,HIL)。

各个部件开发完成后,就可以集成到一起进行测试了。由于各个部件是基于同一个系统设计开发出来的,它们集成到一起后便可以互相配合了。

当然,实际当中会很多问题在单独开发测试阶段没有被发现,集成到一起之后才会被发现。之后还需要不停地进行修改、测试。

但在AUTOSAR框架下,这个过程也是非常清晰的。当需要修改两个控制器之间的信号时,只要先在系统描述文档里进行修改,再生成更新后的控制器描述文档,相应地供应商再将它们导入AUTOSAR开发工具中,更新相应的信号路径、参数等,就可以很快地生成新的C代码。

局限

AUTOSAR的设想很美好,不过在实际应用当中还是有各种限制。

首先,目前提供AUTOSAR开发工具链及基础层软件的基本上就Vector、Elektrobit(Continental)和Bosch三家,而由于各家对AUTOSAR标准的理解和具体实现方式不同,导致它们的基础层软件在某些方面是不兼容的。这使得应用时的灵活性受到了限制。

其次,AUTOSAR的整套工具链价格还是相当昂贵的。AUTOSAR的优势是提高软件的可复用性来降低成本,但对于一些小供应商来说,如果做的量太小的话,这一优势相对于购置整套开发环境的成本便不那么明显了。

另外,传统AUTOSAR的灵活性也是相对而言的。传统AUTOSAR用的是OSEK OS,是一个静态操作系统。其进程的数量、优先级、内存分配等等都是固定的。一旦需要做一个改动,比如添加一个通信信号,都需要重新生成一遍整个ECU的代码并刷写。

于是人们又开发出了Adaptive AUTOSAR,来满足汽车越来越高的智能化,越来越快的功能和软件更新频率要求。

上一篇:用超级鹰来识别B站图片验证


下一篇:关于RTE的理解