一文详解AUTOSAR COM的关键函数和变量

之前对于AUTOSAR COM层的理解一直很模糊,为什么呢?看到源码涉及的函数和变量非常多,一直不清楚哪些函数哪些变量最关键。最近好像突然有点感觉了,趁热打铁,花点时间来梳理下AUTOSAR COM层的关键函数和变量。

在AUTOSAR COM层中,实现CAN接收和发送的关键函数变量主要涉及信号的接收,发送、处理和管理,这里主要来了解接收和发送的关键函数和变量,如下图所示:

图片

source: AUTOSAR COM Notification机制及协议栈实现

1 COM层的关键函数

COM层的关键函数用于在CAN总线上接收和发送信号的处理。

1.1 Com_RxIndication,接收函数
Com_RxIndication接收来自CAN总线的PDU(协议数据单元),并触发信号的解码。在接收过程中,当底层接收到I-PDU时,底层将调用COM层提供的指示函数Com_RxIndication(),将I-PDU的数据从底层拷贝到COM中。调用信号或信号组的接收函数后,该I-PDU中的信号或信号组将经过字节顺序转换、符号扩展,数据验证和接收过滤等操作后,接收的数据将被拷贝到应用层。

图片

source: COM 信号传输和接收概述

void Com_RxIndication(PduIdType RxPduId, const PduInfoType* PduInfoPtr);
其中,RxPduId:接收的PDU的ID,用于标识特定的PDU;PduInfoPtr:指向 PduInfoType结构的指针,包含以下内容:
  • SduLength:接收的PDU的长度,指定了SduDataPtr指向的数据缓冲区中的有效数据长度。比如经典CAN报文,通常典型长度是8个字节;
  • SduDataPtr:指向包含PDU数据的缓冲区的指针,这个缓冲区存储了实际的PDU数据。比如经典CAN报文,该指针指向就是CAN报文的8个字节数据;
  • MetaData:与该PDU相关的元数据,比如时间戳、数据来源等。如果未配置元数据支持,则该字段可以忽略。
typedef struct {
  
      uint32 SduLength;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值