汽车基础软件AutoSAR自学攻略(二)-AutoSAR CP分层架构(1)
汽车基础软件AutoSAR自学攻略(二)-AutoSAR CP分层架构(1)
一、本专栏的动机
下面开始开始AutoSAR的介绍,想必在汽车行业搞软件的人,或多或少都听说过AutoSAR,那为什么AutoSAR能在现在的汽车软件圈如此的火爆,如果找工作的时候不说点自己会AutoSAR,想必都很难通过面试,在汽车基础软件的面试中被淘汰。我接触过很多猎头,基本都要懂AutoSAR,小厂要求你全懂,大厂要求你专精某一块。有些猎头甚至只做和AutoSAR相关岗位的挖人,薪资开的极其诱人,涨薪30%,年薪40-60w+。你要想想,猎头招一个人他要拿你半年薪资的作为他的佣金,真的夸张。但是目前汽车行业的“卷”大家也是有目共睹,现在会AutoSAR也不一定能找到好工作,只能说今时不同往日了。但我们能做什么呢,静中细思,一个行业永远不缺重复工作只会配置的AutoSAR工程师,而是缺能解决问题,带给整个软件团队架构层次效率提升的专家。
为什么AutoSAR越来越多人参与其中,这是因为全球的各大主机厂、Tier1和芯片厂都在围绕这个标准展开合作或者竞争。减少重复造轮子,你不参与其中,那导致可能都没人带你玩(特斯拉除外,他是行业变革者),就是真么现实,你在国内可以不搞AutoSAR,但是你出口到国外的车不符合AutoSAR标准,想必很难通过当地的严苛的检查,这只是其一。下一个就是质量,你用到了供应商提供的BSW软件工具,芯片原厂的驱动,这些工具从根本上给你保证了软件开发的质量,你可能是一个什么都不会的初创公司,工具在手,不说天下第一,也位列江湖一众高手之列,在招聘一些AutoSAR专家+工程师,基本一套控制器软件几个月就能初具雏形,基础软件层面并不比大厂差在哪里。只凭这两个优点,不可能不让各大小厂家投身其中。
目前本专栏的目标是普及AutoSAR相关的标准、方法论、软件的设计思路,以及最重要的软件实战。目标是今年出100篇AutoSAR相关的文章专栏,让我们拭目以待。
二、 AutoSAR的背景与目标
这套AutoSAR的标准全称是“Automotive Open System Architecture”,是由全球主要汽车制造商和供应商于2003年9月成立的联盟,旨在为汽车电子/电气(E/E)架构开发开放且标准化的软件架构。AUTOSAR 于 2003 年 7 月由宝马(Bavarian Motor Works,BMW)、罗伯特博世(Robert Bosch)、大陆集团(Continental)、梅赛德斯-奔驰(原名戴姆勒-奔驰,后为戴姆勒-克莱斯勒)、西门子威迪欧(Siemens VDO)和大众汽车成立,旨在推动汽车电气电子(E/E)架构的开放行业标准。2003 年 11 月,福特汽车公司作为核心合作伙伴加入,12 月,斯特兰蒂斯(原名标致雪铁龙集团,PSA Peugeot Citroën)和丰田汽车公司加入。次年 11 月,通用汽车也成为核心合作伙伴。这些公司负责组织、管理和控制 AUTOSAR 开发伙伴关系。在这个核心中,董事会定义了总体战略和路线图。目前,以下核心合作伙伴支持 AUTOSAR:
两年后,经过众多专家的讨论和修订,第一版AUTOSAR标准于2005年正式发布,该标准发布后立刻引起汽车电子行业的巨大反响,其分层开发和模块化的软件解决方案也得到众多企业包括主机厂、零部件厂和半导体厂商的支持,它们也纷纷加入了AUTOSAR组织。截止到2020年年底,全球共有284家成员。随着汽车行业的发展,AUTOSAR标准也不断更新迭代,目前已经发布了AUTOSAR R23-11。
发展历程:
- 第一阶段(2004-2006): 初步开发标准规范,发布了1.0、2.0和2.1版本。
- 第二阶段(2007-2009): 补充架构和方法,发布了3.0、3.1和4.0版本。
- 第三阶段(2010-2013): 维护和部分改进,发布了3.2、4.1和4.2版本。
- 当前发展(2019年至今): 从2019年开始,AUTOSAR采用新的版本命名方式,每年11月发布新版本,版本号以年份加11标定,如R23-11。
当前版本:
- Classic Platform(CP): 主要用于嵌入式实时系统,适用于固定功能的电子控制单元(ECU)。最新版本为R24-11。
- Adaptive Platform(AP): 针对动态可扩展的高性能计算应用,如自动驾驶和高级驾驶辅助系统(ADAS)。最新版本为R24-11。
三、AutoSAR核心思想
3.1 在标准上合作,在实现上竞争
AUTOSAR(AUTomotive Open System ARchitecture)开发联盟倡导“在标准上合作,在实现上竞争”的原则,旨在推动汽车电子行业形成统一的技术标准。这种标准不仅体现在功能和接口上,还涵盖开发方法和流程的标准化。通过这样的统一标准,各个厂商可以在一个开放的平台下展开竞争,各自提供符合标准的创新产品。换句话说,虽然标准是统一的,但软件的具体实现可以各具特色。谁能够在应用层面提供更优质、更高效的实现,谁就能在市场竞争中脱颖而出。
AUTOSAR的核心思想可以概括为“统一标准、分散实现、集中配置”:
- 统一标准
统一的标准是AUTOSAR理念的基础,它为汽车电子行业提供了一个通用的开放平台。通过标准化,厂商能够减少开发过程中因不兼容而带来的障碍,实现不同供应商产品之间的无缝协作。这种标准化不仅限于软件接口,还包括开发流程和工具的规范化,从而为整个行业的协同合作奠定了基础。 - 分散实现
虽然标准是统一的,但具体的软件实现是分散的。AUTOSAR倡导一种层次化、模块化的软件架构设计,这种设计思想将应用软件与底层平台进行解耦,降低了不同模块之间的依赖性。例如,不同厂商可以专注于各自的模块开发,这些模块之间可以通过明确的标准接口进行通信。模块化设计还使得系统具有更高的灵活性,方便后续功能的扩展和维护。 - 集中配置
分散实现的模块可能来自不同的厂商,但它们之间往往存在复杂的依赖关系和交互。为了将这些模块整合成一个完整的系统,AUTOSAR要求将所有模块的配置信息以统一的格式进行集中管理。通过集中配置,可以自动生成系统配置文件,减少人为错误,提高开发效率。
3.2 AUTOSAR的关键技术支撑
在AUTOSAR架构中,汽车电子系统通常包含多个相互关联的AUTOSAR组件。这些组件之间通过**虚拟功能总线(Virtual Functional Bus,VFB)**进行通信。VFB是一种平台无关的通信机制,它为组件之间的交互提供了标准化的接口和服务,屏蔽了底层硬件的差异性,从而实现了平台的抽象化。这种运行环境使开发者能够专注于功能实现,而无需担心具体硬件细节。
3.3 AUTOSAR的目标
AUTOSAR的最终目标是为汽车电子领域建立一套完整、开放且灵活的开发生态系统,具体体现在以下几个方面:
- 交换格式的标准化
建立统一的数据交换格式,便于不同工具链之间的信息共享和交互。 - 基础软件的标准化
通过标准化的基础软件模块,简化系统开发,提高模块的可重用性。 - 接口的标准化
定义标准化的接口,确保不同厂商的模块能够无缝集成。 - 对单片机的抽象化
屏蔽底层硬件差异,通过抽象化机制实现跨平台兼容。 - 基于VFB的运行环境
提供统一的运行环境,使得应用开发与底层硬件解耦,促进系统的可移植性和灵活性。
通过“统一标准、分散实现、集中配置”这一核心思想,AUTOSAR为汽车电子开发提供了一个开放、协作的生态系统。它不仅推动了汽车电子行业的标准化进程,也为各厂商的技术创新和市场竞争创造了条件。在这一框架下,开发者能够更加高效地开发出符合标准、具有竞争力的产品,从而推动汽车电子技术的持续进步与发展。
四、 AutoSAR CP的架构
AUTOSAR经典平台(Classic Platform,CP)采用分层架构,将整个系统按照功能和职责划分为多个层级,如图3.19所示。它可以分为四个主要层级:应用软件层(Application Layer)、运行时环境(Runtime Environment,RTE)、基础软件层(Basic Software,BSW),以及底层的硬件(例如微控制器,Microcontroller)。这种分层设计的理念类似于搭建一栋建筑,每一层都有明确的分工和作用,同时通过“楼梯”或“电梯”(接口)进行上下层之间的连接和通信。为了保证架构的清晰性和模块的独立性,每一层通常只能使用下一层提供的接口,同时向上一层提供相应的服务。
以下是对AUTOSAR CP四层架构的详细解读:
1. 应用软件层(Application Layer)
应用软件层位于架构的最顶端,像是整栋大厦的“居住区”,主要承载着应用功能的实现。在这一层中,功能被划分为多个软件组件(Software Components, SWCs),而每个SWC都通过“端口”与其他组件进行交互。这些端口可以被比喻为大厦中的“门窗”,它们连接着组件与外界的通信。
每个SWC包含一个或多个运行实体(Runnable Entities),这些运行实体就像住户中的各种家电设备,它们被封装了相关的控制算法,用于处理特定的任务。运行实体的启动通常由RTE(运行时环境)触发,类似于按下开关启动家电。
2. 运行时环境(Runtime Environment,RTE)
运行时环境可以看作是整栋大厦的“电力网络”或“管道系统”,它负责在应用层与基础软件层之间提供通信机制,同时屏蔽底层实现的差异性。
RTE的核心作用在于通过**虚拟功能总线(Virtual Functional Bus,VFB)**将系统的不同模块连接起来。它是VFB在ECU内部的具体实现,能够使软件组件彼此独立于底层硬件。无论是软件组件之间的通信,还是组件与基础软件的交互,都通过RTE进行标准化管理。可以将RTE看作是“翻译官”,它隐藏了底层基础软件的复杂性,向应用软件提供了一致的接口,从而实现了软硬件分离,使得开发者无需关心硬件的具体实现。
3. 基础软件层(Basic Software,BSW)
基础软件层位于架构的中间部分,是整个系统的“地基”和“骨架”。它为应用层提供各种服务和驱动,并屏蔽了底层硬件的细节。BSW可以进一步划分为以下几个部分:
(1) 服务层(Services Layer)
服务层是基础软件的顶层,类似于为大厦提供服务的“物业管理系统”。它为应用层的SWC提供标准化的服务,例如操作系统功能(如任务调度)、网络通信服务、ECU管理、内存管理、诊断服务以及逻辑和时序监控等功能。通过这些服务,应用层可以专注于业务逻辑,而不需要直接处理底层硬件。
(2) ECU抽象层(ECU Abstraction Layer)
ECU抽象层的作用类似于将大厦中的电力、电信线路等设备进行抽象,它使得软件与具体的硬件设计无关。通过调用下一层的微控制器抽象层,ECU抽象层将硬件特性(例如电压、电流、频率等)转换为高层可理解的信号(例如开/关信号)。这种抽象设计让应用软件开发者无需了解底层硬件的细节。
(3) 微控制器抽象层(Microcontroller Abstraction Layer,MCAL)
微控制器抽象层可以被比喻为大厦中的“机械室”,它直接与硬件设备相连,控制着最底层的微控制器功能(如ADC、看门狗、计时器等)。MCAL为上层提供统一的接口,无论底层使用什么型号的微控制器,上层软件看到的接口始终保持一致。通过这种抽象,当更换硬件平台时,只需调整MCAL层,而无需修改上层软件逻辑,从而大大提高了系统的移植性和灵活性。
(4) 复杂驱动层(Complex Drivers)
复杂驱动层负责为某些复杂的传感器和执行器提供特殊驱动,可以看作是大厦中为某些特殊设备提供的定制化服务。例如,对于一些复杂的应用模块(如喷油量控制、胎压监测等),由于它们可能对时序有严格要求或者难以抽象,开发者会直接将这些设备的驱动放入复杂驱动层中,使其能够直接访问硬件资源。
4. 硬件(如微控制器,Microcontroller)
硬件位于架构的最底层,是整个系统的“地基”。微控制器作为硬件的核心,提供了基本的计算和控制功能。它包含多种外设模块,例如模数转换器(ADC)、计时器、看门狗等。这些硬件资源通过MCAL层向上层暴露统一的接口,从而让软件开发者无需直接面对硬件细节。
总结与比喻
AUTOSAR CP的架构设计就像是建造一栋模块化的智能大厦:
- 应用软件层是住户及家电设备,它们负责实现最终的功能。
- 运行时环境是大厦中的电力网络或通信管道,确保各个部分之间的顺畅连接。
- 基础软件层是大厦的骨架和服务系统,提供稳定的支撑和基础服务。
- 硬件是地基和机械室,提供底层计算和控制能力。
通过这种分层设计,AUTOSAR实现了功能解耦、软硬分离和平台独立性,从而提高了汽车电子系统的开发效率和模块化程度。这种架构设计不仅让开发变得更加灵活,也为未来的硬件升级和功能扩展提供了坚实的基础。
五、基础软件层(Basic Software,BSW):AUTOSAR架构的核心支撑
在AUTOSAR经典平台(Classic Platform)中,**基础软件层(Basic Software,BSW)**是整个架构的重要组成部分。它位于运行时环境(Runtime Environment, RTE)之下,硬件抽象层之上,负责为应用层提供底层服务和硬件访问接口。BSW通过模块化设计,将底层硬件和上层应用完全解耦,为整个系统的功能实现和灵活开发提供了坚实的基础。
在这一章中,我们将深入解析BSW的主要组成部分、功能以及其在AUTOSAR架构中的重要性。
1. 基础软件层的作用
基础软件层可以被看作是汽车电子系统的“操作系统”与“驱动程序”。它负责处理从系统初始化到内存管理、通信协议支持等所有与硬件相关的底层操作。BSW的主要作用包括:
- 硬件抽象:将复杂的硬件细节屏蔽,提供统一的访问接口,使上层软件开发无需关心底层硬件的差异。
- 系统服务支持:为应用层和运行时环境提供标准化的系统服务,如操作系统服务、通信服务和诊断服务。
- 模块化与标准化:将功能分为独立模块,每个模块通过标准化接口进行通信,确保系统的可扩展性和兼容性。
2. BSW的主要组成部分
BSW由多个功能模块组成,这些模块按照功能可划分为以下几个子层,每一层都承担特定的职责:
2.1 系统服务层(System Services)
系统服务层是基础软件层的顶层,主要为应用层提供核心支持服务,包括:
- 操作系统服务(OS Services):管理任务调度、中断处理和时间服务。
- 电源管理(ECU State Management):控制ECU的启动、关闭以及休眠/唤醒过程。
- 诊断服务(Diagnostic Services):提供故障检测与报告功能,支持车辆的诊断与维护。
举例:当系统需要切换到低功耗模式时,系统服务层负责协调各个模块,确保切换过程平稳进行。
2.2 内存服务层(Memory Services)
内存服务层主要负责管理ECU中的存储资源,确保数据存取的可靠性和效率。其主要功能包括:
- 非易失性内存管理(NVM Services):管理EEPROM或Flash存储器中的数据读写,确保数据的持久化。
- 内存诊断:检测内存错误,确保存储的可靠性。
举例:在记录车辆故障码时,内存服务层负责将数据安全写入非易失性存储器,以便在车辆断电后仍能保留数据。
2.3 加密服务层(Crypto Services)
加密服务层提供与安全相关的服务,用于实现系统的机密性、完整性和认证。其功能包括:
- 加密算法支持:为数据通信和存储提供对称与非对称加密。
- 密钥管理:管理加密密钥的生成、存储和销毁。
举例:在远程软件更新(OTA)过程中,加密服务层确保传输数据的安全性,防止攻击者篡改或窃取数据。
2.4 车外通信服务层(Off-board Communication Services)
这一层专注于车辆与外部设备的通信,如诊断工具、车辆云平台等。其功能包括:
- 数据传输协议支持:如UDS协议(统一诊断服务)。
- 远程通信支持:支持无线连接,便于车辆的远程诊断与控制。
举例:在4S店使用诊断工具检测车辆故障时,车外通信服务层负责与诊断工具建立通信。
2.5 通信服务层(Communication Services)
通信服务层负责管理ECU之间的数据交换,支持多种通信协议,包括CAN、LIN、FlexRay和以太网等。其核心功能包括:
- 网络管理:确保通信网络的初始化、运行和关闭。
- 信号传输:管理数据打包和传输。
举例:当某个ECU需要将传感器数据发送到另一个ECU时,通信服务层通过CAN或以太网完成这一过程。
2.6 I/O硬件抽象层(I/O Hardware Abstraction)
这一层负责将底层硬件信号(如电平信号、频率信号)抽象为逻辑信号,供上层使用。主要功能包括:
- 信号转换:将模拟信号转换为数字信号(ADC),或将数字信号输出为PWM信号。
- 硬件接口:通过标准接口访问传感器和执行器。
举例:制动系统中的压力传感器检测到压力变化后,I/O硬件抽象层将其信号转换为逻辑值,并传递给上层应用。
2.7 复杂驱动层(Complex Drivers)
复杂驱动层用于处理时间敏感性高、复杂性强的硬件驱动。其特点是允许直接访问硬件资源,绕过抽象层,以满足实时性需求。
- 典型应用:喷油控制、胎压监测。
- 特点:实现快速响应和高精度的硬件控制。
举例:在控制发动机喷油量时,复杂驱动层直接与喷油器硬件交互,确保控制的精度和速度。
3. BSW的模块化设计
基础软件层的模块化设计是其最大的特点,每个模块都有独立的职责,并通过标准化接口进行通信。这种设计带来的优势包括:
- 开发灵活性:开发者可以专注于模块内的功能实现,而无需考虑其他模块的实现细节。
- 维护性:当某个模块需要升级或更换时,只需调整对应接口即可,无需影响整个系统。
- 供应商协作:不同的供应商可以专注于不同的模块开发,通过标准接口无缝集成。
4. BSW在AUTOSAR中的意义
基础软件层作为AUTOSAR架构的核心部分,承担了桥接硬件与应用的职责。通过标准化的模块设计和功能划分,BSW实现了以下目标:
- 硬件无关性:通过硬件抽象层,屏蔽底层硬件差异,为应用层提供一致的接口。
- 性能优化:通过通信服务和内存管理模块,确保系统高效运行。
- 安全保障:加密服务层提供数据加密和认证功能,满足现代汽车的安全需求。
基础软件层(BSW)是AUTOSAR架构不可或缺的组成部分,它不仅为应用层提供了统一的硬件接口,还通过模块化和标准化设计,极大地提高了系统开发的效率和灵活性。在未来,随着汽车电子系统的复杂化和功能需求的增长,BSW的作用将更加重要,为实现高度智能化和安全可靠的汽车系统奠定基础。
六、AutoSAR开发的优势与挑战
优点:
- 软件可复用性高: AUTOSAR提倡软件分层、模块化和封装,将软件分为协议栈、硬件、系统服务和应用层等部分。这种分层设计使得软件模块可以在不同项目中重复使用,提高了软件的复用度。
- 软硬件解耦: 通过标准化接口,AUTOSAR实现了应用软件与基础软件的分离,使得软件能够在不同的硬件平台上运行,无需大幅修改代码,降低了开发和维护成本。
- 易于维护和升级: 分层设计和标准化接口使得系统维护和更新更加便捷,便于软件的升级和功能扩展。
- 标准化接口: AUTOSAR采用标准化的接口,确保不同供应商提供的组件能够无缝集成,减少设计错误,提高系统的兼容性和可靠性。
- 缩短开发周期: 通过减少手动代码量和提高软件质量,AUTOSAR有助于缩短开发周期,提高开发效率。
挑战:
- 系统复杂性: AUTOSAR架构复杂,对工程师的专业知识要求较高,增加了开发的学习曲线和理解难度。
- 高初始成本: 引入AUTOSAR需要较大的初始投资,包括工具链的采购和人员培训等,可能增加项目的前期成本。
- 性能优化难度: 在高复杂度的系统中,实现最优性能需要更多的调优工作,可能增加开发时间和成本。
- 版本迁移成本: AUTOSAR规范的更新可能带来版本迁移的成本,特别是在需要从一个版本升级到另一个版本时,可能需要额外的适配工作。
- 工具链兼容性问题: 不同厂商提供的工具可能存在兼容性问题,集成各个厂商所开发的软件模块需要大量的精力和时间。
尽管存在上述挑战,AUTOSAR在提高软件复用性、降低开发成本和提升系统可靠性方面的优势,使其在汽车电子系统开发中得到了广泛应用。
七、总结
最后让我们用一张盖房子的比喻来作为AutoSAR Classic Platform(CP)分层架构的结尾。
房屋的各部分分别代表架构的层级:
- 屋顶:表示应用层(Application Layer),象征着车辆功能与用户体验。
- 中间楼层:展示了运行时环境(RTE)以及基础软件层(BSW)的各个模块(如系统服务、内存服务、通信服务、I/O抽象、复杂驱动等)。
- 地基:象征微控制器(Microcontroller),提供硬件基础。
- 分层清晰:各层通过箭头和标签展示交互关系。
以房屋层级和功能分工形象地体现了AutoSAR CP架构的模块化和系统化设计。