AUTOSAR - I-PDU 和 I-PDU的Callout

1.  什么是I-PDU?

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

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

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没有展示;

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

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

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

5.1 RX中的 I-PDU中Callout:

5.2  TX中的 I-PDU中Callout:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值