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: Checksum是一种校验和算法,用于检测数据传输过程中是否出现错误。它通过对数据进行计算,得到一个固定长度的值,如果接收方计算出的校验和与发送方发送的校验和不一致,就说明数据出现了错误Rolling counter是一种计数器算法,用于在数据传输过程中对数据进行编号。它通过不断累加计数器的值来为每个数据包分配一个唯一的编号,以便接收方能够正确地按照顺序接收数据包。Rolling counter还可以用于检测数据包的丢失和重复,因为每个数据包都有一个唯一的编号。 ### 回答2Checksum是一种校验方法,用于检测数据传输或存储中是否发生了错误。它通过对数据进行计算得到一个校验和,然后与接收方计算得到的校验和进行比较,以确定数据是否完整、准确地传输或存储。在计算校验和时,通常使用的算法是循环冗余校验CRC)或MD5等哈希函数。Checksum可以应用于各种不同的通信协议和数据传输介质,如以太网、串口通信、存储介质等。 Rolling counter(滚动计数器)是另一种用于检测数据传输或存储中的错误的技术。它是一个自动递增的计数器,每次传输或存储数据时,计数器会自动加1。接收方可以检测到数据传输或存储中的错误,如果接收到的计数器值小于已知的上一个计数器值,或者两个计数器值之间的差异超过了一个特定的阈值,那么就可以确定发生了错误Rolling counter可以应用于各种不同的通信协议和数据传输介质,如蓝牙、RFID等。 总之,ChecksumRolling counter都是常用的数据检错技术,但是它们在应用场景和实现方法上有所区别。在选择何种技术中,应该根据具体的需求和特定的数据传输环境进行选择。 ### 回答3: ChecksumRolling Counter是计算机领域中的两种常见的校验方式。 Checksum,即校验和。在数据传输过程中,为了保证数据的准确性,检验数据是否出现错误就是很关键的一步。校验和就是用于检查数据是否发生错误的一种方法。它的原理是将要传输的数据分成一定的块,然后对每一块的数据进行运算,生成一个校验和。根据接收方对收到的数据进行相同的运算,如果运算结果与发送方生成的校验和一致,就说明数据没有发生错误。否则,就需要重新传输。 Rolling Counter,即滚动计数器。在数据通信中,如果需要对接收到的数据进行排序,就需要使用滚动计数器。它的原理是在数据传输的每一个报文中加入一个序号,每传输一个报文,序号就自动加1。接收端收到数据后,对序号进行排序,就可以按照正确的顺序组装数据。同时,由于序号的滚动计数方式,也可以发现是否发生了数据的丢失或者重复发送。 综上,ChecksumRolling Counter都是在数据通信中用于保证数据的准确性和排序的重要校验方式,它们各自的原理和应用场景不同,但都为数据传输提供了可靠的保证。在实际应用中,根据情况选择合适的校验方式是非常重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值