自学内容网 自学内容网

[AutoSar]BSW_Com020 Handle_ID,Global_PDU,Local_PDU的联系


  

关键词

嵌入式、C语言、autosar、OS、BSW

平台说明

项目Value
OSautosar OS
autosar厂商vector , EB
芯片厂商TI 英飞凌
编程语言C,C++
编译器HighTec (GCC)
autosar版本4.3.1

在这里插入图片描述
>>>>>回到总目录<<<<<<

一、概念

  1.Global_PDU:在ECUC模块中EcucPduCollection定义,用于绑定Local_PDU,使被绑定到一起的Local_PDU产生联系。
  2.Local_PDU:在COM_Stack模块配置完成后会生成local_PDU,用于绑定到Global_PDU。
  3.Handle_ID:用于标识Global_PDU和Local_PDU,具有唯一性,并且只有在模块配置完成后才能生成。
整体概讲人话就是:假如有两个相邻模块例如DCM,COM,PDUR,PDUR如何知道数据是从DCM来的还是COM来的。只要我们将COM的局部PDU和PDUR的局部PDU通过Handle ID 绑定在在全局PDU中,那么PDUR就知道这个数据是从COM来的了,同理DCM也如此。
在这里插入图片描述
绑定的结构如下图所示:CanIf 和PDUR 的局部PDU绑定到ECUC的全局PDU。
在这里插入图片描述

二、API的使用和形参

  以PduR,CANif为例传输函数如下:

Std_ReturnType PduR_ComTransmit(PduIdType ComTxPduId, const PduInfoType* PduInfoPtr);
Std_ReturnType CanIf_Transmit(PduIdType CanTxPduId,const PduInfoType *PduInfoPtr)

第一个形参即表示PDU的Handle ID,根据Handle ID判定传输目标模块。
第二个形参表示指向SDU的指针。

三、Handle ID 唯一性特例

  Handle ID 在有种情况下可以重复。在PDUR中可能会具有相同的Handle ID,但是PDUR 提供了两个API:PduR_ComTransmit 和PduR_DcmTransmit,就算Handle ID一样,但是可以通过不同的API来区分。

四、PDU和handle ID关联用例

  101_dc8a7f01_Rx的帧,在CanIf中PDU handle ID 是0,在PDUR 中 handle ID是1.如下图所示:通过PDU ref 都绑定到了ECUC中的全局PDU中。
在这里插入图片描述
在这里插入图片描述
>>>>>回到总目录<<<<<<


原文地址:https://blog.csdn.net/weixin_42447823/article/details/136997943

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!