AUTOSAR I-PDU的理解以及I-PDU的Callout

1.  什么是I-PDU?

我理解的 I-PDU 应该就是一个 Message,Message 是由多个信号组成的。比如下图中多路复用 Multiplexor = 0 时,无数个信号组成了一个 Message。

AUTOSAR I-PDU的理解以及I-PDU的Callout_第1张图片

Com模块获取应用层的信号(Signal),经一定处理封装为I-PDU(Interaction Layer Protocol Data Unit)发送到PduR模块。信号I-DPU可以包含一个或多个信号,可以理解为一个I-PDU为一帧CAN消息,信号就是dbc中定义的。如果需要将多个信号发送到同一I-PDU,则信号可以进一步形成信号组。

AUTOSAR I-PDU的理解以及I-PDU的Callout_第2张图片

AUTOSAR I-PDU的理解以及I-PDU的Callout_第3张图片

2.  I-PDU中Callout有什么用,以及怎么用

为什么要用到Callout,AUTOSAR中有两种回调,一个是Callback,另一个是Callout

2.1  Callback:

callback函数,该函数是AUTOSAR规范里定义好的接口,通常是用于较底层模块(例如PduR)根据需求向上层(例如Com)提供通知。例如在Dcm模块中,当PduR调用Dcm_StartOfReception()和Dcm_CopyRxData()函数将收到的诊断请求数据放置在Dcm模块的Buffer中,然后PDUR调用Dcm_TpTxConfirmation()函数通知Dcm模块接收到了新的诊断请求,其中Dcm_TpTxConfirmation()就是callback函数

2.2  Callout:

callout函数与callback函数最大区别在于callout函数没有在AUTOSAR规范中定义,仅提供一个函数指针,通常用于OEM或者Tirer1实现特殊的需求,例如在Com模块中,对IPDU进行处理时,提供ComIPduCallout配置选项,用于设置一个callout函数对CAN或者其他总线信号进行处理

2.3  所以I-PDU中Callout是为例实现我们想要对某种信号进行特殊处理时,才会添加的。代码中会将回调函数放到一个数组里,之后重新定义一个接口,在函数里进行调用;

如果是RX中的 I-PDU中Callout, Callout 在 Com_RxIndication()的上下文中调用

如果是TX中的 I-PDU中Callout, 在COM触发发送之前调用Callout

下面只截取了一些用到Callout的函数和结构体,宏定义以及COM接收到数据的buffer没有展示;

AUTOSAR I-PDU的理解以及I-PDU的Callout_第4张图片

AUTOSAR I-PDU的理解以及I-PDU的Callout_第5张图片

AUTOSAR I-PDU的理解以及I-PDU的Callout_第6张图片

3.  I-PDU中的Callout在config上的配置

AUTOSAR I-PDU的理解以及I-PDU的Callout_第7张图片

4.  I-PDU中Callout里的函数可以执行哪些功能,简单说一下:

5.  I-PDU中Callout与COM实现的流程图

5.1 RX中的 I-PDU中Callout:

AUTOSAR I-PDU的理解以及I-PDU的Callout_第8张图片

5.2  TX中的 I-PDU中Callout:AUTOSAR I-PDU的理解以及I-PDU的Callout_第9张图片

你可能感兴趣的:(AUTOSAR,汽车,arm开发)