AUTOSAR COM Notification机制及协议栈实现(含信号组)

AUTOSAR COM Notification机制及协议栈实现(含信号组)

  • 一、信号(信号组)的Notification机制介绍
    • 1.1 Notification 和Update bit
    • 1.2 信号组和Shadow buffer
  • 二、信号(信号组)Notification机制的协议栈实现
    • 2.1 信号(信号组)的接收过程
    • 2.2 信号(信号组)的协议栈实现
  • 三、Notification 配置中需注意的规则
    • 3.1 信号(信号组) Notification 配置规则

传送门---->点击返回-AUTOSAR配置与实践—总目录

一、信号(信号组)的Notification机制介绍

1.1 Notification 和Update bit

当COM层接收到IPDU后,对上层RTE的通知通常有两种方式
–》Update bit配置和检测,用于信号(信号组)级的通知和超时管理(无需配置)
当发送端设置了Update bit,COM层会自动填充Update bit (UB)位一次(注意是一次,即每调用一次发送,总线上只会呈现一次带有Update bit位更新的IPDU!后续都是update位没更新的IPDU)接收端便会检测Update bit,若检测到则继续后续的信号处理(字节序转换、无效检查、过滤等)。
否则丢弃信号停止后续的信号处理。接收端应用按照需求设置信号(信号组)的超时。
–》Notification的配置,用于IPDU级别的通知和超时管理(需要配置超时)
若信号没有配置UB,则可以通过配置信号的notification,用于报文级别的超时通知;

1.2 信号组和Shadow buffer

—》信号组
为了支持复杂数据类型的AUTOSAR概念,AUTOSAR COM提供了信号组的解决方案。AUTOSAR COM模块一致地发送和接收信号组,为复杂数据类型提供必要的一致性。通俗的来讲,Signal Group就是一个IPDU里面的几个Signal的集合,这几个Signal的操作需要保持一致性;时分秒到来,需要组合到来同时更新才有意义,否则独立的数据获取将会失去意
—》Shadow buffer
AUTOSAR COM模块为每个Tx Signal和Rx Signal都设有一个Signal Buffer。为了实现信号组内容的一致性(统一获取),为每个Signal Group额外设置了一片Signal Group Buffer,即Shadow buffer。在发送Signal Group的时候(接收同理),将Signal Group拷贝到IPDU Buffer的时候是独立操作(不可隔离)(拷贝前关闭全局中断,拷贝后打开全局中断,保证拷贝过程不被中断干扰)。
Shadow buffer确保了Signal Group数据的一致性。

二、信号(信号组)Notification机制的协议栈实现

2.1 信号(信号组)的接收过程

由下图可以看出,关于接收过程大致分为
a.Com_Rxindication接收到IPDU
b.对IPDU内每一个信号,信号组实施字节序转换、无效值处理等
c.最后一步实施信号(信号组)的通知,由COM层通知给RTE层。

AUTOSAR COM Notification机制及协议栈实现(含信号组)_第1张图片

2.2 信号(信号组)的协议栈实现

协议栈实现框图如下:

Step 1: 收到Com_Rxindication
Step 2: 处理Signal A信号(UB、大小端转换、无效数据处理等)
Step 3: 处理Signal A信号 notification
Step 4: 按照Step 2\3 依次处理Signal B/Signal C 等PDU报文内的所有信号
和相关信号对应callback(通知RTE)
Step 5: 同理按照step2-4,依次PDU报文内的所有信号组及信号组对应callback(通知RTE)

步骤关键解析点:
—》收到IPDU后,协议栈是按照每个信号(信号组)去处理接收和进行callback的。
—》先处理IPDU所有的信号,再处理IPDU所有的信号组

AUTOSAR COM Notification机制及协议栈实现(含信号组)_第2张图片

三、Notification 配置中需注意的规则

3.1 信号(信号组) Notification 配置规则

根据 本文2.2章节中的协议栈步骤描述

在配置信号(信号组)notifacation(包括收到信号的通知、超时通知)的时候,若配置不当,容易导致在报文内信号(信号组)的并没有接收完整(前一部分信号收到,后一部分信号、信号组数据尚未收到),就认定报文已经收到,而应用去读取时候,其实读取到的还是上次的数据。
需遵循以下规范

—》若一个报文内只有信号,建议notification配置在最后一个信号内(按配置工程中的信号index大小,配置在index最大的信号);
—》若一个报文内既有信号,又有信号组,需要将notification配置在最后一个信号组(按配置工程中的信号组index大小,配置最后一个信号组,index最大);
AUTOSAR COM Notification机制及协议栈实现(含信号组)_第3张图片

传送门---->点击返回-AUTOSAR配置与实践—总目录

你可能感兴趣的:(AutoSAR配置和实践,单片机,mcu)