转载于:https://www.zhihu.com/question/313797183

不知道题主是否有看过AUTOSAR的最新版本规范?如果要用A4纸打印出来,估计要超过2米多高。光是看到这么厚的规范,估计很多朋友内心已经已经很绝望了。

那么,这么厚的AUOTSAR规范,我们要怎么去掌握它呢?

一、角色定位

先别急,首先我们得问问自己目前的角色是什么?对于题主来说,你得问问自己,即将成为什么角色。因为你的角色不同,那么AUTOSAR应用的场景也不同,自然AUTOSAR工程师要做的事情也是不同的,对AUTOSAR掌握的程度和角度也不一样。

提供你下述几个选项:

1. 整车厂OEM

2. 零部件Tier1

\3. 基础软件包/工具供应商

\4. 半导体厂商

现在对于大多人来说,应用AUTOSAR的角色都是整车厂OEM或者零部件Tier1。在这里,我们就先谈这两个。

基于OEM或者Tier 1的角色去学习AUTOSAR,我们就会轻松很多,2米多高的AUTOSAR规范,我们需要关心的或者需要精通的就不是很多,AUTOSAR很多规范是给基础软件包/工具供应商或者半导体厂商参考去实现具体的BSW协议栈或者芯片对应的MCAL.

如果是整车厂OEM角色学习AUTOSAR的话,主要的应用场景:

\1. 整车E/E架构设计

\2. 应用层的软件组件设计

基于这两个应用场景,我们只需要去深入了解AUTOSAR的方法论及基于AUTOSAR的方法论的SWC设计。

如果是零部件供应商Tier1角色学习AUTOSAR的话,又可以细分你目前工作的主要职责是什么,提供你几个选项:

1. 架构工程师

2. 算法工程师

3. 底层芯片驱动工程师

4. BSW协议栈工程师

5. 复杂设备驱动工程师

6. 集成工程师

针对不同工作职责,你需要深入了解AUTOSAR的侧重也有差别:

针对**架构工程师,**你仅仅需要深入了解AUTOSAR的方法论及SWC的设计方法及技巧

针对**算法工程师,**你仅仅需要深入了解SWC的设计方法

针对**底层芯片驱动工程师,**你仅仅需要深入了解芯片抽象层MCAL的各个功能模块的具体应用细节

针对BSW协议栈工程师,你仅仅需要了解OS,ComStack,DiagStack,Memory Stack,WgdStack等协议栈的功能及应用细节

针对复杂设备驱动工程师,你仅仅需要了解复杂设备驱动的AUTOSAR接口定义方式

针对集成工程师,你仅仅需要深入了解RTE的运行集成及RTE相关的应用配置

二:掌握技能Classic AUTOSAR、Linux和C++

如果你已经知道你的角色定位,你就知道你该学习哪些内容。那么,接下来就是怎么去学AUTOSAR?

先来结论:从Classic AUTOSAR 入门,你需要的基础:Linux和C++

上述更多谈的是Classic AUTOSAR,目前很多大数据,车联网,自动驾驶等等新需求,需要新的Adaptive AUTOSAR支持,但不等于说Adaptive AUTOSAR出现,Classic AUTOSAR就可以淘汰了。两者是是可以共存的一种方式。

Classic AUTOSAR 适用于实时控制,资源有限的控制器上,目前大多数的跟传感器或者执行器相连的控制器都适用。

Adaptive AUTOSAR 更适用于具有较强计算能力的芯片的控制器上,可以实现较大数据吞吐和计算能力的控制器上,一般不用于实时控制,如Domain/Zone控制器及“Vehicle Computer”。

【如果你还不了解CP和AP是什么,可以查看文章:【精通AUTOSAR】第一章:AUTOSAR的未来: AP是否会取代CP?,在此我就不多赘述了】

针对Adaptive AUTOSAR的入门,也建议你从Classic AUTOSAR入门,Adaptive AUTOSAR规范中定义的很多中间件功能族或者服务都是从Classic AUTOSAR演化而来,如果你有一定的Classic AUTOSAR的基础,那么理解Adaptive AUTOSAR也会简单很多。

对于Adaptive AUTOSAR的学习,还需要你有一定的Linux基础,毕竟Adaptive AUTOSAR是在Linux这种操作系统之上的中间件规范。同时Adaptive AUTOSAR是基于C++实现的,故还需要你有C++的基本编程经验,满足上述两个先入条件,我们就可以大胆尝试学习Adaptive AUTOSAR的应用了,Adaptive AUTOSAR不同于Classic AUTOSAR,职责划分很明晰,Adaptive AUTOSAR更侧重于应用层的应用,故学习Adaptive AUTOSAR,我们着重学习:

\1. Adaptive AUTOSAR的方法论

\2. SOA的架构

\3. SOA的基于SOME-IP的实现机理

\4. Application的SWC设计

三、最后

说起来简单,但现实很残酷,虽然你只需要仅仅深入关注某一方面,但没有一个人给你指引入门,其实是很难学会的。

现实工作单位中有两种接受知识方式:

一种是比较稳定型的单位,比如汽车电子行业大多数企业,老员工通常不会把自己掌握的知识和技能无私传授给新进的员工,新进的员工通常需要在项目中自己积累,这种知识积累相对比较慢,通常需要好几年时间才会有些许积累。

另一种是竞争非常激烈的单位,如金融行业,企业一旦招了新员工,需要短时间类胜任工作,那么就需要把知识系统地在短时间类传授给新员工。针对汽车电子行业,就吹笙了很多专业的培训机构,聘请专业有相关的经验的专业,把相关的知识和经验在短时间类传授给学员,这样学员就可以在短时间入门,成长自己。


本文主要以普及CAN通信基本原理为目的,如有从事相关领域或者有意从事车载嵌入式开发的读友们欢迎留言探讨。

本文为「AUTOSAR CAN Communication/AUTOSAR CAN通信」的基础篇。

嵌入式攻城狮:AUTOSAR CAN Communication/AUTOSAR CAN通信10 赞同 · 3 评论文章

本文含有关键字如下。

CAN通信应用,CAN的概要规格,CAN特征,CAN数据通信机制,CAN数据帧

CAN通信应用

CAN是Controller Area Network(控制器区域网络)的缩写,它是一种串行总线协议,旨在代替用于连接组成车载应用程序的系统和传感器的传统多线配置方法。 CAN于1986年在SAE世界代表大会上正式发布,此后于2008年被要求在美国销售的车辆上使用CAN。 在开发CAN时,请记住,车载微控制器和设备可以在不通过主机的情况下进行通信。 单线或双线网络数据总线用于组件间通信,并且最高可以达到1 Mbps的通信速度。

CAN网络由多个ECU(电子控制器单元)组成并且通过事先在ECU中写好的代码与所定义好的ECU进行互动并且实现汽车制造商所定义好的某一类功能(如汽车上的仪表盘就是通过多个ECU互动将信息反映在仪表盘上)。车辆内部CAN参考图如下。

图1 CAN通信应用参考图

CAN的概要规格

常用到的高速CAN(HighSpeed CAN)在ISO11898-2中的定义如下。

网络配置 多主竞争式(CSMA/CA方式)
通信速度 MAX1Mbps
传输类型 2线制
链接方式 总线类型
传输方式 半双工通信
同步方式 Recessive→Dominant时,所有节点同步
其他特征 ● 系统灵活性(易于添加和删除节点) ● 错误检测/通知/恢复功能 ● 内置控制器的通用MCU,收发器数量多,开发工具丰富
适用范围 用作独立系统间耦合、车辆运动控制系统等汽车核心单元的主网络

CAN特征

连接到网络的通信设备一般称为节点,但在CAN中,它是电子控制单元(ECU)。通信线路称为总线,向总线传输数据称为总线访问。

图2 线型总拓扑概念图

ECU(电子控制器单元)是由微控制单元(Microcontroller Unit;MCU) 与收发器(Transceiver)组成。ECU使用电子控制控制器不仅控制发动机和底盘控制之类的核心,而且还控制诸如前灯,汽车音响和空调之类的电气设备,从而为汽车的电气化和自动化提供支持。

电子控制单元(ECU)一般由MCU和CAN收发器组成,CAN收发器向CAN总线或者MCU负责传输和接收CAN帧(CAN Frame),MCU则按照CAN通信协议进行进一步处理。

图3 ECU组成概念图

CAN的特性如下所示。

1. 线型总线拓扑

连接多个节点的网络拓扑结构(对网络的形状进行建模)有环型、星型和线型,但CAN采用线型。 它具有简单的结构,可以轻松添加和删除节点以及设计网络。

图4 CAN线型总拓扑概念图

2. 多主竞争式总线结构,其中所有电子控制单元 (ECU) 都充当主站

只要总线空闲,就可以从任何单元开始通信。

无需指定电子控制单元(ECU)即可发送,任何电子控制单元(ECU)都可以成为主站。

3. 通过 CSMA/CA 方法根据优先级访问总线

提前访问总线的单元可以获得发送权。

如果多个单元同时开始发送,则发送优先级高(ID值较小)的报文的电子控制单元(ECU)获得发送权。在CSMA/CA方式中,尽量避免在使用总线的同时从其他节点传输数据,但现实中存在多个节点同时传输数据而发生冲突的情况。CAN 具有确定其优先级的通信仲裁机制。

4. 使用差分电压传输提高抗噪性能

通过两条通信线(双绞线)产生的电压差传输数据。

CAN 使用称为 CANH / CANL 的通信线路执行传输和接收。没有电位差的信号称为隐性(Recessive)信号,其逻辑值为1。具有电位差的信号称为显性(Dominant)信号,其逻辑值0。如果通信总线上发生显性和隐性(Recessive)冲突,则显性(Dominant)优先。

由于从外部施加的噪声是相同的,因此不会产生电压差,即使产生噪声也不易受到影响。

图5 CAN差分电压原理图

5. 错误检测和处理

所有电子控制单元(ECU)都可以检测到错误。

检测到错误的电子控制单元(ECU)立即将错误通知所有其他电子控制单元(ECU)。当发送消息的电子控制单元(ECU)检测到错误时,它会强制终止传输并重复传输,直到消息正常传输为止。

CAN数据通信机制

CAN 通信以称为帧(Frame)的单位进行。

每个祯(Frame)的作用如下所示。

  • 数据帧(Data Frame)

发送单元向接收单元发送数据的帧。

  • 远程帧(Remote Frame)

接收单元请求发送单元发送数据的帧。

  • 错误帧(Error Frame)

当在传输/接收过程中检测到某些错误时,用于通知其他单元错误的帧。

  • 超载帧(Overload Frame)

接收单元通知它未准备好接收的帧。

在CAN中,通过从需要数据的 ECU 发送远程帧并从具有该数据的 ECU 返回数据帧来建立通信。 排除数据帧中的控制位,实际可传输的最大数据量为 8 个字节(CAN FD 最多 64 个字节)。

近年来,各个ECU之间的信息交换量变得非常大,因此为了降低总线占用率,很少使用远程帧,常见的是周期性地向各个ECU传输数据帧的方法。

CAN数据帧

数据帧有两种帧格式:标准格式(Standard Format)和扩展格式(Extended Format)。

在扩展格式中,在Base ID 11bit的基础上增加了ID Extension 18bit,可以表示一个总长度为29bit的ID。

如果标准格式和扩展格式同时发送相同的ID,则标准格式优先。

  • 标准格式(Standard Format):

图6 标准格式(Standard Format)数据帧

SOF(Start Of Frame),是一个 1 位显性区,用于通知数据帧的开始。

Arbitration Field(仲裁领域),判断帧优先级的区域。

Base ID:设置标准 ID 11 位

RTR:区分数据帧和远程帧

Control Field(控制领域),由IDE、FDF、DLC组成的区域。

IDE:区分标准格式和扩展格式

FDF:区分CAN和CAN FD的位

DLC:代表数据长度

Data Field(数据字段),储存数据的区域。

CRC Field(CRC字段),判断帧传输错误的区域。

ACK Field(确认字段),表示正常接收信号的区域。

EOF(End Of Frame),用于通知数据帧结束的区域。

  • 扩展格式(Extended Format) :

图7 扩展格式(Extended Format)数据帧

仲裁字段和控制字段在扩展格式上不同于标准格式,其余部分与标准格式相同。

扩展格式是一种常用于公共汽车和卡车等大型车辆的CAN通信的格式。

Arbitration Field(仲裁领域),判断帧优先级的区域。

Base ID:设置标准的 11 位 ID

SRR:1 位隐性固定,带替代远程请求位

IDE:标识符扩展位用于区分 1 位隐性固定、标准格式和扩展格式。

ID Extension:可设置18位扩展ID,与Base ID共可显示29位ID。

RTR:区分数据帧和远程帧

Control Field(控制领域),由 FDF、r0、DLC 组成的区域。

FDF:区分CAN和CAN FD的位

R0:保留区域

DLC:表示数据长度

AUTOSAR初了解相关推荐

  1. AutoSAR系列讲解(入门篇)5.2-描述文件

    AutoSAR系列讲解(入门篇)5.2-描述文件 描述文件 一.主要流程 二.各描述文件介绍 1.SWC描述文件 2.系统约束描述文件 3.ECU资源描述文件 4.系统配置描述文件 5.ECU提取文件 ...

  2. AutoSAR配置视频讲解:简介

    AutoSAR实验视频讲解:闪烁一颗LED实验[简介] 下一篇 | 总目录 大家好,欢迎来到雪云飞星的<AutoSAR实验课的视频讲解>专栏.看过<AutoSAR入门到精通系列讲解& ...

  3. autosar工具链

    CANdelaStudio--诊断需求定义工具,诊断协议开发软件 .CANdelaStudio用于定义ECU的诊断功能,并且生成诊断数据库-CDD文件来优化整个诊断开发过程,为"CANdel ...

  4. 【小猫爪】AUTOSAR学习笔记12-功能安全之E2E模块

    [小猫爪]AUTOSAR学习笔记12-功能安全之E2E模块 前言 1 E2E模块简介 2 E2E功能简介 2.1 五种保护机制 2.2 E2E的状态机 2.3 E2E Protection Wrapp ...

  5. 因为AUTOSAR而改变的车载软件开发

    因为AUTOSAR而改变的车载软件开发 不断增长的车载软件规模 通过模块化提高再利用性 不断增长的车载软件规模 汽车电子化的进度可以用几个指标来表示.作为其指标之一使用的是搭载的ECU(电子控制单元) ...

  6. CP AUTOSAR 简介

    嵌入式系统不支持硬件抽象,使得我们每次在进行新的处理器更换之后.都需要进行重新进行底层软件的开发. 2003年建立autosar 组织. autosar官方文档非常长2万多页,从这里可以看出什么? 1 ...

  7. 2020.12.21-汇川电源软件工程师初面

    总结下今天汇川技术的初面 一共半个小时 两个面试官 觉得自己的表现一半一半吧 不是发挥的特别好 第一个面试官主要问编程及芯片相关的 这一块还好 基本都在射程范围内 第二个面试官主要问题汽车软件开发流程 ...

  8. Autosar精进有道

    本文框架 0. 前言 1. 成长的五个阶段 1.1 了解功能 1.2 实现功能 1.3 问题解决 1.4 代码精进 1.5 架构优化 2. 2W1H工作法 0. 前言 如果你是初入汽车电子行业从事软件 ...

  9. 自动驾驶QNX,Linux,Autosar概述

    自动驾驶QNX,Linux,Autosar概述 QNX是一个分布式.嵌入式.可规模扩展的实时操作系统.遵循POSIX.1 (程序接口)和POSIX.2 (Shell和工具).部分遵循POSIX.1b( ...

  10. 硬件安全模块如何启用AUTOSAR

    硬件安全模块如何启用AUTOSAR How hardware security modules enable AUTOSAR 越来越复杂的软件和车内连接需要越来越多的加密保护.这种保护也必须由经典的实 ...

最新文章

  1. 禁用页面缓存的几种方法(静态和动态)
  2. C#中将dll汇入exe,并加壳
  3. python读取图片属性信息
  4. matlab调用q外部exe文件,Matlab GUI调用外部程序生成exe,DOS窗口输入问题
  5. 费用流:spfa Dijkstra
  6. Hybris ECP(Enterprise Commerce Platform)的调试
  7. Python 各种应用收集
  8. Eclipse的快捷键大全
  9. (240)FPGA验证工程师岗位技能树
  10. Android应用被强制停止后无法接受广播解决方案
  11. python调用指定浏览器打开网页
  12. mysql让数据-1_mysql数据库基本操作1
  13. OpenGL超级宝典(第7版)之VS2019使用sb7框架搭建自己的程序
  14. 数据库完整性详细解释
  15. Windows系统下编译torch-points-kernels
  16. 如何根据pom文件创建自己的本地仓库
  17. 使用myeclispe或者sts工具,创建的myBatis的 xml文件不提示的问题解决方法
  18. 某游戏公司测试工程师面试题
  19. 爆刷PAT(甲级)——之【1148】 Werewolf - Simple Version(20 分)——思维
  20. android 角标数字管理,Android应用推送角标设置方法

热门文章

  1. 伏羲六十四卦+36D
  2. 快速实现NBIOT UDP通信
  3. Win11卸载程序在哪里?Win11卸载软件的两种方法
  4. Image Processing in the Spatial Domain 空间域图像处理
  5. 翻译: AWS DeepRacer一步一步详细步骤的自定义航点更快地运行 自定义waypoints
  6. GSP算法与SPADE算法
  7. Android Accessibility大致解析,通过adb运行纯java代码打开应用的辅助功能
  8. 爱情在手机中升华-致我最亲爱的你们
  9. 应用程序,软件,小程序,APP的区别?
  10. DirextX9之2D编程 通过16位色位图创建背景透明的纹理