1 概述
RTE使用AUTOSAR COM模块的功能来发送和接收信号,AUTOSAR COM模块为RTE提供面向信号的数据接口。
2 Signal与IPDU
Com层主要涉及信号和IPDU的配置。
RTE层的一个变量可以mapping到一个Signal Group.
一个Signal Group可以Mapping 到一个IPDU。
一个IPDU可以Mapping到一帧CAN ID报文进行发送。
信号写入配置定义的适当的I-PDU缓冲区,如下图所示:
2.1 Siganl处理方式
Signal或Siganl Group可以配置处理方式,TRIGGERED 或PENDING。
Triggered属性:调用Com_SendSignal( )服务请求具备Triggered属性的信号发送,可以更新信号的值并触发相关I-PDU的发送。
Pending属性:Com_SendSignal( )服务请求调用具备Pending属性的信号发送,该I-PDU的发送模式被配置为Peiodic时,只更新信号的值,不会触发相关I-PDU的立即发送,而是在下一周期到来时触发相关I-PDU的发送。
2.2 IPDU发送模式
2.3.1 信号处理
每个Pdu都有参数通信信号处理,这个参数可以立即或延迟。
2.3.2 TxMode发送模式
I-PDU的传输模式在各自的Com_MainFunctionTx中进行处理。这意味着到底层的实际传输请求总是与上层解耦。在传输模式中,处理器处理周期传输和直接传输模式。
Periodic: Com_Mainfunction will trigger the IPDU transmit
Direct: IPDU transmit will be triggered immediately by triggered signal
mixed: direct + periodic 的完全融合,即direct 又可以 periodic
2.3.3 TxMode发送模式选择
AUTOSAR COM允许为每个I-PDU配置两种不同的传输模式(ComTxModeTrue和ComTxModeFalse)。
仅使用映射到该I-PDU的信号的滤波器状态来选择在特定时间点有效的I-PDU的传输模式。
如果映射到特定I-PDU的任何信号的滤波器的计算结果为TRUE,则该I-PDU将以传输模式为TRUE进行传输。
当映射到此I-PDU的所有信号的滤波器计算为FALSE时,IPDU使用传输模式FALSE。
例如:ComTxModeTrue可以设置为Periodic发送
ComTxModeFalse可以设置为Direct发送
TxMode发送模式无法手动进行选择,由Com模块计算后进行相应选择。
2.3.4 PDU的发送
Pdu ComTxModeMode + Sgnal ComTransferPropety组合设置发送
PDU【direct】+ Signal 【triggered】: PDU内的signal一被更新就发送
PDU【periodic】+ Signal 【pending】: PDU被自动定期发送出去
3 信号发送/接收流程
3.1 信号的发送
发送流程:
1)首先在RTE层定义了一个信号变量,然后调用了Com_SendSignal函数
2)这个函数会将信号ID和信号值的地址作为参数传递给COM模块,COM模块会根据信号ID找到对应的I-PDU,
3)将信号值打包到I-PDU中,并通过PduR模块将I-PDU发送到相应的总线协议模块。
4)I-PDU根据Pdu ComTxModeMode + Sgnal ComTransferPropety组合设置发送模式,调用
PduR_ComTransmit发送函数。
5)PduR层依次调用CanIf_Transmit函数,通知CanIf层
6)CanIf层调用Can_Write函数,将报文发送到can总线上。
3.2 信号的接收
接收流程:
1)在接收过程中,首先通关Can中断函数通知CanIf层CanIf_RxIndication函数
2)CanIf层在通知PduR_RxIndication
3) PduR层接收到I-PDU时,底层将调用COM层提供的指示函数Com_RxIndication(),取消并重启接收死限监控,将I-PDU的数据从底层拷贝到COM中。
4)Com层调用信号或信号簇的接收函数后,该I-PDU中的信号或信号簇将经过字节顺序转换、符号扩展和接收过滤后,数据被拷贝到RTE层。
5)RTE层后调用了Com_ReceiveSignal函数进行信号解析。