怎么样在Can总线传输大块数据

admin 2023年3月6日20:28:01评论62 views字数 2871阅读9分34秒阅读模式

点击上方蓝字谈思实验室

获取更多汽车网络安全资讯


怎么样在Can总线传输大块数据


ISO15765-2 标准为基于 CAN 总线的系统定义了一种「CAN传输协议」,该传输协议允许在 UDS 协议中对周期性消息进行分段传输。数据字节多于8个,单个can帧不能发送。为了通过CAN帧去发送它,这些大于8字节的数据字节将被分割成多个帧。ISO15765-2传输协议位于OSI层模型的第四层,用于PC到PC的无缝数据通信。CAN 总线每帧最多可以发送 8 个字节的用户数据。ISO TP 定义了一种传输方法,允许我们通过 CAN 总线定期发送多达 4095 个字节。为此,将要发送的消息进行分段后通过单独的 CAN 帧进行发送,这有助于通过 「CAN 网络」传输超过 8 字节的数据。

怎么样在Can总线传输大块数据UDS 协议是一种诊断协议,其工作方式类似于客户端-服务器通信,用于诊断车辆故障。为了在客户端和服务器之间进行通信或数据传输,它使用周期性消息。这些周期性消息有两种类型:

  • 未确认的分段数据传输 (USDT)
  • 未确认的未分段数据传输 (UUDT)

大多数UDS协议有两种SID(Service Identifier)。

  • SID 与这回复。
  • SID 没有反应。

1 CAN中的消息分段

传输层协议的主要目标是传输由于 「CAN 网络中的长度」而无法作为单个协议数据单元传输的消息。很大的数据消息通过传输协议进行分段,并分为多个单独的 PDU(不同的帧或数据包),这些单独的 PDU可以在单个 PDU 中传输。关于分段的帧的格式可以参考CAN TP 的不同帧格式,具体可参考我的文章《CanTp01-CanTp 模块功能概述与总结》【详情可通过下方的原文链接打开】。

2 传输层分段传输实例解析

假设您有 100 字节的数据,并且您要传输到车辆中可用的 ECU。因此,您将使用 OBD-II 硬件将您的计算机连接到 OBD-II 端口,然后在计算机上打开您的诊断工具。然后选择您的文件并将该特定文件传输到该ECU。

首先,客户端将发送「第一帧」(first frame )到 ECU,服务器将发送「流量控制帧」( flow control frame ),其中包含有关「客户端」如何定期向服务器发送周期性消息。

第一帧:客户端 - 服务器

10 64 xx xx xx xx xx xx

在上面,客户端正在发送一个 CAN 数据帧,其中第一个字节定义为 0x10。MSB 4 位为 1,定义它是第一帧,LSB 4 位加上下一个 1 字节共有 12 位,定义CAN TP要发送的数据长度。此值为 0x64,十进制为 100 字节。所以从那里,服务器知道客户端将发送总共 100 字节的数据。接下来的 6 字节是 xx,表示客户端发送的实际的数据。所以从这里我们了解到,前2个字节的数据是「协议控制信息」,并不是真正的数据。接下来的 6 字节是服务器需要的实际数据。然后,在服务器接收到该数据后,它将计算其要分配的「接收缓冲区内存」,并据此决定数据客户端的剩余的 94 字节(100 - 6)如何发送。然后服务器将发送如下流控制帧:

流控制帧:服务器到客户端

30 0A 14 xx xx xx xx xx

在上述帧中,第一个字节的 4-MSB 是 3 表示流控制帧,接下来的 4-LSB 是流状态,0 表示清除发送。清除发送意味着服务器通知客户端服务器现在空闲,以便客户端可以开始发送 UDS 协议帧格式的周期性消息。第二个字节是 0A 是块大小,只是客户端可以定期发送的连续帧数。第三个字节 0x14 是最小间隔时间,即两个连续帧之间的时间延迟,以便给服务器一些时间准备好定期无缝接收下一个连续帧。

客户端收到流量控制帧后,将开始定期发送连续帧,如下所示:

连续帧:客户端 - 服务器

20 xx xx xx xx xx xx

21 xx xx xx xx xx xx xx

22 xx xx xx xx xx xx xx

23 xx xx xx xx xx xx xx

24 xx xx xx xx xx xx xx

25 xx xx xx xx xx xx xx

26 xx xx xx xx xx xx xx

27 xx xx xx xx xx xx xx

28 xx xx xx xx xx xx xx

29 xx xx xx xx xx xx xx

在上面发送到服务器的 10 个连续帧中,第一个 4-MSB 定义了连续帧类型(Consecutive Frame),第二个 4-LSB 定义了索引或发送到服务器的连续帧数。由于服务器发送给客户端的 10 个周期性消息应该由客户端定期发送,客户端发送它,然后它将等待来自服务器的下一个流控制帧,因为总共需要向服务器发送 100 个字节. 在第一帧中,客户端的 6 字节数据和接下来的 10 个连续帧中每帧有 7 个字节是 70(10×7),加起来总共 76 个字节。剩余的 24 (100-76) 个字节将在下一阶段继续。以分段格式传输的数据帧消息在 UDS 协议中称为周期性消息。

服务器总共接收到 10 条周期性消息后,会发送下一个流控制帧,如下所示:

流控制帧:服务器到客户端

30 00 14 xx xx xx xx xx

然后客户端会收到这个帧,收到后它会明白所有其他字节都已经定义了,第二个字节是 00 意味着现在客户端可以向服务器发送无限的连续帧。因此,在收到此帧后,客户端将再次开始发送连续的帧,如下所示:

连续帧:客户端到服务器

20 xx xx xx xx xx xx21 xx xx xx xx xx xx xx22 xx xx xx xx xx xx23 xx xx 00 00 00 00

在上面发送完 24 个字节后,客户端停止周期性消息发送。之后,客户端-服务器通信将结束。与此类似,UDS 协议使用周期性消息发送到服务器进行多字节消息通信。


来源:车端

怎么样在Can总线传输大块数据

怎么样在Can总线传输大块数据

码上报名

AutoSec 2022 第六届中国汽车网络安全周暨汽车数据安全展火热报名中



更多文章

智能网联汽车信息安全综述

华为蔡建永:智能网联汽车的数字安全和功能安全挑战与思考

汽车数据合规要点

车载以太网技术发展与测试方法

车载以太网防火墙设计

SOA:整车架构下一代的升级方向

软件如何「吞噬」汽车?

汽车信息安全 TARA 分析方法实例简介

汽车FOTA信息安全规范及方法研究

联合国WP.29车辆网络安全法规正式发布

滴滴下架,我却看到数据安全的曙光

从特斯拉被约谈到车辆远程升级(OTA)技术的合规

如何通过CAN破解汽

八月精品课程:AutoSec汽车网络安全高级工程师技术培训,仅限前15位,报满即止。


会员权益: (点击可进入)谈思实验室VIP会员


END


怎么样在Can总线传输大块数据

微信入群

谈思实验室专注智能汽车信息安全、预期功能安全、自动驾驶、以太网等汽车创新技术,为汽车行业提供最优质的学习交流服务,并依托强大的产业及专家资源,致力于打造汽车产业一流高效的商务平台。

 

每年谈思实验室举办数十场线上线下品牌活动,拥有数十个智能汽车创新技术的精品专题社群,覆盖BMW、Daimler、PSA、Audi、Volvo、Nissan、广汽、一汽、上汽、蔚来等近百家国内国际领先的汽车厂商专家,已经服务上万名智能汽车行业上下游产业链从业者。专属社群有:信息安全功能安全自动驾驶TARA渗透测试SOTIFWP.29以太网物联网安全等,现专题社群仍然开放,入满即止。


扫描二维码添加微信,根据提示,可以进入有意向的专题交流群,享受最新资讯及与业内专家互动机会。

怎么样在Can总线传输大块数据


谈思实验室,为汽车科技赋能,推动产业创新发展!

原文始发于微信公众号(谈思实验室):怎么样在Can总线传输大块数据

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月6日20:28:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   怎么样在Can总线传输大块数据https://cn-sec.com/archives/1252687.html

发表评论

匿名网友 填写信息