AUTOSAR-Com篇

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都有参数通信信号处理,这个参数可以立即或延迟。

IMMEDIATE: 
       信号处理在函数Com_TxConfirmation()或Com_RxIndication()中调用通知函数。在相应Com_MainFunctionTx()的下一个调用中,将触发立即进行信号处理的触发信号的传输。
DEFERRED:
     信号处理意味着在各自的Com_MainFunctionRx()或Com_MainFunctionTx()的下一个调用周期中,在任务级上调用通知函数。

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函数进行信号解析。

  • 59
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值