目录
- 关键词
- 平台说明
- 一、概念
- 二、API的使用和形参
- 三、Handle ID 唯一性特例
- 四、PDU和handle ID关联用例
关键词
嵌入式、C语言、autosar、OS、BSW
平台说明
项目 | Value |
---|---|
OS | autosar 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中。
>>>>>回到总目录<<<<<<