Autosar E2E模块

news2024/11/14 19:54:15

文章目录

  • 介绍
  • 端到端中的端指的是ECU吗
  • 为什么要做 E2E
  • E2E 的保护和校验机制
  • 需要知道的名词
    • 1. Checksum
    • 2. Counter
    • Timeout
    • DataID
  • E2E Profile
    • 1. E2E Profile 01
    • 2. E2E Profile 02
    • 3. E2E Profile 04
    • 4. E2E Profile 05
    • 5. E2E Profile 06
  • 计算 checksum 示例
  • Counter
    • 1、Rolling counter/ sequence counter
    • 2、Alive counter
  • E2E 状态机
  • 示例
  • 模块功能关系图
  • 功能点
  • 参考

介绍

E2E(End to End)模块, 中文即端到端的通信保护,是 `BSW`` 的组成部分, 目的在于提供数据保护与校验机制, 在数据交互时对数据进行保护与校验, 以防通信链路内故障的影响。

E2E模块保护数据的算法其实就是CRC,它主要就是定义了怎样使用CRC算法来确保数据的准确性。

端到端中的端指的是ECU吗

不是,对于E2E来说,数据的传递不是针对ECU到ECU的层级而是SW-C到SW-C层级

在车载网络中,信息交换通常是从一个ECU发送信号,另一个ECU接收信号。对E2E而言,通常是从源SW-C生成信号,经过RTE(Run-Time Environment)、BSW(Basic Software)并在物理总线上传输后到达目标SW-C。在这个过程中,信号的传递可能由于一些故障情况(比如软件运行错误)无法到达目标终端,或是信号本身被干扰/损坏,尤其对于安全相关的信号(车速、档位、车辆/电源模式等)来说,这种情况会带来很大的隐患。而E2E正是通过一些机制,使发送终端和接收终端的数据保持一致,保证信息的完整性。

为什么要做 E2E

E2E保护概念的核心是针对安全相关的数据交换,需要在运行时进行保护,以消除通信链路中可能的失效带来的影响。

关于数据交换过程中可能的失效模式有哪些,这个问题ISO26262中有总结,如下:

  • 信息的重复发送(RepetitionofInformation),相同的信息被收到了多次
  • 信息的丢失(LossofInformation),整条或者信息的一部分在通信过程中丢失
  • 信息的延迟(DelayofInformation),接收信息的时间异于期望的时间
  • 信息的插入(InsertionofInformation),多余的内容被插入到信息中
  • 假冒的或者不正确的寻址(MasqueradeorIncorrectAddressingofInformation),假冒的发送者发送未认证的信息被接收端接受,或者正确的信息被错误的接收端接受
  • 信息顺序错误(IncorrectSequenceofInformation),数据流中的信息顺序错误
  • 信息破损(CorruptionofInformation),信息的内容被篡改
  • 向多个接收端发送非对称信息(AsymmetricinformationsentfRomasendertomultiplereceivers),接收端收到的数据不一致
  • 仅部分接收端收到发送者的信息(Informationfromasenderreceivedbyonlyasubsetofreceivers)
  • 阻塞通信通道(Blockingaccesstocommunicationchannel)

E2E 的保护和校验机制

E2E 的保护与校验机制需要发送端和接收端的配合使用

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

与数据发送方相比,数据接收方需要处理的内容就显得更加复杂。包含序列丢失处理、序列无效处理、序列重复处理、超时处理等。

需要知道的名词

1. Checksum

顾名思义,和的校验,一般指CRC,在数据处理和数据通信领域中,用于校验目的的一组数据项的和,这些数据项目可以是数字或在计算校验总和过程中看作数字的其他字符串

2. Counter

以profile 01为例,在报文中占4bit,范围0~15(profile1),用于计数,发送端每发送一帧报文,计数+1,ECU1将计数值发给ECU2,ECU2对收到的counter进行比较,确认是否及时接收,当达到15,下次重新开始计数。

Timeout

通过counter来评估报文是否丢失、延迟等。

DataID

一般为2个byte,是ECU1和ECU2之间提前定好的特殊字段,AutoSARprofile1中对E2E_P01DataIDMode定义几种模式:BOTH、ALT、LOW、NIBBLE,DataID用于报文checksum,但是特别注意的是这一段DID并不作为报文传输数据的一部分放在总线上,仅仅作为报文密钥,这就好比特务接头,开始聊正文之前,总要私下先确认好暗号,以证明“我接收的指令确实是期待的发送方所发送的”。

E2E Profile

E2E 提供 P01、 P02、 P04、 P05 与 P06 五种数据保护与校验方法, 每种 Profile 提供不同的保护策略。

无论何种profile,基本可分为以下两步骤:

  • Step1:发送端通过增加控制字段拓展数据结构,控制字段一般包含:checksum、counter等,扩展处的字段由RTE进行发送,如下图所示:
    请添加图片描述
  • Step2:接收端对上述整个字段内的数据进行验证,如果pass,则移除其中控制字段,并将应用数据交给SWCs处理;如果nopass,则执行安全保护机制。

1. E2E Profile 01

E2E Profile01使用8-bit SAE J1850 Crc校验, 最大数据保护长度为30 Bytes。

Mechanismsize
Counter4 Bits
DataID16 Bits
Crc8 Bits

在 E2E Profile 1 中, Crc、 Counter 信息、 当 E2E_P01 DataID Mode = E2E_P01_DATAID_NIBBLE 时的DataID 信息在数据中位置由用户定义

  • Counter值范围为 0 至 15, 参与数据传输, 参与 Crc 计算。
  • Data ID 有四种模式
    • E2E_P01_DATAID_BOTH

    • E2E_P01_DATAID_ALT

    • E2E_P01_DATAID_LOW

    • E2E_P01_DATAID_NIBBLE

      1. E2E_P01 DataID Mode = E2E_P01_DATAID_BOTH 时, DataID 的长度为 16Bits。 DataID 两个字节均参与 Crc 的计算, 但是不参与数据传输;
      2. E2E_P01 DataID Mode = E2E_P01_DATAID_ALT 时, DataID 的长度为 16Bits。
        • 当 Counter 为偶数时, DataID 的低字节参与 Crc 的计算, 但不参与数据传输
        • 当 Counter 为奇数时, DataID 的高字节参与 Crc 的计算, 不参与数据传输;
      3. E2E_P01 DataID Mode = E2E_P01_DATAID_LOW 时, DataID 的高字节不使用, 应置为 0x00,此时相当于可用 Data ID 长度为 8Bits。 DataID 的低字节参与 Crc 的计算, 但不参与数据传输;
      4. E2E_P01 DataID Mode = E2E_P01_DATAID_NIBBLE 时, DataID 高字节的高半字节不使用, 应置为 0x00, 此时相当于可用 DataID 的长度为 12Bits, 且此时 Data ID 高字节的低半字节不仅参与 Crc 计算,还与数据一起传输, 位置由 DataIDNibbleOffset 决定

2. E2E Profile 02

E2E Profile02使用8-bit 0x2F polynomial Crc校验, 最大数据保护长度为32 Bytes。

Mechanismsize
Counter4 Bits
Data ID[16]8 Bits
Crc8 Bits

区别于 E2E Profile 1, 在 E2E Profile 2 中, Crc 与 Counter 信息位置固定, 如下:

Data[0]Data[1]Data[2]......Data[N-1]Data[N]
CrcCounter...............
  • Crc 信息位于数据第 1 字节, Counter 信息位于数据第 2 字节低半字节。
  • Counter: 值范围为 0-15, 参与数据传输, 参与 Crc 计算。
  • DataID不参与数据传输, 只参与 Crc 计算, 且 DataID 的值动态变化, 与 Counter 相关, DataID = DataIDList[Counter]。

3. E2E Profile 04

E2E Profile04使用32-bit 0xF4ACFB13 polynomial Crc校验, 最大数据保护长度为 4K Bytes。

Mechanismsize
length16 Bits
Counter16 Bits
Data ID32 Bits
Crc32 Bits

Profile4 一般用于传输较大数据, Profile 4 中定义了一个 Header, 格式如下:

Transmission order0123
0E2E LengthE2E Counter
4E2E Data ID
8E2E Crc
  • 数据长度信息位于 Header 第 1、 2 字节,参与数据传输, 参与 Crc 计算, 便于动态改变传输数据的长度
  • Counter 信息位于 Header 第 3、 4 字节, 参与数据传输, 参与 Crc 计算。
  • DataID 信息位于 Header 第 5 至 8 字节,参与数据传输, 参与 Crc 计算。
  • Crc 校验信息位于 Header 第 9 至 12 字节
  • Header 在数据中的位置由 Offset 决定

4. E2E Profile 05

E2E Profile05使用16-bit CCITT-FALSE Crc校验, 最大数据保护长度为 4K Bytes。

Mechanismsize
Crc16 Bits
Counter8 Bits
Data ID16 Bits

Profile5 同样定义了一个 Header, 格式如下:

Transmission order012
0E2E CrcE2E Counter
  • Crc 校验信息位于 Header 第 1 至 2 字节
  • Counter 信息位于 Header 第 3 字节, 参与数据传输, 参与 Crc 计算。
  • Header 在数据中的位置由 Offset 决定
  • DataID: 不参与数据传输, 参与 Crc 计算。

5. E2E Profile 06

E2E Profile06使用16-bit CCITT-FALSE Crc校验, 最大数据保护长度为 4K Bytes。

Mechanismsize
Crc16 Bits
length16 Bits
Counter8 Bits
Data ID16 Bits

Profile6 同样定义了一个 Header, 格式如下:

Transmission order0123
0E2E CrcE2E length
4E2E Counter
  • Crc 校验信息位于 Header 第 1 至 2 字节
  • 数据长度信息位于 Header 第 3、 4 字节,参与数据传输, 参与 Crc 计算, 便于动态改变传输数据的长度。
  • Counter 信息位于 Header 第 5 字节, 参与数据传输, 参与 Crc 计算。
  • Header 在数据中的位置由 Offset 决定
  • DataID: 不参与数据传输, 参与 Crc 计算。

计算 checksum 示例

例如,AutosarE2Eprofile1规定采用CRC-8-SAEJ1850,对应多项式为0x1D(x8+x4+x3+x2+1),通常情况下报文数据场中Byte0用于存放报文CheckSum数据,byte1~byte7存放报文其它数据,具体步骤如下。

Step1:计算DataID字段内CRC值(注:实际初始值为初始值取反)。
Step2:计算Byte1~Byte7字段内CRC值(注:实际初始值为上一步校验值取反)。
Step3:将上一步校验值取反,得到最终值。

Counter

在不同的标准,应用中经常听到不同的counter,但他们的本质是相关的,是一个计数器,并根据其数值变化来进行诊断数据的实时性。下面举两个例子

1、Rolling counter/ sequence counter

顾名思义,每当执行一次后,计数器先increment,达到最大值后清0,以rolling的形式周期性变化,这里强调的是每次执行都会增加固定数值,通常是1,接受端应该对增加量进行诊断。

常见的有0 -> 1 -> 2 -> 3-> … -> 14 -> 15 -> 0 -> 1 -> …以此类推,共占用4个Bit,也可以把其中某一数值作为无效值,常见的是15。

2、Alive counter

强调counter的实时性,只需要counter实时变化以体现输出者处于alive状态,接收端可只对数值是否变化进行判断,甚至不以counter的形式,比如以0101交替的形式也可以达到目的。

故alive counter至少是一个会不断变化的值。

E2E 状态机

E2E 状态机对监控窗口内的 E2E_PxxCheck 函数的结果建立一个状态, 提供给 Rte/SWC/Com。 E2E 状态机状态切换如下:

请添加图片描述

  1. 通过调用 E2E_SMCheckInit API 完成状态机初始化 , 状态机状态由 E2E_SM_DEINIT 切换为 E2E_SM_NODATA若监测到 E2E 校验结果为 E2E_P_ERROR 或 E2E_P_NONEWDATA, 状态机维持在此状态, 此时数据不可用, 否则, 状态机切换至 E2E_SM_INIT 状态;

  2. 状态机在 E2E_SM_INIT 状态下, 继续监测校验结果,若校验结果中校验结果为 E2E_P_ERROR 的次数不超过配置的最大错误次数且校验结果为 E2E_P_OK 的次数不少于配置的最小 OK 次数 , 切换状态机状态至 E2E_SM_VALID, 此时数据可用,若在 E2E_SM_INIT 状态下, 校验结果为 E2E_P_ERROR 的次数超过配置的最大错误次数, 则状态切换至E2E_SM_INVALID, 此时数据不可用;

  3. 状态机在 E2E_SM_VALID 状态下, 同样地, 若校验结果为 E2E_P_ERROR 的次数不超过保持此状态允许的最大错误次数且校验结果为 E2E_P_OK 的次数不少于维持此状态的最小 OK 次数 , 状态机维持在此状态, 此时数据可用, 否则状态机状态切换至 E2E_SM_INVALID 状态;

  4. 状态机在 E2E_SM_INVALID 状态下, 若校验结果为 E2E_P_ERROR 的次数不超过将状态更改为E2E_SM_VALID 所允许的最大错误次数且检验结果为 E2E_P_OK 的次数不少于将状态更改为 E2E_SM_VALID 所 需 的 E2E_P_OK 的最小检查次数,状态机切换至 E2E_SM_VALID 状态, 否则状态机维持 E2E_SM_INVALID 状态, 此时数据不可用。

示例

在这里插入图片描述

模块功能关系图

请添加图片描述

功能点

  1. 校验传输过程中是否存在数据的重复发送。 (通过 Counter 校验)
  2. 校验发送过程中是否存在消息丢失。 (通过 Counter 校验)
  3. 校验是否在指定时间内接收到信息。 (通过 Counter 校验)
  4. 校验传输过程中是否存在数据插入。 (通过 DataID 校验)
  5. 校验是否接收到伪装正确源地址的消息。 (通过 DataID /Crc 校验)
  6. 校验传输过程中是否发生数据损坏。 (通过 Crc 校验)
  7. 校验传输过程中是否发生数据顺序错误。 (通过 Counter 校验)
  8. 校验接收方是否从同一发送方接收到不同的信息。 (通过 Crc 校验)
  9. 校验发送方信息是否仅由一部分接收者接收。 (通过 Counter 校验)
  10. 提供 P01、 P02、 P04、 P05、 P06 数据保护与校验方法。

参考

  • https://zhuanlan.zhihu.com/p/384692925
  • http://www.shouxieziti.cn/30942.html
  • https://www.sohu.com/a/573143632_121424192
  • https://zhuanlan.zhihu.com/p/486553536?utm_id=0
  • https://www.kuazhi.com/post/525980.html
  • https://zhuanlan.zhihu.com/p/656805579?utm_id=0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1311377.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kafka基础理论与常用命令详解(超详细)

文章目录 前言一、Kafka概述1. Kafka简介2. Kafka架构2.1 Broker(代理服务器)2.2 Topic(主题)2.3 Producer(生产者)2.4 Consumer(消费者)2.5 Consumer Group(消费者组&am…

SpringSecurity6从入门到上天系列第八篇:SpringSecurity当中的默认登录页面是如何产生的?

😉😉 欢迎加入我们的学习交流群呀! ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring等等很多应用和源码级别的高质量视频和笔记资料,你想学的我们这里都…

使用Qt制作网易云播放器的歌曲排行界面

!!!直接上图!!! !!!直接上图!!! !!!直接上图!!! 网易云排行榜…

Windows本地的RabbitMQ服务怎么在Docker for Windows的容器中使用

1. 进入管理界面 windows安装过程请访问:Windows安装RabbitMQ、添加PHP的AMQP扩展 浏览器访问:http://127.0.0.1:15672/ 2. 创建虚拟主机 上面访问的是 RabbitMQ 的管理界面,可以在这个界面上进行一些操作,比如创建虚拟主机、…

微信小程序 全局共享数据 mobx

前言 全局数据共享(又叫做:状态管理)是为了解决组件之间数据共享的问题。开发中常用的全局数据共享方案有:Vuex、Redux、MobX 等。 一. 安装 npm install --save mobx-miniprogram4.13.2 mobx-miniprogram-bindings2.1.5 安装完…

深度学习 Day18——P7咖啡豆识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 文章目录 前言1 我的环境2 代码实现与执行结果2.1 前期准备2.1.1 引入库2.1.2 设置GPU(如果设备上支持GPU就使用GPU,否则使用C…

Linux基本命令操作

一、命令操作快捷键 1.Tab键:自动补齐 2.ctrlL :清屏 二、使用命令获取帮助信息 1. # ls --help 2. # man ls 三、目录和文件管理命令 1. pwd \\显示路径 2. cd \\进入或切换目录 3.​​​​​​​ ls -l \\显示详细信息 4. ​​​​​​​ ls -a \\…

实验02:RIP配置

1.实验目的: 了解路由选择协议(Routing Protocol)的基本原理及分类;掌握RIP协议的基本原理;实现RIP协议;掌握路由器配置及路由表查看的基本命令。 2.实验内容: 建立拓扑结构;配置…

ArcGIS导入excel中的经纬度信息,绘制矢量

1.首先整理坐标信息 2.其次转成2003格式的excel文件 3.导入arcgis,点击右键添加excel数据 4.显示xy数据 5.显示经度和纬度信息 6:点击【地理坐标系】->【World】->【WGS 1984】->【确定】 7.投影带的确定方式: 因为自己一直…

【已解决】ModuleNotFoundError: No module named ‘taming‘

问题描述 Traceback (most recent call last) <ipython-input-14-2683ccd40dcb> in <module> 16 from omegaconf import OmegaConf 17 from PIL import Image ---> 18 from taming.models import cond_transformer, vqgan 19 import taming.modu…

word四级目录序号不随上级目录序号变化问题解决方法

一、word中的几个元素简介 1、word中的列表 如下图所示&#xff0c;代表word的列表&#xff1a; 2、word中的标题 如下图所示&#xff0c;代表word的标题&#xff1a; 3、word中的编号/序号 如下图所示&#xff0c;代表word的编号/序号&#xff1a; 4、word中的目录 如下图…

卡片C语言(2021年蓝桥杯B)

分析&#xff1a;我们用一个数组来记录卡牌&#xff0c;我们每使用一张卡牌&#xff0c;就减一张&#xff0c;当卡牌数为-1的时候&#xff0c;说明不够用了&#xff0c;此时我们就打印上一个组合的数字。 #include <stdio.h> int main(){int num[10],i,m,n,j;for(i0;i&l…

Centos硬盘操作合集

一、硬盘命令说明 lsblk 列出系统上的所有磁盘列表 查看磁盘列表 参数意义 blkid 列出硬盘UUID [rootzs ~]# blkid /dev/sda1: UUID"77dcd110-dad6-45b8-97d4-fa592dc56d07" TYPE"xfs" /dev/sda2: UUID"oDT0oD-LCIJ-Xh7r-lBfd-axLD-DRiN-Twa…

GoLang 学习 (入门)

go run 1.go 执行命令 go build 1.go 打包为exe 快速 并且无依赖 在开始项目 需要 生成 go.mod go mod init mod 终端执行 go: creating new go.mod: module mod go: to add module requirements and sums:go mod tidy go的基本目录结构 src ------gocode ------------项…

探索GameFi:区块链与游戏的未来融合

在过去的几年里&#xff0c;区块链技术逐渐渗透到各个领域&#xff0c;为不同行业带来了前所未有的变革。其中&#xff0c;游戏行业成为了一个引人注目的焦点&#xff0c;而这种结合被称为GameFi&#xff0c;即游戏金融。GameFi不仅仅是一个概念&#xff0c;更是一场区块链和游…

51单片机(STC8) -- 开发环境搭建(Keil C51)

文章目录 STC8H3K系列芯片概述STC8H3K系列芯片选型Keil C51简介Keil C51安装添加C51芯片包工程创建与编译工程烧录 STC8H3K系列芯片概述 文章中所用的芯片选型为STC8H3K64S4&#xff0c;后续STC8案例均以该芯片展开 内核 • 超高速 8051 内核&#xff08;1T&#xff09;&…

2023-12-14 使用Qt画一条曲线(AI辅助)

点击 <C 语言编程核心突破> 快速C语言入门 使用Qt画一条曲线 前言一、Qchart简介二、代码总结 前言 要解决问题: 有一个函数, 生成一些点, 想画一条曲线. 想到的思路: 这个用Qchart比较简单. 其它的补充: 需要稍许配置 一、Qchart简介 QChart是Qt中的一个图表控件&a…

流程图、泳道图的介绍和示例分享,以及自定义元件库的介绍

目录 一. 流程图介绍 二. Processon使用 新建一个流程图 图形的使用 三. 流程图示例 登录界面 门诊业务流程图 住院业务流程图 药房业务流程图 会议OA流程图 四. 泳道图介绍 五. 自定义元件库 5.1 新建一个元件库 5.2 创建元件 5.3 使用自定义元件库 一. 流程图介…

PythonStudio:一款国人写的python及窗口开发编辑IDE,可以替代pyqt designer等设计器了

本款软件只有十几兆&#xff0c;功能算是强大的&#xff0c;国人写的&#xff0c;很不错的python界面IDE.顶部有下载链接。下面有网盘下载链接&#xff0c;或者从官网直接下载。 目前产品免费&#xff0c;以后估计会有收费版本。主页链接&#xff1a;PythonStudio-硅量实验室 作…

智慧城市/一网统管建设:人员危险行为检测算法,为城市安全保驾护航

随着人们压力的不断增加&#xff0c;经常会看见在日常生活中由于小摩擦造成的大事故。如何在事故发生时进行及时告警&#xff0c;又如何在事故发生后进行证据搜索与事件溯源&#xff1f;旭帆科技智能视频监控人员危险行为/事件检测算法可以给出答案。 全程监控&#xff0c;有源…