1. 学习AUTOSAR准备
学习AUTOSAR之前,需要我们有一定的基础知识储备。
C/C++语言,毋庸置疑了,如果你的C语言基础已经在大学毕业前就还给老师了,你最好能在B站或慕课上充充电,如果真的想踏实学习AUTOSAR的话,这项准备必不可少。
英文阅读,也必不可少。为什么还要英文啊?主要有两方面,一者,AUTOSAR原文规范,都是纯英文描述,每部分内容动辄几十页,一不小心几百页,要快速筛选我们关注的信息,看懂个中奥秘,没有一定的英语阅读功底,相信我们的学习会束手束脚,久而久之,你可能就放弃学习了。当然,学习过程中我们完全可以借助词典,工具的存在意义就是为“懒惰”的我们服务的。二者,开发过程中,我们少不了和芯片打交道,芯片手册,指导手册,甚至代码世界的注释,多数都是英文的,看不懂它们,对于我们理解物理世界也是举步维艰。
嵌入式系统知识,在我们学习过程中也很重要。能看懂C语言,可以阅读英文手册,都是工具或手段上的帮助,而嵌入式系统知识,则是我们的理论知识。要知道单片机,外设芯片,供电芯片,计时芯片,IO驱动,PWM驱动,复杂驱动,CAN通讯芯片,寄存器,MSC通讯,SPI通讯,DMA,看门狗,操作系统。。。当然,嵌入式系统知识并不是对每个学习AUTOSAR的同学都是不可或缺的,也并不是十分紧迫的,可以在工作过程中逐渐积累,逐步提高。
持续学习的习惯,其实这点是我们不断进步的源泉。从我工作至今,我最大的体会和收获,就是要持续学习。现在不仅互联网行业是“小步快跑,快速迭代”,我们汽车电子行业,也是在不断的一代代更新迭代。所以,持续学习的习惯要养成,还要保持。
有了上面提到的几点准备,我们就可以驶入AUTOSAR的世界了。
学习AUTOSAR的过程,可以分为入门——进阶——高阶三个阶段。
入门过程,需要我们知道AUTOSAR到底是什么东西?为什么要存在这个东西?它的发展是怎样的?AUTOSAR的概况知识。
其实,如果你是以为正在学习AUTOSAR的工程师,多半已经对AUTOSAR有了些许了解。这就像我们当年写毕业论文一样,还是要了解下研究对象的历史和概览知识。有些同学觉得这个过程没有意义。不然!我们研究一个方向的知识,如果连为什么研究和研究现状、背景都不清楚,我们能研究多深奥呢?而且,要知道发动机的构造和原理,你不从化油器开始,怎么能明白它其中组件今天存在的意义呢。相信我,从了解它的背景开始。
当然,还有一个非常重要的步骤——获取AUTOSAR的规范文档。
从2003年成立以来,AUTOSAR已经更新到AUTOSAR 4.4.0 release版本,后台回复“AUTOSAR”可以获取。当然,你也可以从官网获取最新的规范文档,网址:autosar.org/standards。
2018年,为了迎合未来汽车智能化、网联化的需求,AUTOSAR联盟推出了一个全新的平台,将AP加入到原有的AUTOSAR平台中,形成自适应AUTOSAR平台(AUTOSAR Adaptive Platform,AP),并于2018年10月迎来了适用于面向量产的首次发布,另外还将原有平台更名为经典AUTOSAR平台(AUTOSAR Classic Platform)和自适应平台AUTOSAR(AUTOSAR Adaptive Platform),行业内大家习惯叫CP(Classic Platform)和AP(Adaptive Platform)。
有了以上了解,拿到规范文档后,你需要明确你的工作内容在整个产品生命周期的位置。简单介绍下几个流程概念。
OEM | TIER1 | TIER2 |
整车厂 | 一级供应商 | 二级供应商 |
奔驰、宝马等(做整车的装配工作) | 大陆、博世等(给OEM供应ECU等) | 英飞凌、NXP等(为TIER1供应零件,比如ECU上的芯片、电路板等) |
AUTOSAR的开发流程:
(高清图后台回复“AutoSAR开发流程”获取)
基本概念
Software Component (SW-C):软件组件
Virtual Functional Bus (VFB):虚拟功能总线
Runtime Environment (RTE):运行环境(实时环境)
Basic Software(BSW):基础软件
Methodology principle:方法论原理
Mode Management:模式管理
Memory Abstraction:存储抽象
Runnables:可运行实体
文档命名规则
EXP: 即Explaination"解释",详细介绍论题
MMOD: 即Meta Model"元模型",介绍 AUTOSAR元模型
MOD: 即Model"建模",介绍建模的原理
RS: 即Requirement Specification"需求规范", 详细介绍需求
SRS: 即Softeware Requirement Specification"软件需求规范", 描述所有软件模块的规范
SWS: 即Softeware Specification"软件规范", 介绍软件模块设计和实现的规范
TPS: 即Template Specification"模板规范", 详细介绍元模型
TR: 即Technical Specification"技术规范",详细介绍技术规范
2.2 进阶阶段
了解了AUTOSAR的概览知识和分层架构等基础知识后,可以根据自己角色的需求,有倾向性地打开自己要攻克的领域了。按照AUTOSAR的框架,主要内容可以分为如下四部分:
2.2.1. 应用层
2.2.2. RTE
RTE概述
RTE对Runnables的管理
RTE对Ports的管理
RTE对数据一致性的管理
RTE对interface的管理
2.2.3. BSW
BSW的概述
BSW的IO实现
BSW的通信实现
BSW的存储实现
BSW的模式管理
BSW的看门狗实现
BSW的诊断系统实现
BSW的操作系统实现
2.2.4. 方法论
方法论概述
ECU的描述文档
ECU提取的实现
其实上面提及的都是非常笼统地概括了和AUTOSAR工作相关的内容,能针对性地将自己要学习的领域入门,再进一步,那就已经非常好了。
2.3 高阶阶段
所谓高阶,其实是我们在学习过程中的融会贯通。
如何才能成为专家级的AUTOSAR工程师呢?Demu以为,需要有项目实战的支撑。
前面的入门和进阶已经为我们成为高手做好了铺垫,剩下的就需要我们在实际的项目开发过程中成长自我,提升自我。
在高阶阶段,我们可以将AUTOSAR的规范文档作为理论指导,到实际的项目代码世界去徜徉,看看CAN通信从CAN驱动到CanIf,再到CanTp,再到PDUR,再到AUTOSAR COM是如何层层封装,层层调用的。CAN网络管理和模式管理,UDS,DCM和Dem又在其中发挥着怎么样的作用。答案都在代码里。
而且,告诉大家一个小窍门,学习AUTOSAR,尤其是BSW过程,一定要充分利用好Debug工具,它可以让你真正“看到”代码是如何运行的。
另外,AUTOSAR实际配置过程中的精髓是arxml文件的配置和解析。
要多用配置工具尝试不同配置,真正理清代码的实现逻辑,多去试错,才能更快成长。