如何高效学习AUTOSAR?
1 学习AUTOSAR准备学习AUTOSAR之前,需要我们有一定的基础知识储备。C/C 语言,毋庸置疑了,如果你的C语言基础已经在大学毕业前就还给老师了,你最好能在B站或慕课上充充电,如果真的想踏实学习AUTOSAR的话,这项准备必不可少。英文阅读,也必不可少。为什么还要英文啊?主要有两方面,一者,AUTOSAR原文规范,都是纯英文描述,每部分内容动辄几十页,一不小心几百页,要快速筛选我们关注的信息,看懂个中奥秘,没有一定的英语阅读功底,相信我们的学习会束手束脚,久而久之,你可能就放弃学习了。当然,学习过程中我们完全可以借助词典,工具的存在意义就是为“懒惰”的我们服务的。二者,开发过程中,我们少不了和芯片打交道,芯片手册,指导手册,甚至代码世界的注释,多数都是英文的,看不懂它们,对于我们理解物理世界也是举步维艰。嵌入式系统知识,在我们学习过程中也很重要。能看懂C语言,可以阅读英文手册,都是工具或手段上的帮助,而嵌入式系统知识,则是我们的理论知识。要知道单片机,外设芯片,供电芯片,计时芯片,IO驱动,PWM驱动,复杂驱动,CAN通讯芯片,寄存器,MSC通讯,SPI通讯,DMA,看门狗,操作系统。。。当然,嵌入式系统知识并不是对每个学习AUTOSAR的同学都是不可或缺的,也并不是十分紧迫的,可以在工作过程中逐渐积累,逐步提高。持续学习的习惯,其实这点是我们不断进步的源泉。从我工作至今,我最大的体会和收获,就是要持续学习。现在不仅互联网行业是“小步快跑,快速迭代”,我们汽车电子行业,也是在不断的一代代更新迭代。所以,持续学习的习惯要养成,还要保持。有了上面提到的几点准备,我们就可以驶入AUTOSAR的世界了。2学习AUTOSAR过程学习AUTOSAR的过程,可以分为入门——进阶——高阶三个阶段。2.1 入门阶段入门过程,需要我们知道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)。
有了以上了解,拿到规范文档后,你需要明确你的工作内容在整个产品生命周期的位置。简单介绍下几个流程概念。OEMTIER1TIER2整车厂一级供应商二级供应商奔驰、宝马等(做整车的装配工作)大陆、博世等(给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和基础软件协议栈展开。4. 除了以上三类产品开发流程上的角色外,其实还有一个重要角色的存在:工具供应商。了解了AUTOSAR架构和实现过程后,大家可能会看到很多arxml格式的配置文件的制作都离不开工具的支持,以及编译环境、建模工具等,都离不开一直走在超前道路上的工具供应商。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'技术规范',详细介绍技术规范有了以上的入门知识了解后,我们就可以有侧重的学习AUTOSAR知识了。2.2 进阶阶段了解了AUTOSAR的概览知识和分层架构等基础知识后,可以根据自己角色的需求,有倾向性地打开自己要攻克的领域了。按照AUTOSAR的框架,主要内容可以分为如下四部分:2.2.1. 应用层
应用层概览
SWC类型
Ports类型
可运行实体Runnables2.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文件的配置和解析。要多用配置工具尝试不同配置,真正理清代码的实现逻辑,多去试错,才能更快成长。3学习AUTOSAR感悟AUTOSAR是汽车行业的系统架构规范,它让我真正地明白“一流的企业在做标准”。仔细看看AUTOSAR的规范,振兴我们民族工业还有很远的路要走,现在我们甚至连这个规范文档都看不下去,更别谈将来有朝一日能制定行业的规范、世界标准了。沉下心来,真正地吃透它,消化它,吸收它,改进它,创造新的“它”!日拱一卒无有尽,功不唐捐终入海。