汽车电子Autosar之车载以太网

news2024/11/25 21:12:05

前言


        近些年来,随着为了让汽车更加安全、智能、环保等,一系列的高级辅助驾驶功能喷涌而出。未来满足这些需求,就对传统的电子电器架构带来了严峻的考验,需要越来越多的电子部件参与信息交互,导致对网络传输速率,稳定性,负载率等方面都提出了更为严格的挑战。

        除此以外,随着人们对汽车多媒体以及影音系统的需求越来越高,当前虽已有各式各样的音视频系统,可随着汽车电动化进程的加速推进,手机控制车辆以及彼此交互的场景不断扩大,可以想象未来联网需求只会不断拓展,无论是车内还是车外的联网需求都不约而同的提出了更多网络带宽的重要性。

        为此,车载以太网应运而生。首先以太网的首要优势之一在于支持多种网络介质,因此可以在汽车领域进行使用;同时由于物理介质与协议无关,因此可以在汽车领域可以做相应的调整与拓展,形成一整套车载以太网协议,该协议将会在未来不断发展并长期使用。

        今天,我们来一起探索车载以太网协议的基本面貌。为了便于大家理解,以下是本文的主题大纲:


正文


车载以太网发展历史


        自1980年至今,IEEE组织、OPEN Aliance SIG组织、宝马、博通公司等为传统以太网到汽车领域的应用拓展发挥了十分关键的作用,重要里程碑事件记录如下:

 

  •         1980年,Ethernet 1.0成功发布;
  •         1985年,IEEE 802小组公布802.3协议,推出了基于CSMA/CD的10M以太网技术;
  •         2004年,BMW公司考虑采用博通公司的以太网技术并于2008年在宝马7系上成功量产以太网刷写技术,其中关键点在于博通公司的单对非屏蔽以太网全双工技术,并保证EMC测试全部PASS;
  •         2013年,BroadR-reach技术成功在宝马5系的环视系统中成功量产;
  •         近年来由著名汽车整车厂与供应商组成的OPEN Aliance SIG相继发布了TC8(车载以太网ECU测试规范)以及TC10(车载以太网休眠唤醒规范),同时携手IEEE将车载以太网标砖转化为通用标准。

车载以太网总体架构


        正由于上述IEEE组织,OPEN Aliance SIG组织, AVNU组织,AUTOSAR组织的共同发展与合作,进而规范了车载以太网符合OSI模型的整体架构,如下图1所示:

 

图1 车载以太网OSI总体架构


        首先针对图1中AVNU,IEEE,AUTOSAR以及OPEN Aliance SIG组织做简要介绍,以便能够较为清晰地了解各组织在车载以太网总体架构地主要贡献及主要目标。

  • AVNU: 致力于推进AVB/TSN时间敏感网络在汽车领域的应用,使以太网成为一种时间确定性的实时网络;
  • IEEE: 电气与电子工程师协会,其中802.3工作小组致力于推进以太网相关标准的制定与完善;
  • AUTOSAR: 汽车开放式系统架构组织,致力于实现汽车软硬间之间解耦的标准同时也为车载以太网软件层级作出了相关规范说明;
  • OPEN Aliance SIG: 为非盈利性的汽车行业和技术联盟,旨在鼓励大规模使用以太网作为车联网标准;

同时,从上图中可以看出标记为“IT”则为传统以太网技术协议规范,而标记为“Automotive”则为车载以太网技术协议规范。

显而易见,除了物理层、UDP-NM、DOIP、SOME/IP、SD这五个模块为车载以太网技术协议规范之外,其余均为传统以太网技术。

物理层


车载以太网与传统以太网相比,车载以太网仅需要使用1对双绞线,而传统以太网则需要多对,线束较多。

        同时,传统以太网一般使用RJ45连接器连接,而车载以太网并未指定特定的连接器,连接方式更为灵活小巧,能够大大减轻线束重量。除此以外,车载以太网物理层需满足车载环境下更为严格的EMC要求,对于非屏蔽双绞线的传输距离可达15m(屏蔽双绞线可达40m)。

        虽然车载以太网只采用单对差分电压传输的双绞线,但是100M/s以太网可以通过回音消除技术来实现全双工通信。下面就通过表格形式列举出当前主流的物理层标准:

 

表1 车载以太网物理层标准


从上表可知,当下主流的车载以太网协议主要为IEEE 100BASE-T1以及IEEE 1000BASE-T1,常规使用可采用100BASE-T1,如果需要更高带宽,可选择1000BASE-T1。

不过因为速率越高,对车载以太网物理层一致性测试就更为严格。

其中以太网所有物理层的功能全部集中在一个称为“PHY”的模块中,它将以太网控制器以及物理介质连接在一起,并且通过一个标准化接口MII连接,同时PHY模块与底层介质通过MDI接口连接,以100BSASE-T1所示,如下图2所示:

在这里插入图片描述

 

图2 物理层PHY接口结构图 (来源:Vector)


模块接口定义见上图2,具体有关PHY模块的内容在此不做展开,后续会单独专题讲解奉上,敬请关注!

数据链路层


数据链路层可细分为LLC(Logic Link Control)以及MAC(Media Access Control)两个层级。此两层级定义与作用如下:

  • LLC: 负责向上层提供服务,管理数据链路通信,链接寻址定义等,与所用物理介质没有关系;
  • MAC: 负责数据帧的封装,总线访问方式,寻址方式以及差错控制等,MAC层的存在则可以使得上层软件与所用物理链路完全隔离,保证了MAC层的统一性;

其中LLC子层的服务与服务在IEEE 802.2 LAN协议中有所定义,MAC层的主要功能作用则在IEEE 802.3中定义,并采用CSMA/CD访问控制方式,一般MAC层协议在俗称的“网卡”中实现。

以太网帧格式

以太网随着历史发展总共存在5种帧格式,不同的以太帧存在不同的类型及MTU值(最大传输数据长度),且可以在同一物理介质上同时存在。

目前广泛使用的以太网帧格式主要有2种,分别为Ethernet II帧格式与IEEE802.3帧格式。其中车载以太网主要采用Ethernet II帧格式。

  • 完整Ethernet II帧格式

在这里插入图片描述


图3 Ethernet II帧格式

  • 完整IEEE802.3帧格式

 

在这里插入图片描述

 


图4 IEEE 802.3帧格式


如上图3与图4进行对比可知,Ethernet II帧格式中的“类型”位置被802.3帧格式的“长度”所替代。上述不同字段的具体含义如下表2所示:

在这里插入图片描述

 

表2 以太网帧字段定义说明


特别的,我们可以通过判别“类型/长度”字段来进一步判断当前帧的类型。若该字段值小于等于0x5DC,那么该帧为IEEE 802.3格式,若该字段值大于等于0x600,则该帧为Ethernet II帧格式

同时需要注意Ethernet II帧格式并没有LLC子层的概念,只有MAC层来处理数据服务等内容,而IEEE 802.3则可以

MAC帧格式

对于MAC帧格式则是从“目标物理地址”开始至“帧校验”结束为一完整的MAC帧。如下图4所示为MAC的完整帧,包括目标物理地址,源物理地址,类型/长度,数据以及帧校验CRC组成。

在这里插入图片描述

 

图4 MAC完整帧格式


特别地,如图中4所示,“VLAN Tag” 字段可选,当没有VLAN Flag则为Basic MAC帧,当存在该字段时,则为VLAN MAC帧,即MAC帧可分为基本MAC帧(无VLAN)和标记MAC帧(包括VLAN)两种。

其中“类型”字段通常可以为以下几种类型,且该类型列表由IEEE组织来维护,如下表3所示列举了车载以太网领域常用的Ethernet Type:

在这里插入图片描述

 

表3 车载以太网常用类型


MAC寻址方式

MAC地址作为每个以太网接口的固定地址,一般由供应商出厂就固定下来不可更改。地址长度为6Byte,例如00-17-4F-08-78-88,其中前3个字节为组织编号,如下图5所示为MAC地址的寻址方式以及字节定义:

在这里插入图片描述


图5 MAC寻址方式(来源:Vector)


如上图所示:前3个字节为组织唯一标识号,由IEEE分配给到网卡生产厂商,其中Byte5/Bit1表示该MAC地址是全球地址还是本地地址,Byte5/Bit 0 用于表示该帧为组播MAC地址,单播地址还是广播地址;

 

  • 0:单播地址(1对1),普通终端设备接收;
  • 1:组播地址(1对多),仅交换机会接收,普通终端设备不会接收;
  • 48个bit全为1:表示为广播地址,所有设备均会接收;

MAC VLAN

VLAN作为一种分割广播域的技术手段,能够有效降低网络不必要的开销,全称为虚拟局域网技术。该技术分割广播域的方法有很多种,在此仅简要介绍下基于基于MAC的动态VLAN技术,如下图6所示:

在这里插入图片描述

 

图6 基于MAC的动态VLAN技术(来源 Vector)


如上图所示,ECU1与ECU2被划分为属于同一VLAN1,而ECU2与ECU4则被划分为属于同一VLAN2。只需要提前配置好各ECU所属的VLAN即可,基于MAC的VLAN的优点在于即使换了连接端口或者交换机都可以自动重新识别,不需要重复进行配置,主要用于DHCP或者ARP协议发送广播帧的场景。

正如前面所述MAC帧可分为基本MAC帧(无VLAN)和标记MAC帧(包括VLAN)两种,而如果为如果时标记MAC帧,那么就会使用到VLAN Tag,同时“数据”字段的最小长度为不带VLAN标记的46Byte与带VLAN标记的42Byte,因为VLAN Tag占用了4个字节,最大数据长度均为1500Byte。

如下图7所示则为VLAN Tag的含义说明:

在这里插入图片描述

 

图7 VLAN Tag定义说明 (来源:Vector)


如上图7所示,VLAN Tag总共可以分为以下3个部分:

  • PRI(3Bit): 帧优先级,就是通常所说的802.1p;
  • CFI(1Bit): 规范标识符,0为规范格式,用于802.3或Ethernet II以太网帧;
  • VLAN ID: 就是VLAN的标识符ID;


网络层


网络层就是IP协议所在的层级,IP协议可以分为IPV4以及IPV6,常用的主要是IPV4,IP协议的主要作用就是基于IP地址转发分包数据。

同时IP也是一种分组交换协议,但是IP却不具备自动重发机制,即使数据没有达到目的地也不会进行重发,所以IP协议属于非可靠性协议。

车载以太网主要使用IPV4协议,同时由于该协议也属于传统以太网范畴,所以不会对该模块做过多细节性阐述。

IPV4协议头

在这里插入图片描述


图8 IPV4协议头


由上可知,IP首部为20Byte。

 

该协议头的各部分解释如下图:

在这里插入图片描述

 

图9 IPV4 协议头信息表


IPV6协议头

在这里插入图片描述


图10 IPV6 协议头信息表


需要注意的是IPv6 数据报文是 IPv4 的 4 倍,IPv6 数据报文主要由两个部分组成:Header(首部)和 Payload(负载)。其中,IPv6 Header 的大小是 IPv4 的 2 倍。该协议头的各部分解释如下图:

 

在这里插入图片描述

 

图11 IPV6协议信息表


传输层


传输层的协议就是TCP/UDP,这两者协议彼此独立,也可以同时存在,看具体使用场景需求。TCP/UDP作为传统以太网的标准协议,在这里同样不做过多展开,整体介绍下TCP与UDP的特点及区别。

  • TCP协议
  •         TCP协议头
  • 在这里插入图片描述

 

图12 TCP协议头


如下图13所示为TCP协议头的字段解释:

在这里插入图片描述

 

图13 TCP协议头信息表

  • TCP建立连接过程

TCP是面向连接的可靠的网络通信,因此要通信双方建立通信连接,必须经过我们常说的“三次握手”才能够开启以太网通信,如下图14所示为TCP的“三次握手”连接过程。

在这里插入图片描述

 

图14 TCP ”三次握手“过程

  • TCP断开连接过程

TCP已经连接的双方如果需要断开,则需要**“四次挥手“**来完成此过程”,如下图15所示:

在这里插入图片描述

 

图15 TCP”四次挥手“过程

  • TCP协议特点

从上述的TCP建立连接以及断开连接的过程,不难得出TCP是一种面向连接可靠的传输层协议。具体总结有以下一些特点:

  • 面向连接;
  • 仅支持单播传输,点对点方式,不支持多播或者广播方式;
  • 面向字节流;
  • 可靠传输;
  • 提供拥塞控制;
  • 全双工通信;

UDP协议

UDP全称为用户数据包协议,在网络中与TCP协议一样用来处理数据包,是一种无连接的协议。同时UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。

  • UDP协议头

如下图所示为UDP 协议头的组成:

在这里插入图片描述

 

图16 UDP协议头


如上图所示,UDP首部为8Byte

各字段的具体含义如下表所示:

在这里插入图片描述

 

图17 UDP协议字段信息表

  • UDP协议特点

对比TCP协议,UDP具备以下一些特点:

  • 面向无连接,即不需要建立连接便可以直接进行通信;
  • 存在单播,多播,广播的功能;
  • UDP是面向报文的,UDP的报文报经过IP层不会进行任何拆分或重组;
  • 不可靠性:由于没有像TCP的拥塞控制以及出错自动重传等机制,则会导致发送的报文五宝保证接收方是否收到,因为网络本身就存在诸多的不确定性;

TCP与UDP区别

如下图所示,较为清晰的解释了TCP与UDP两者之间的区别,这让我们选择何种传输层协议提供了判断标准。

在这里插入图片描述


图18 UDP与TCP区别关系表

  • TCP向上层提供面向连接的可靠服务 ,UDP向上层提供无连接不可靠服务;
  • 虽然 UDP 并没有 TCP 传输来的准确,但是也能在很多实时性要求高的地方有所作为;
  • 对数据准确性要求高,速度可以相对较慢的,可以选用TCP。

应用层


在车载以太网领域,目前主流涉及到的应用协议主要有UDP-NM,DOIP,Some/IP,SD以及传统以太网需配合支持的ICMP,ARP,DHCP等协议。

在本文我不会针对这些协议具体展开,因为每种协议内容不少,后续会专门针对这些应用层协议给大家讲解分享,敬请大家多多关注。

如下图19是我列举车载以太网种这些应用协议的基础特点以及作用场景给大家一个整体的认识。

在这里插入图片描述

 

图19 车载以太网应用层协议一览

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/647284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NR及LTE中的IQ数据与信息、比特率、码元、波特率之间的关系

信息与比特率 信息:对信源进行数字编码后的数据,基本单位是bit。 比特率:信息的速率称为比特率(bit/s、bps),通常用Rb表示。 码元与波特率 码元 固定时长的信号波形(数字脉冲),也称为一个符号,symb。 (…

LeetCode36. 有效的数独

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。 数字 1-9 在每一列只能出现一次。 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图) …

【极海APM32F4xx Tiny】学习笔记05-移植 RTT NANO工程

5.移植 RTT NANO工程 移植步骤: 1. mdk添加rtt nano 包文件 2. 添加源码 3. 屏蔽2个中断处理函数 4. 修改board.c文件 5. 添加控制台 6. 添加finsh组件 7. 编写测试工程 1. mdk添加rtt nano 包文件 也可以下载后手动安装 下载链接https://www.rt-thread.org/downl…

【openeuler】Yocto embedded sig联合例会 (2022-11-03)

Yocto &embedded sig联合例会 (2022-11-03)_哔哩哔哩_bilibili

从浏览器输入url到页面加载(六)前端必须了解的路由器和光纤小知识

前言 上一章我们说到了数据包在网线中的故事,说到了双绞线,还说到了麻花。这一章继续沿着这条线路往下走,说一些和cdn以及路由器相关,运营商以及光纤相关的小知识,前端同学应该了解一下的 目录 前言 1. CDN和路由器…

STM32-I2C通信在AT24C02的应用

AT24C02是一种失去电源供给后依旧能保持数据的储存器,常用来储存一些配置信息,在系统重新上电之后也可以加载。它的容量是2k bit的EEPROM存储器,采用I2C通信方式。 AT24C02支持两种写操作:字节写操作和页写操作。本实验中我们采用…

三十八、动态规划——背包问题( 01 背包 + 完全背包 + 多重背包 + 分组背包 + 优化)

动态规划-背包问题算法主要内容 一、基本思路1、背包问题概述2、动态规划(DP)问题分析 二、背包问题1、0 1 背包问题2、完全背包问题3、多重背包问题4、分组背包问题 三、例题题解 一、基本思路 1、背包问题概述 0 1 背包问题: 条件&#x…

前端解决按钮重复提交数据问题(节流和防抖)

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 🍟欢迎来到前端初见的博文,本文主要讲解在工作解决按钮重复提交数据问题(节流和防抖) 👨‍🔧 个人主页 : 前端初见 &#x1f9…

【redis】数据类型,持久化、事务和锁机制、Java和redis交互、使用redis缓存、三大缓存问题

文章目录 Redis数据库NoSQL概论Redis安装和部署基本操作数据操作 数据类型介绍HashListSet和SortedSet 持久化RDBAOF 事务和锁机制锁 使用Java与Redis交互基本操作SpringBoot整合Redis 使用Redis做缓存Mybatis二级缓存Token持久化存储 三大缓存问题缓存穿透缓存击穿缓存雪崩 Re…

kotlin协程Job、CoroutineScope作用域,Android

kotlin协程Job、CoroutineScope作用域,Android import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines…

(横向刷题)【算法1-6】二分查找与二分答案【算法2-1】前缀和、差分与离散化(上),总结

【算法1-6】二分查找与二分答案 P1024[NOIP2001 提高组] 一元三次方程求解 思路&#xff1a;题目说明根与根之差的绝对值>1,且x1<x2&&f(x1)*f(x2)<0则其中存在解&#xff0c;于是联想到枚举&#xff0c;再用二分答案法控制精度 总结&#xff1a;二分对于精度…

【RabbitMQ教程】第四章 —— RabbitMQ - 交换机

&#x1f4a7; 【 R a b b i t M Q 教程】第四章—— R a b b i t M Q − 交换机 \color{#FF1493}{【RabbitMQ教程】第四章 —— RabbitMQ - 交换机} 【RabbitMQ教程】第四章——RabbitMQ−交换机&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &…

《阿里大数据之路》读书笔记:第一章 总述

阿里巴巴大数据系统体系架构图 阿里数据体系主要分为数据采集、数据计算、数据服务和数据应用四大层次。 一、数据采集层 阿里巴巴建立了一套标准的数据采集体系方案&#xff0c;致力全面、高性能、规范地完成海量数据的采集&#xff0c;并将其传输到大数据平台。 数据来源主…

【C++】 STL(下)算法、迭代器、容器适配器 和 仿函数

文章目录 算法迭代器容器适配器栈&#xff08;stack&#xff09;队列&#xff08;queue&#xff09; 仿函数 算法 STL中的算法头文件位于和文件中&#xff08;以为主&#xff09; for_each(InputIterator First,InputIterator Last,Function _Func); 遍历&#xff0c;具体做什…

电影《天空之城》观后感

上周看了电影《天空之城》这部电影&#xff0c;这部电影是六一儿童节时上映的&#xff0c;本周也算是补票吧&#xff0c;童年时&#xff0c;看的都是免费的&#xff0c;早已经忘记是在哪里看到的&#xff0c;但当时对自己触动很大&#xff0c;算是启蒙电影&#xff0c;所以今天…

【RabbitMQ教程】第二章 —— RabbitMQ - 简单案例

&#x1f4a7; 【 R a b b i t M Q 教程】第二章—— R a b b i t M Q − 简单案例 \color{#FF1493}{【RabbitMQ教程】第二章 —— RabbitMQ - 简单案例} 【RabbitMQ教程】第二章——RabbitMQ−简单案例&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人…

汽车电子Autosar之以太网SOMEIP

前言 首先&#xff0c;请问大家几个小小问题&#xff0c;你清楚&#xff1a; 你知道什么是SOME/IP吗&#xff1f;你知道为什么会产生SOME/IP即相关背景吗&#xff1f;你知道SOME/IP与SOA又有着哪些千丝万缕的联系呢&#xff1f;SOME/IP在实践中到底应该如何使用呢&#xff1f…

QuickList

基本概述 ZipList虽节省内存但是申请内存必须是连续的&#xff0c;如果内存占用很大&#xff0c;申请内存效率就会很低&#xff0c;可以限制ZipList长度和entry大小&#xff1b; 实在要存储大量数据&#xff0c;超出ZipList最佳上限了&#xff0c;此时可以创建多个ZipList来分片…

Autosar诊断实战系列04-基于CAPL语言的通信类诊断测试脚本开发

本文框架 前言1.CAPL编程简单介绍2. CAPL脚本开发实战2.1 添加CAPL Test Module2.2 CAPL脚本实战编写前言 在本系列笔者将结合工作中对诊断实战部分的应用经验进一步介绍常用UDS服务的进一步探讨及开发中注意事项, Dem/Dcm/CanTp/Fim模块配置开发及注意事项,诊断与BswM/NvM关…

OpenAI官方提示词课(五)如何进行文本翻译校正修改

在本篇文章中&#xff0c;我们将探讨如何使用大语言模型进行文本转换任务&#xff0c;例如语言翻译、拼写和语法检查、语气调整和格式转换。 翻译 ChatGPT接受多种语言的训练&#xff0c;使得模型具备翻译能力。以下是如何使用这种能力的一些示例。 prompt f""&q…