徽州骆驼 · 7月24日

如何提高车载以太网性能?

前言

本文思维大纲如下:

image.png

在车载以太网开发过程中,我们最为常见的应用层协议主要是SOMEIP与DOIP两大类协议,其中SOMEIP协议作为实现SOA架构的一种重要实现手段被广泛应用,DOIP协议则针对大文件的刷写场景,大大提高了刷写效率。

特别对于SOMEIP协议作为涉及到整个系统多方交互的重要协议,随着域集中式不断发展,其通信带宽瓶颈也是日趋紧张, 这里指的通信带宽瓶颈更多的指的是SOMEIP应用的最大吞吐量,最大吞吐量的计算可以参考小T之前的文章《车载以太网性能还能这样测!》有着更为详解的说明与测试方法。只要最大吞吐量提高了,那么车载以太网带宽利用率也就上去了,通信带宽瓶颈问题也就能够解决。

本文主要聚焦如何进一步提高基于SOMEIP应用的整体车载以太网性能,目前主要从如下几个方面进行展开优化,以便能够大大提高车载以太网性能:

  • 物理层优化;
  • 数据链路层优化;
  • 网络层优化;
  • 传输层优化;
  • SOMEIP应用层优化;

image.png

1. 物理层优化方向

1.1 提高物理层通信带宽能力

我们都知道车载以太网的PHY需要与对应的MAC层速率相匹配,如果MAC最大通信速率仅为100Mbps,那么其与之匹配的物理层芯片PHY最大仅需满足100Mbps即可。

如果MAC层最大支持1000Mbps,那么此时的PHY则同步需要设置成1000Mbps,才能够大大提高物理层通信带宽能力。

当前需要注意的是在整车情况下,如果ECU A设置成1000Mbps,但是对手件仅为100Mbps,在使能自协商的前提下那么最终协调的通信速率将仅为100Mbps,则大大降低了整个系统的通信带宽。

因此,对于整车以太网设计而言,应当针对通信数据需求场景,合理的设计好通信带宽,无需过多,够用即可。如果一味的追求高带宽而不考虑应用场景的需求,那么就会无形中增加成本,对产品竞争力造成影响。

如下图所示为几种不同通信速率下的MAC与PHY芯片的组合场景:

image.png

  • 车载以太网MAC层与PHY层两者通信速率要确保设置一致,最大通信速率取决于MAC层与PHY层之间共同能够达到的最大值;
  • 一般对于整车通信而言,为了减少车载以太网通信双方Linkup时间,一般都会关闭自协商,统一强制设置好Master与Slave,通信速率以及双工模式等;

2. 数据链路层(MAC)优化方向

2.1 使能DMA传输

以英飞凌TC3XX芯片为例,其芯片内部的Eth MAC层存在DMA机制,该DMA完全处于Eth控制器内部,与外部的DMA无关,通过使能多通道DMA机制,可以大大提高通信速率并确保高优先级报文能够优先发送。

Tx DMA通道及优先级配置:

image.png

Rx DMA通道及优先级配置:

image.png

2.2 设置硬件最大传输效率

以英飞凌TC3XX芯片为例,看看如何修改并设定MAC层最大通信速率,其他芯片类似,可调整设定成最大传输效率1000Mbps,即1Gbps:

image.png
image.png

3. 网络层(IP)优化方向

3.1 使能硬件CRC计算

对于网络层我们发送数据是需要需要针对IP层数据进行组包同时需要进行CRC计算,我们知道如果包较长的话,那么CRC耗时就会变长,当前英飞凌TC3XX系列芯片MAC层支持IP层硬件CRC计算功能,这样IP层软件层的CRC可以不用计算,直接在MAC硬件中直接计算即可。

在AUTOSAR Eth Driver 规范中就有关于CRC Offloading的这种软件需求,如下图所示:

image.png

英飞凌TC3XX系列Eth Driver中的CRC Offloading使能配置如下:

image.png

在使能底层MAC硬件自身的CRC计算能力之后,软件层的TCP/IP协议栈各协议层的CRC计算也需要关闭掉,否则就无法真正发挥底层硬件的功能了,如下所示:

image.png

注意事项:使能其中一个时,四个均需要同时使能,这个可能是硬件特性导致,也是跟AUTOSAR规范有些偏差的地方,不过为了提高性能,全部使能也没啥大问题。

4. 传输层(TCP/UDP)优化方向

4.1 减少数据拷贝

对于TCP或者UDP层可能会存在一些数据拷贝的地方,针对这些数据拷贝,一般会有如下两种思路:

  • 是不是必须要数据拷贝,有没有零拷贝方案,因为对于以太网这种上千字节的拷贝是很花时间的,应该尽可能做到零拷贝,除了必要的组包跟解包以外;
  • 如果无法避免数据拷贝,需要考虑源地址与目标地址是否在CPU取值效率最高的地方,比如TC397的DSPR就会比LMU区域快很多,因尽可能将源地址与目标地址均放入到DSPR中;
  • 如果无法避免数据拷贝,看看是否可以采用单指令多操作数方式(SIMD)方式来实现Memcpy动作,应该也在一定程度上能够加速数据拷贝。

4.2 使能硬件CRC计算

同3.1小节,一并使能TCP以及UDP报文的硬件CRC计算功能,关闭软件CRC计算特性,这样CPU就可以做更多的事情,也不会接收到无效报文的中断。

image.png

5. SOMEIP应用层优化方向

5.1 优化序列化算法

SOMEIP应用中有一个必须要做的步骤就是序列化,但是我们都知道对于SOMEIP而言,特别是报文长度达到1400左右个字节的时候,序列化所花费的时间就会非常长,因此需要优化序列化算法,一般可以从如下几个方面入手进行优化:

  • 优化内存对齐方式,这个需要结合芯片架构特性来决定,比如当前MCU为32bit,那么采用4字节对齐则更为合适,采用1字节对齐则会增加系统处理时间,影响序列化效率;
  • 采用更为高效的序列化算法,如Protobuf或者Nanopb等方式来进行序列化,能够在某种程度上提高序列化水平,同时能够实现跨平台的数据解析功能;

5.2 采用结构体对齐方式序列化

  • 不进行SOMIP特有的序列化,采用结构体对齐的方式来进行序列化,不过这个对于结构体的良好设计会有些要求,当然也会增加较多填充字符,影响每次传输过程中的有效带宽;

END

作者:汽车小T8
来源: 汽车电子与软件

推荐阅读:

更多汽车电子干货请关注汽车电子与软件专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
5726
内容数
470
汽车电子与软件行业的相关技术报道及解读。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息