E2E lib-P01

一、E2E

E2E 的保护与校验机制需要发送端和接收端的配合使用,对待发送的数据调用E2E_PxxProtect API 执行数据保护,将使用Crc 算法计算的Crc 校验信息、计数器信息(根据选用不同保护策略,还可能包括数据ID 信息与数据长度信息)回填至数据一同发送至总线。在接收方,调用E2E_PxxCheck API,使用同样的Crc 算法计算Crc 值,校验Crc 是否一致,并校验计数器信息(与数据ID 信息与数据长度信息)以确保发送端和接收端的数据保持一致,保证信息的完整性。

二、E2E Profile P01

1.Profile 1的配置项:

● CounterOffset: E2E数据包的第一位相对于数据起始位置的位偏移(单位:bit)。偏移量应为4的倍数,在1A、1B、1C情况下,该偏移量为8。该值应该小于被保护数据长度
(DataLength)。
● CRCOffset:CRC的偏移量,应该为8的倍数,在1A、1B、1C情况下,该偏移量为0。该值应该小于被保护数据长度(DataLength)。
● DataID:数据在系统中唯一的标识符。
● DataIDNibbleOffset:DataID的偏移量。该值应该小于被保护数据长度(DataLength)。
● DataIDMode:配置是否在CRC计算中包含dataid。
● DataLength:数据长度(单位:bit)。该值应为8的倍数,且
应≤ 256。
● MaxDeltaCounterInit: 连续接收到的两个有效数据的两个计数器值之间的初始最大允许间隔。例如,如果接收器获取计数器1的数据,并且MaxDeltaCounterInit为1,则在下一次接收时,接收器可以接受值为2和3的计数器,但不能接受值为4的计数器。请注意,如果接收器在连续读取时未收到新数据,则接收端将差值计数器增加1。
● MaxNoNewOrRepeatedData:在正常通信条件下,接收方不希望超过的丢失或重复数据的最大数量。
● SyncCounterInit:校验计数器一致性所需的数据个数(即在检测到所接收计数器的意外行为后,计数器在允许的锁定范围内)。
● EnableCRC:用于配置是否开启CRC校验。
● EnableCRCHW:用于配置是否开启CRC计算的硬件加速。

2.DataID类型描述:

● E2E_P01_DATAID_BOTH:CRC(双ID配置)包含两个字节,用于E2E变体1A。
● E2E_P01_DATAID_ALT:包含两个字节中的一个字节,根据计数器的奇偶性(交替ID配置),交替使用高字节和低字节。对于偶数计数器,包含低字节。对于奇数计数器,包含高字节。
E2E variant 1B采用此方案。
● E2E_P01_DATAID_LOW:只包含低字节,高字节从不使用。如果特定系统中的ID是8位,则此方法适用。
● E2E_P01_DATAID_NIBBLE:低字节包括在隐式CRC计算中,高字节的低半字节随数据一起传输(即显式包括),不使用高字节的高半字节。这适用于ID最多为12位。E2E variant 1C采用此方案。

3.E2E Profile 1保护的数据接收方状态:

● LastValidCounter:最近收到的计数器值。如果尚未收到数据,则值为0x0。每次接收后,计数器将使用接收的值进行更新。
● MaxDeltaCounter:表示连续收到有效消息的最大差值。 简单来说就是说最大容忍Counter的间隔(,因为Counter是按1递增的,因此这参数即最大容忍丢失帧数)。
● NewDataAvailable:向E2E Library指示新数据可用于要检查的库。此属性由E2E库调用方设置,而不是由E2E库设置。
● LostData:自收到最后一个有效数据(消息)以来丢失的数据(消息)数。只有当Status等于E2E_P01STATUS_OK或E2E_P01STATUS_OKSOMELOST时,才设置此属性。其他状
态,LostData未定义。E2E_P01CheckStatusType Status数据校验结果,由Check功能决定。
● Status:数据校验结果,由Check函数决定。
● SyncCounter:校验计数器一致性所需的数据个数(即:在检测到所接收计数器的意外行为后,计数器在允许的锁定范围内)。
● NoNewOrRepeatedDataCounter:连续接收周期的数量,其中没有新数据,或重复数据。

4.Check功能判断的E2E Profile 1数据校验结果:

● E2E_P01STATUS_OK:表示E2E数据校验结果正确,自上次正确接收数据以来,没有丢失任何数据。
● E2E_P01STATUS_NONEWDATA:表示E2E数据校验结果错误,自上次正确接收数据以来,没有收到新的可用数据。
● E2E_P01STATUS_WRONGCRC:表示E2E数据校验结果错误,接收到的数据CRC校验错误。
● E2E_P01STATUS_SYNC:表示E2E从异常状态到正确状态的同步过程中,此时数据校验正确,但不建议使用。(白话就是,初始化时,或者WRONGCRC后收到了连续正确报文,但计数器不是从SyncCounterInit开始的)
● E2E_P01STATUS_INITIAL:表示E2E处于初始化状态,此时的数据是自接收器初始化或重新初始化以来的第一个数据,所以计数器还不能被验证。(即上电后就没接收到E2E报文)
● E2E_P01STATUS_REPEATED:表示E2E数据校验结果错误,接收到重复数据。(如接收到的连续报文的Counter值分别为:2、2、3、4、4、5)
● E2E_P01STATUS_OKSOMELOST:表示E2E数据校验结果正确,但是存在允许范围内的数据丢失。(前后连续两帧报文的Counter值不是连续的,但在容忍范围内)
● E2E_P01STATUS_WRONGSEQUENCE:表示数据校验结果错误,接收到的数据乱序。(接收到的E2E报文连续两帧之间的Counter差值大于MaxDeltaCounterInit)

4.API

E2E_P01ProtectInit :初始化保护状态。
E2E_P01Protect :使用Profile 01 对数据进行保护。
E2E_P01Check:使用Profile 01对数据进行校验,并更新状态。

三、E2E Lib调用方式

1,E2EPW
2,Com callout:自己在callout函数中调用E2E lib的相关接口,因需用户手动定义E2E Lib接口入参所需的结构体
3. E2EXf:只需用户配置profile相关的属性,E2EXF将根据配置生成E2E相关的结构体、并调用对应profile的E2E接口。

  • 28
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值