uds总结

最容易理解是就是单帧(SF),很多只需要一帧就能完成就可以使用单帧传输了,像之前说的“请求”,”肯定响应“什么的就是单帧。

而后面的首帧(FF),连续帧(CF),流控帧(FC)。都与多帧传输有关。

当需要传输的数据量比较多时,一帧的数据无法完全包含所有的数据。

例如烧写固件时,就必须使用到多帧传输。

多帧传输的方式如上图,发送端先发送首帧(FF),接受端接收到后返回一个流控帧(FC)给发送端,之后全部都是连续帧(CF)了。

那么首帧(FF),连续帧(CF),流控帧(FC)。它们具体内容是些什么呢?因此我们要回到第一张图去:

对于首帧(FF)来说,它主要发送两个字节的数据,第一个字节的高四位自然为1了,低四位和第二个字节共同表示多帧传输的字节数。

那么我们可以得到一次性最多可以发送2的12次方-1个字节。那就是4095个字节了。

对于连续帧(CF),它有一个叫SN的代码区域,这SN表示的是包的连续号,从0到15后,又置零。其功能是说明帧的连续顺序。

需要注意的是,首帧虽然没有SN的区域,但是在首帧也占一个SN,因此首帧之后的连续帧需要从1开始计数。

对于流控帧(FC),它有三个区域:FS,BS,STmin。

FS表示的是流控状态参数。例如0表示的是继续发送,1表示的是等待,2表示溢出。

BS表示的是块的大小,即发送端一次性能够发送多少个连续帧。

要注意的是,BS表示的是在发送端没有接受到流控信号时,能够发生的帧的数目。

当BS为0则表示,在数据传输的时,接收端不再发送流控帧了发送端应当连续不断的发送数据。

STmin表示的是两个连续帧的时间间隔。
———————————————

多帧传输其实跟uds协议没有关系,属于网络层的机制,遵循15765-2。

建立连接后,client首先发送首帧,告诉服务器,要发送的数据数量

然后服务器会返回一个流控制帧,告诉客户端,是否可以连续发送数据帧(连续帧),

如果可以连续那么可以连着发多少帧,以及每两帧之间的最小时间间隔,

然后client就按照这个规则发送,也就是发连续帧时,有最小时间间隔的约束,服务器不会每收到一帧数据就应答一次,这样提高传输效率。

思考:多帧传输,一定是cient发送首帧吗?不一定,这跟uds服务有关,通过bootloader刷写程序时,上位机为客户端,发送首帧。其他的呢,什么情况下,服务器发送首帧,欢迎讨论和补充。
 

ISO 15765-2(网络层服务)_第55号小白鸭的博客-CSDN博客_15765-2

        (2)、协议控制信息N_PCI标识了相互交换的N_PDU类型;同时,它还可以用于通信网络层实体之间其它控制参数的交换。关于N_PDU的分类,可以分成以下四类:单帧( SF N_PDU)、首帧( FF N_PDU)、后续帧( CF N_PDU)及流控帧( FC N_PDU)。其类别区分就是通过N_PCI这一信息进行区分的,具体如下:


通过上述表格,可以知道:

第一个字节的高位是0的为单帧信息;
第一个字节的高位是1的为多帧中的首帧;
第一个字节的高位是2的为多帧中的后续帧;
第一个字节的高位是3的为流控帧;

        (3)、数据场N_Data用来传输服务用户的数据,其大小取决于N_PDU类型及选定的地址格式。

 

 在这里插入图片描述

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值