CAN E2E基础概念

基础概念

参考文档

文档1:《Specification of SW-C End-to-End Communication Protection Library AUTOSAR Release 4.2.2》

1.异或运算(XOR)

数学符号常表示为“⊕”。简单来讲,就是相同为0,不同为1.运算规则如下:0 ⊕ 0 = 0;0 ⊕ 1 = 1;1 ⊕ 0 = 1;1 ⊕ 1 = 0;
示例:1010 1100 XOR 1011 1010 = 0001 0110
常见的应用:

  1. 快速比较两个值是否相等。如果两个值异或的结果为0则相等,否则不相等。
  2. 检查一个2进制数中1的个数的奇偶(奇偶校验)。异或的结果为1,结果为奇数;异或的结果为0,结果为偶数。
  3. 密码学中对称加密解密。明文 XOR 密钥 -> 密文; 密文 XOR 密钥 -> 明文;

2. 模2除法

3. 循环冗余校验CRC

E2E Profile 1 shall use CRC-8-SAE J1850 for CRC calculation.
It shall use 0x00 as the start value and XOR value. 来自《Specification of SW-C End-to-End Communication Protection Library AUTOSAR Release 4.2.2》32页

# 常规的 CRC-8-SAE J1850 参数配置如下。
width=8 poly=0x1d init=0xff refin=false refout=false xorout=0xff check=0x4b name="CRC-8/SAE-J1850"
# 符合Autosar规范定义的 CRC-8-SAE J1850-ZERO 参数配置如下。simply changing the initial and xorout values to zero
width=8 poly=0x1d init=0x00 refin=false refout=false xorout=0x00 check=0x37 name="CRC-8/SAE-J1850-ZERO"

3.1 CRC-8的计算过程

init 初始值:0x00
refin 输入是否反转: 否
refout 结果是否反转: 否
xorout 最终异或值: 0x00
poly 多项式: x⁸ + x⁴ + x³+ x² + 1 (CRC-8-SAE J1850)转化成二进制为1 0001 1101 ,因为CRC8只有8位,所以舍弃最高位,结果为0001 1101,转化为十六进制即 0x1D

E2E Profile1的几个机制

以profile1A 为例,其数据场规则如下:

  1. CRC位于信号组的第0个字节(starts with bit offset 0)
  2. Alive counter 位于第1个字节的低4位(starts with bit offset 8)
  3. E2E_P01DataIDMode = E2E_P01_DATAID_BOTH:DataID 的两个字节都参与运算,先算低字节再算高字节。参考文档1的31页7.3.3章节
  4. SignalIPdu.unusedBitPattern = 0xFF(这个是autosar的定义,下面举例使用“没有信号的部分用0填充”的方式)
    在这里插入图片描述
    假设某次传输中,数据内容如下:
    E2E Data ID :0x123;
    E2E Alive counter : 0x6;
    Signal 1 取值:0x1;
    Signal 2 取值:0x7;
    Signal 3 取值:0x18;
    Signal 4 取值:0x2A5;
    Signal 5 取值:0xC3;
    在该示例中,受保护的数据为Byte3 ~ Byte7中的数据。按照以上规则,参与CRC计算的数据流排布应为:0x23 01 16 07 C2 A5 C3. 计算的结果为0xD9.参与E2E的信号组数据将以如下数据流在总线上传递。
    在这里插入图片描述

Alive Counter

作用:可以监测到 Repetition, Loss, insertion, incorrect sequence, blocking 错误。
发送端:SW-C发送端第一次发出传输请求时counter值初始化为0,后面每一次发送该值都+1,直到加到14(即0xE),后面再次发送则重新从0开始。如此循环往复。
接收端:
相关参数配置:MaxDeltaCounterInit -> 连续两帧数据间的 counter 偏差最大值。假设该值设置为1. 如果接收端拿到counter为1的数据,则接受的下一帧数据只能为2或者3.但是4就不行了,对应的报错状态为E2E_P01STATUS_WRONGSEQUENCE。

Data ID

由2个字节组成。每个信号组唯一。主要用于参与CRC计算。在profile1中有4种使用方法。具体请参照参考文档1,31页7.3.3章节说明。
E2E_P01_DATAID_BOTH(profile1A使用)
E2E_P01_DATAID_ALT
E2E_P01_DATAID_LOW
E2E_P01_DATAID_NIBBLE

CRC

E2E profile1 使用 CRC-8-SAE J1850 -ZERO 算法。

Timeout monitoring

作用:可以监控到 Loss, delay, blocking 错误。
主要是调用 E2E library 的发送者和接收者来使用的。

  1. Receiver communication timeout;
    The attribute State->Status = E2E_P01STATUS_REPEATED means that there is a repetition (caused either by communication loss, delay or duplication of the previous message). The receiver uses State->Status for detecting communication timeouts.
  2. Sender acknowledgement timeout.
  • 17
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值