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

桃源乐游 2023-06-18 11:51:50

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

目录

一、 信号(信号组) Notification 配置规则

1.1 Notification 和Update bit

1.2 信号组和Shadow buffer

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

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

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

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

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



一、 信号(信号组) 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 信号(信号组)的接收过程

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

 


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所有的信号组

 

 

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


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


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

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

---》若一个报文内只有信号,建议notification配置在最后一个信号内(按配置工程中的信号index大小,配置在index最大的信号);
---》若一个报文内既有信号,又有信号组,需要将notification配置在最后一个信号组(按配置工程中的信号组index大小,配置最后一个信号组,index最大);
 

 

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

...全文
1945 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

30,657

社区成员

发帖
与我相关
我的任务
社区描述
就等你来冒个泡~
社区管理员
  • 灌水乐园
  • 社区助手
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

版主:

社区助手

 

试试用AI创作助手写篇文章吧