AUTOSAR E2EXf & E2ESM Introduction

针对E2E 数据校验目前存在2种方式,如下

E2E Lib + E2E PW: 采用这种方式的校验E2E_Check接口将返回E2E PXX Status(例子可参见E2E PXX Status Estimation) ,App 需要自行根据返回的E2E PXX Status来判断采取什么Action , 对于这种组合在AUTOSAR 4.3 之后就不再采用了

E2E Lib +E2EXf+ E2ESM: 对于AUTOSAR 4.3 之后的版本都将采用这种组合,和前面提到的那种方式相比这种方式提供了滑动窗和动态判断“错误”的机制,使得APP 不用自己去技术和实现机制来完成一些功能

比如: 我们要判断5 次里有3次CRC 错误,我们就采取措施,如果采用E2E Lib + E2E PW 方式。APP 需要自行实现这个滑动窗动态监测机制,但是在E2E Lib +E2EXf+ E2ESM模式下只需要配置对应的属性即可完成

NOTE: 虽然E2E Lib +E2EXf+ E2ESM 可以减少APP的实现,但是需要相关人员对于这套组合具有非常好的理解才行。相比E2E Lib + E2E PW 虽然实现简单了,但是配置复杂度增加了

E2E Xf 处理流程

本文将结合Prefile 5 &1 来介绍E2E Lib +E2EXf+ E2ESM:究竟怎么理解,怎么做

Profile 5

Important Attribute

MaxDeltaCounter:

最大容忍Rolling Cnt 的变化数,对于E2E 中的Rolling Cnt我们希望他是线性变化的,因此如果连续两条的Rolling Cnt的变化值如果>1,则考虑有报文丢失,对于丢失报文的容忍度为(MaxDeltaCounter-1)帧报文。

Window Size:

只用最后N条报文对应的OkCount and ErrorCount参与评估E2ESM State

(详细内容见OkCount and ErrorCount Calculation 章节)

MaxErrorStateInit/ MaxOkStateInit:

在E2E SM_INT 状态下用于比较OkCount /ErrorCount的门限值

MaxErrorStateValid/ MaxOkStateValid:

在E2E SM_Valid 状态下用于比较OkCount /ErrorCount的门限值

MaxErrorStateInvalid/ MaxOkStateInvalid:

在E2E SM_Invalid 状态下用于比较OkCount /ErrorCount的门限值

E2E P05 Status Estimation

E2E_P05STATUS_OK: CRC 验证成功且 DaltaCounter =1, 即数据没有任何丢失且CRC 验证成功

E2E_P05STATUS_OKSOMELOST CRC 验证成功,但是Rolling Cnt不连续且在容忍范围内(<=MaxDeltaCounter)即丢(MaxDeltaCounter-1)帧数据可接受

E2E_P05STATUS_REPEATED 当DaltaCounter =0 ,即收到的Rolling Cnt和上一条一致

E2E_P05STATUS_WRONGSEQUENCE : DaltaCounter > MaxDeltaCounter 时&& DaltaCounter >=0 ,即丢失报文超过认为范围内,或者Rolling Cnt并非线性增加 (如果最后收到的Rolling Cnt比之前的小(除去扣圈特列)也会触发这个Error,)

E2E_P05STATUS_ERROR:当CRC 校验错误

E2E_P05STATUS_NONEWDATA 并未收到数据

P05Status and CheckStatus Mapping

E2E Check Status

E2E P05 Status

E2E_P_OK

E2E_P05STATUS_OK

E2E_P05STATUS_OKSOMELOST

E2E_P_ERROR

E2E_P05STATUS_ERROR

E2E_P_REPEATED

E2E_P05STATUS_REPEATED

E2E_P_NONEWDATA

E2E_P05STATUS_NONEWDATA

E2E_P_WRONGSEQUENCE

E2E_P05STATUS_WRONGSEQUENCE

OkCount and ErrorCount Calculation

直接看实现吧 ,比较容易解释。其中 errorCounter对应的就是CRC 错误。注意报文丢失并不会增加errorCounter。报文丢失数的容忍度只和MaxDeltaCounter 有关

E2ESM State Judgement

E2ESM 分为如下状态

E2E_SM_NODATA:E2E SM 初始化状态

E2E_SM_INIT: 只要收到过1帧CRC验证成功的报文就会转换为此种状态,一般只的就是第一帧验证成功的E2E报文

E2E_SM_VALID: 见下图流转

E2E_SM_INVALID: 见下图流转

E2ESM Status

0x01(E_SAFETY_VALID_REP)

0x02 (E_SAFETY_VALID_SEQ)

0x03 (E_SAFETY_VALID_ERR)

0x05 (E_SAFETY_VALID_NND)

0x20 (E_SAFETY_NODATA_OK)

0x21 (E_SAFETY_NODATA_REP)

0x22 (E_SAFETY_NODATA_SEQ)

0x23 (E_SAFETY_NODATA_ERR)

0x25 (E_SAFETY_NODATA_NND)

0x30 (E_SAFETY_INIT_OK)

0x31 (E_SAFETY_INIT_REP)

0x32 (E_SAFETY_INIT_SEQ)

0x33 (E_SAFETY_INIT_ERR)

0x35 (E_SAFETY_INIT_NND)

0x40 (E_SAFETY_INVALID_OK)

0x41 (E_SAFETY_INVALID_REP)

0x42 (E_SAFETY_INVALID_SEQ)

0x43 (E_SAFETY_INVALID_ERR)

0x45 (E_SAFETY_INVALID_NND)

Example

例子1:如果丢失5 帧报文,则需要采取特殊Action:

分析:这里的丢失5 帧报文,只有MaxDeltaCounter会影响到这个功能,按照上面介绍需要把MaxDeltaCounter设置为6,由于ErrorCounter 只是针对CRC 错误,因此在这个里我们需要检测各个E2E SM STATE 中的 WongSequence State

App 代码处理

If(ret== E_SAFETY_VALID_SEQ ||

ret== E_SAFETY_NODATA_SEQ||

ret== E_SAFETY_INIT_SEQ||

ret== E_SAFETY_INVALID_SEQ)

{

// Action

}

例子2:如果连续2帧CRC 错误,则需要采取特殊Action

分析:因为是CRC 错误,所以需要考虑ErrorCounter,由于是连续2帧,也就是最后2帧,因此需要使用window size :2

因此可将MaxErrorStateInit/ MaxErrorStateInvalid/ MaxErrorStateValid 设置为 2(ErrorCounter)-1 =1,那么在任何E2E SM 状态只要出现连续两帧CRC 错误就会导致E2E SM 状态切换为INVALID

App 代码处理

if(rte == E_SAFETY_INVALID_ERR))

{

// Action

}

例子3:如果5帧出现3帧CRC 错误,则需要采取特殊Action

分析:因为是CRC 错误,所以需要考虑ErrorCounter,由于是5帧出现3帧,需要使用window size :5,由于只有3帧出现错误时才会采取行为因此

因此可将MaxErrorStateInit/ MaxErrorStateInvalid/ MaxErrorStateValid 设置为 3-1 =2,那么在任何E2E SM 状态只要5帧出现3帧CRC 错误就会导致E2E SM 状态切换为INVALID

If(ret == E_SAFETY_INVALID_ERR))

{

// Action

}

Profile 1

未列出的内容和Profile 5 一致

Important Attribute

MaxDeltaCounter:

最大容忍Rolling Cnt 的变化数,对于E2E 中的Rolling Cnt我们希望他是线性变化的,因此如果连续两条的Rolling Cnt的变化值如果>1,则考虑有报文丢失,对于丢失报文的容忍度为(MaxDeltaCounter-1)帧报文。

MaxNoNewOrRepeatedData:

如果收到的Rolling Cnt并未发生变化,则NoNewOrRepeatedData 所对应的cnt+1, 当超多预定义的MaxNoNewOrRepeatedData时,在某些情况会返回E2E_P01STATUS_SYNC 状态

SyncCounterInit

当收到数据重复数量达到最大值之后(MaxNoNewOrRepeatedData),即使再次收到正确的数据也不能立即返回E2E_STATUS_OK or E2E_STATUS_OKSOMELOST,此时需要返回E2E_P01STATUS_SYNC, 当连续几个数据(SyncCounterInit)都正确才会返回E2E_STATUS_OK or E2E_STATUS_OKSOMELOST,

Window Size:

只用最后N条报文对应的OkCount and ErrorCount参与评估E2ESM State

(详细内容见OkCount and ErrorCount Calculation 章节)

MaxErrorStateInit/ MaxOkStateInit:

在E2E SM_INT 状态下用于比较OkCount /ErrorCount的门限值

MaxErrorStateValid/ MaxOkStateValid:

在E2E SM_Valid 状态下用于比较OkCount /ErrorCount的门限值

MaxErrorStateInvalid/ MaxOkStateInvalid:

在E2E SM_Invalid 状态下用于比较OkCount /ErrorCount的门限值

E2E P01 Status Estimation

E2E_P01STATUS_OK: CRC 验证成功且 DaltaCounter =1, 即数据没有任何丢失且CRC 验证成功

E2E_P01STATUS_OKSOMELOST CRC 验证成功,但是Rolling Cnt不连续且在容忍范围内(<=MaxDeltaCounter)即丢(MaxDeltaCounter-1)帧数据可接受

E2E_P01STATUS_INITIAL第一次收到E2E 报文且CRC校验通过

E2E_P01STATUS_SYNC

当收到数据重复数量达到最大值之后(MaxNoNewOrRepeatedData),即使再次收到正确的数据也不能立即返回E2E_STATUS_OK or E2E_STATUS_OKSOMELOST,此时需要返回E2E_P01STATUS_SYNC, 当连续几个数据(SyncCounterInit)都正确才会返回E2E_STATUS_OK or E2E_STATUS_OKSOMELOST

NOTE: 正常情况当我们收到一个E2E Frame ,只要对应的CRC校验通过后,那么收到的Rolling Cnt就会被采用,即下一帧期望收到的Rolling Cnt 为本次值+1, 但是如果SyncCounterInit >0 ,当收到的DeltaCounter > MaxDeltaCounter ,则并不会采用收到的Rolling Cnt, 意味一旦这种情况出现,需要等待Rolling Counter“扣圈” 发生,即当再次DeltaCounter < MaxDeltaCounter满足时,才会进行“重同步”

E2E_P01STATUS_REPEATED 当DaltaCounter =0 ,即收到的Rolling Cnt和上一条一致

E2E_P01STATUS_WRONGSEQUENCE : DaltaCounter > MaxDeltaCounter 时&& DaltaCounter >=0 ,即丢失报文超过认为范围内,或者Rolling Cnt并非线性增加 (如果最后收到的Rolling Cnt比之前的小(除去扣圈特列)也会触发这个Error,)

E2E_P05STATUS_ERROR:当CRC 校验错误

E2E_P05STATUS_NONEWDATA 并未收到数据

P01Status and CheckStatus Mapping

E2E Check Status

E2E P05 Status

E2E_P_OK

E2E_P01STATUS_OK

E2E_P01STATUS_OKSOMELOST

E2E_P01STATUS_INITIAL

E2E_P_ERROR

E2E_P01STATUS_ERROR

E2E_P_REPEATED

E2E_P01STATUS_REPEATED

E2E_P_NONEWDATA

E2E_P01STATUS_NONEWDATA

E2E_P_WRONGSEQUENCE

E2E_P05STATUS_WRONGSEQUENCE

E2E_P01STATUS_SYNC

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值