1 获取Spec
如何获取Autosar SPEC文档?
从官网获取最新的规范文档,网址:https://www.autosar.org/standards。
如果浏览器拦截, 点开高级, 点击继续访问即可。
Autosar 分Classific 和 Adaptive Platform. AUTOSAR分为Classic Platform AUTOSAR(CP)和Adaptive Platform AUTOSAR(AP)两个平台。 最早的Classic AUTOSAR目前已广泛应用于传统嵌入式ECU中,如发动机控制器、电机控制器、整车控制器、BMS控制器等等,而Adaptive AUTOSAR未来会更多的应用于如ADAS、自动驾驶等需求高计算能力、高带宽通信、分布式部署的下一代汽车应用领域中。学习入门可以从Classic Platform AUTOSAR 开始。
2 AutoSar 架构
以下转载自: 汽车工程师谈技术 AUTOSAR架构 - 知乎
2.1 整体架构
从图中可以看出autosar作为汽车ECU软件架构,是通过分层来实现软硬件隔离。就像大多数操作系统一样,通过分层实现软件架构的最通用化。
上图是一张整体的架构图。后续会仔细讲解每一个小的组件模块。AUTOSAR经典平台架构在微控制器上运行的三个软件层之间的最高抽象级别进行区分:应用程序,实时运行环境(RTE)和基本软件(BSW)。
- 应用软件层:逻辑代码,基本上是与硬件无关的。
- 实时运行环境: RTE表示应用程序的完整接口,软件组件之间的通信和通过RTE访问BSW。
- 基础软件层:分为三个主要层次和复杂的驱动因素: 服务、ECU(电子控制单元)抽象和微控制器抽象。服务进一步划分为代表系统、内存和通信服务的基础设施的功能组。
2.2 App应用层
ApplicationLayer实现具体的应用功能,由软件组件(SWC)组成,基于AutoSAR设计的SWC组件能够提高上层应用软件的复用性和灵活性。
每一个SWC相当于一个.c文件,SWC和SWC之间的通信又会通过Port(端口)实现,SWC内部又有多个runable(运行实体)组成。
2.3 RTE运行时环境
目的:使SWC与ECU的映射无关,隔离APP和BSW
功能:提供跨ECU /ECU内部的通信管理
实现:
1. RTE对Runnables的运行支撑(Runanable的触发条件)
2. RTE对Ports支撑(S/RC/S port的通信方式)
3. 实现SWC之间的通信
4. RTE对数据一致性管理
2.4 BSW基础软件
BSW被抽象划分为如下层面:
ServiceLayer:服务层
1. 提供给应用程序的服务
2. 诊断,非易失性内存管理,操作系统(OS),通讯
3. 内存和ECU管理
特别注意:CDD不属于BSW,它是独立Autosar架构的一些复杂驱动,直接通过CDD_SWC来操作硬件驱动。
ECUAbstraction Layer:ECU抽象层
1. 使上层软件与ECU硬件设计无关
2. 包含ECU板上外部设备的驱动
3. 内部设备与外部设备的接口(I/O)
MCAL:Microcontroller Abstraction Layer 微控制器抽象层
1. 使上层软件与微控制器硬件无关,实现软硬件隔离。
2. 实现MCU中外设的驱动
2.5 MCAL微控制器抽象层
MCAL就是硬件驱动的封装,比如CAN、ETH、SPI等外设驱动封装,和芯片息息相关。一般都是购买芯片原厂MCAL的软件包。
主要分为4大模块:
微控制器驱动:
1. GPT:General Purpose Timer Driver,通用定时器,为操作系统或者其他基础软件模块提供计时功能
2. Watchdog:看门狗驱动,除防止程序跑飞基本功能外,功能安全还使用看门狗进行程序流监控,比如监控程序执行时间、执行顺序等。
3.MCU:Microcontroller Unit Driver,基本的MCU设置:时钟、休眠、复位设置等。
4. Core Test:芯片内核测试,提供上电或者周期检测两种方式,检测结果能触发中断。
存储器驱动
1. Flash Test & Ram Test:存储器测试驱动。
2. Flash/Eep Driver:提供基本的存储器操作,如初始化,擦除,写入,读取等。
通信驱动
CAN、ETH、LIN、SPI等通讯外设的通信功能实现
I/O驱动
1. Port:所有端口的统称,包含了(DIO和配置成特有功能的io口)
2. ADC:模拟/数字转换器,采样模拟信号,转成数字信号。
3. DIO:Digital Input/Output Driver,数字输入输出驱动,也就是配置成GPIO功能,实现通用的输入输出功能。
4. PWM:生成周期和频率可变的PWM方波
5. ICU:Input Caputre Unit,输入捕获单元,捕获方波周期或者捕获方波电平持续时间。
6. OCU:Output Compare Unit,输出比较单元,基于定时器单元的比较模块。
角色定位
你需要明确你的工作内容在整个产品生命周期的位置。简单介绍下几个流程概念。
OEM | TIER1 | TIER2 |
整车厂 | 一级供应商 | 二级供应商 |
奔驰、宝马等做整车装配 | 大陆、博世等(给OEM供应 ECU) | 英飞凌、NXP等(为Tier1供应零件, 如ECU 上的芯片电路板等) |
圈内的同学比较了解上面提到的几个名词,研究AUTOSAR的工程师在OEM、TIER1和TIER2都会有分布,各自角色不同,研究重点也不同。我们按产品开发流程的顺序大致梳理:
1. 整车厂以EE架构设计和应用层功能设计为主,所以如果你身在OEM中,你只需要着重了解AUTOSAR的方法论和基于方法论的SWC设计即可。这两点说着简单,其实并非我们想象中那么简单。方法论本身就是非常宏观的概念,想要把控产品流程,能为TIER1提供打开需求文档,这本身就要对功能和下游工作十分了解,才能有高质量的输出;
2. TIER1涉及AUTOSAR的工作分工就比较多了。如果你是系统工程师,着重研究功能算法的实现,那么你需要对SWC的升级了如指掌,深入理解;如果你是软件架构工程师,对于上游OEM提供的需求文档要有宏观概念,所以也要对方法论和SWC审计十分了解;如果你是基础软件工程师,需要整个团队协同实现:底层驱动工程师要深入学习芯片的抽象层MCAL应用;BSW协议栈工程师要熟悉OS,ComStack,DiagStack,Memory Stack,WgdStack等协议栈应用细节;复杂驱动工程师,要对AUTOSAR针对CDRV的接口定义方式等深入研究;如果集成工程师,要十分清楚RTE的运行集成和相关应用配置;
3. TIER2要深入研究的内容和TIER1的BSW工程师侧重内容相似,主要围绕芯片MCAL和基础软件协议栈展开。
3. Spec 研读路线
AUTOSAR规范是一个巨大的标准规范,其包含200个Specification,超过20000条需求,所以,让一个专家去理解所有的需求基本不可能。
建议所有的AUTOSAR初始学习者从阅读Layered Software Architecture文档开始,其定义了AUTOSAR High-level层面的特性.
以下转载自 Classic_AUTOSAR规范研读方法 - 知乎
AUTOSAR Methodology规范可作为接下来学习的内容,其包含大部分重要的Artifact,这些Artifact是由AUTOSAR开发过程中不同的角色定义的,然而Methodology规范也包含了很多此时不能理解的内容,所以这个时候应该暂忽略他们,只关注自己熟悉的话题。
接下来就可以阅读自己关注的规范了。关注架构设计的读者应该阅读AUTOSAR Template Specification(TPSs).比如说,如果读者关注逻辑系统/ECU设计,他们应该关注Software Component template,以理解怎么去定义应用软件组件(Application Software components)以及数据交互点。
建议初学者要集中关注TPS和SWS Specification,至少在一开始,TPS和SWS包含很多解释和图形以助于更好的理解AUTOSAR Features。
对于想更深入了解AUTOSAR读者来说,还有两个额外的建议:第一,AUTOSAR规范不建议从头读到尾,建议针对一个特定的话题,去不同的规范里去找其解释;第二,读者应该要始终读最新的AUTOSAR规范,因为只有最新的规范会包含最近更新的内容。
参考
Demu | 如何高效学习AUTOSAR? - 知乎 |
汽车工程师谈技术 | AUTOSAR架构 - 知乎 |
Charles | Classic_AUTOSAR规范研读方法 |