Checksum(校验和)Rolling Counter(错误计数器)CRC(循环冗余校验)E2E(端到端)

        整车中通过CAN总线向各ECU控制器传输信号,实际上CAN报文信号在汽车CAN总线网络中传输会出现衰减,也会受外界环境因素影响,比如电磁干扰,CAN总线网络遭到黑客入侵或攻击等现象,这些都可能导致接收端接收到的信号与发送端发出的信号不一致,因此就需要应用一些校验机制来确保CAN报文数据的完整性、真实性和可靠性。 

        常见的数据校验和保护机制有:Checksum、Rolling counter校验、CRC(循环冗余校验)、E2E(End_to_End);这些都是为了确保数据传输的完整性和正确性而设计的机制。各自又有不同的应用场景和功能特点,Checksum提供基本的校验功能,CRC提供更高级的错误检测和校正能力,E2E则是一种更广泛的数据保护机制,涉及从发送方到接收方的端对端保护。

一、Checksum(校验和)——是一种简单高效的数据校验方式

        其原理是发送端先通过规定的计算方法得到一个Checksum值,再作为一个信号添加到CAN报文的数据段,发送出去;接收端接收到该报文后,先使用相同的计算方法重新计算出一个Checksum值,然后与接收到的Checksum值进行比较。如果结果一致就说明接收数据正确,否则就认为数据有错误。

注意:它是对数据段的内容进行计算,计算结果仍然放置在数据段,一般在数据段的第一个字节或者最后一个字节;只能对数据的完整性进行校验,提供最基本的错误检测。

项目中遇到的Checksum计算方式:CRC8, 16, 32;(Byte1+Byte2+Byte3……+Byte23)XOR(0xFF)

二、CRC(循环冗余校验)——是一种复杂强大的数据校验方法

        其原理是发送端根据模2除法的原理计算出校验码,再把得到的校验码附在要发送的数据后面组成一帧新的数据,发送给接收端后,接收端根据生成的校验码的规则重新计算校验码,若相同则说明正确的数据被接收,若不同则说明接收到的数据有错误。

注意:它是对所有字段进行计算,针对CAN报文的帧起始、仲裁段、控制段和数据段采用相应的CRC校验算法,计算结果放置在CAN报文的CRC段;能够提供更高级的错误检测和校正能力。

项目中遇到的CRC计算方式:模_2除法,CRC1, 15, 17和21;CRC-8,16。

推荐一个CRC计算网址:CRC(循环冗余校验)在线计算_ip33.com

三、Rolling counter(滚动计数器)——是一个简单有效的递增计数器

        其原理是通过计数器在给定的范围内循环递增,若Rolling counter定义是4bit,那么计算器的值会在0~15之间循环;发送端每发送一帧数据,计数器都会自动加1,保证每一次传输的数据都有一个唯一的标志,如果达到最大值,则下一次值从0值重新开始,以此循环。若出现计数器不连续或者首尾值衔接不对,接收方会判断丢帧同时会报报文丢失或超时故障码。这种机制可以检测数据传输中的错误,例如丢帧或漏帧现象。

注意:Rolling counter也是位于CAN报文数据段,就是说发送方发送的报文信息中也包含报文计数的当前累加值;在实际项目中Checksum和Rolling Counter是结合使用的,可以实现对CAN总线网络数据的精确校验和顺序监测。Checksum确保CAN报文数据内容未被破坏,而Rolling Counter则确保数据帧的连续性和有序性,两者相辅相成,这样既保证了数据的正确性,也检测了数据的完整性与顺序性,这对于汽车这样对通讯网络实时性和安全性要求极高的系统至关重要。

四、E2E——是一种端对端的数据保护机制

        其原理是提供五种保护机制以保证数据安全,CRC[算法]Sequence Counter[0~15参与数据传输]Alive Counter[0~15参与数据传输]Data ID[一般2byte,是定义的特殊字段,用于报文Checksum计算中的一部分,但并不作为总线上报文传输数据,类似密钥定义在通讯矩阵中]、Timeout detection[通过counter来评估报文丢失、延迟],在项目实际运用过程中,经常看到profile01、profile02等,每种profile是提供了不同的保护策略满足保护机制的标准化和灵活性要求。

E2E需求规范中对通信失效类型进行分类,这些安全信息包括一个或多个数据元素数据类型,构成信号组,用于保证在ECU之间进行安全相关功能交互的机制。

五、E2E和CRC的区别

CRC:仅仅是一个校验算法

E2E:是Autosar(汽车开放系统架构)官方定义的标准,规定汽车部件之间通讯保护需求需要采用安全的数据传输机制;其中通信错误不仅包含了CRC算法、要求了Counter的值如何进行递增、并在Counter出错时会记录对应的错误状态等软件错误,还会导致通信失效原因可能是随机硬件错误、辐射和电磁干扰的系统故障错误(详解:ISO26262标准)。

### 回答1: checksumrolling counter都是数据校验和算法的一种。 checksum是一种计算校验和的算法,通常用于验证数据的完整性。该算法将数据分成块,并计算每个块的校验和,然后将这些校验和相加得到总的校验和。接收方可以使用相同的算法来计算总的校验和,然后将其与发送方提供的校验和进行比较,以验证数据是否在传输过程中出现了错误rolling counter也是一种计算校验和的算法,但是它更适合于流数据,如串口通信。该算法将数据流分成连续的块,并对每个块进行单独的校验和计算。接收方可以在接收数据时使用rolling counter算法来计算每个块的校验和,并将其与发送方提供的校验和进行比较,以验证数据的完整性。 总的来说,checksumrolling counter都是用于数据校验的算法,它们都可以确保数据在传输过程中没有被修改或损坏。 ### 回答2: checksumrollingcounter都是用于数据校验的技术,但它们的原理与应用略有不同。 checksum校验和)是一种数据完整性校验技术,用于检测数据传输过程中是否出现错误checksum的实现方式是将数据块中的所有字节按照一定的规则相加,得到一个校验和。接收方在收到数据后也按照相同的规则计算校验和,如果两个校验和不一致,说明数据出现了错误checksum常见的实现方式有加法校验和、反码求和校验和CRC校验等。其中,CRC校验是最常用的校验方式之一,它可以在检测到错误的同时,准确地指出出错的位置,具有很高的可靠性。 rollingcounter(滚动计数器)是一种动态计数器,用于计算数据流的平均速率。rollingcounter的实现方式是将数据流分成若干个时间窗口,在每个时间窗口内统计数据流的字节数,然后将这些字节数相加得到滚动计数器的值。rollingcounter常用于网络、存储系统等领域,可以帮助及时发现异常状况,进行性能优化和问题排查。 总的来说,checksumrollingcounter都是用于校验数据的技术,但它们的实现方式和应用场景有所不同,checksum主要用于检测数据传输中的错误rollingcounter则用于统计数据流的平均速率。在实际应用中,我们可以结合两种技术,来提升数据传输和统计的准确性和可靠性。 ### 回答3: Checksum是一种校验和算法,常用于数据传输或存储过程中,用于检测数据完整性。它通过对数据的每一个字节进行简单的算术运算,得出一个固定长度的校验和。发送方在传输数据前计算校验和并随数据一起传输,接收方在接收到数据后重新计算校验和,并与发送方传输的校验和进行比较。如果两个校验和不相同,则说明数据在传输或存储过程中出现了错误,需要进行修正。常见的校验和算法包括MD5/HASH/SHA1等。 Rolling counter是一种计数器算法,通常用于计算数据流中的数据包数量。它通过对每个数据包进行计数,并根据计数结果进行相关的操作。常见的rolling counter算法包括: 1. Simple counter:简单计数器,递增计数器的值,对于长时间监测数据流的应用当数据流在传输过程中没有出现问题时,计数器的值也以大于一个固定值。当计数器的值达到设定的值时,做出一些相应的处理。 2. Sliding window counter:滑窗计数器,滑动窗口是指在一个指定的时间段内,限制数据流的流量,从而控制传输速度,避免网络过载。基于滑窗计数器,可以对数据包进行分组统计。 3. Bloom filter probabilistic counter:布隆过滤器概率计数器,基于布隆过滤器,对数据包进行计数,并通过布隆过滤器的特殊性质,对数据流中的数据包进行去重。这种计数器在数据包较多的情况下能够提高计数器的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值