Com服务层的配置
有关Com通信协议栈的介绍到本篇就介绍完了,其实这块内容牵扯的知识是很多很多的 ,我这里只是抛砖,至于具体的细节必须通过自己亲手配置摸索,感受这个过程,一旦你明白了会有豁然开朗的感觉。
Com概念与定义
对不同速率的总线网络提供数据交换;为汽车控制单元应用软件提供了统一的通信环境,为内部和外部通信定义了公共的软件通信接口和行为;
AUTOSAR COM模块进行发送和接收信号,为RTE提供面向信号的接收与发送函数。
Signal的介绍
三种信号值
- 初始值:AUTOSAR COM模块使用配置参数ComSignalInitValue的低N位初始化发送方和接收方的每个N位的信号类型,
配置的ComSignalInitValues也用于I-PDU的初始化信号。一个信号的ComSignalInitValue可以与ComSignalDataInvalidValue值相同。初始化阶段会清空所有update-bits值。默认情况下,所有I-PDU组应在停止状态,不得由Com_Init()调用启动。 - 数据无效值:通过调用Com_InvalidateSignal, AUTOSAR
COM模块将在内部执行带有配置ComSignalDataInvalidValue的Com_SendSignal。ComTransferProperty和传输模式决定了ComSignalDataInvalidValue在总线上的传输。内部执行的带有数据无效值的Com_SendSignal,会决定被用作过滤器的数据无效值和TMS当前值。VFB仅为复杂数据类型定义一个属性。因此,一个失效的复杂数据类型到一个失效的信号簇的最佳映射是使一个信号簇的所有信号失效。因此,RTE还可以通过调用 - Com_InvalidateSignalGroup来请求使整个信号簇无效。 正常值:初始化阶段之后的有效值,包括COM部分收发的信号值
信号属性(Transfor property)
- Triggered属性-触发:调用Com_SendSignal(
)服务请求具备Triggered属性的信号发送,可以触发相关I-PDU的发送,但是如果该I-PDU的发送模式被配置为Peiodic时,只更新信号的值,不会触发相关I-PDU的立即发送,而是在下一周期到来时触发发送。 - Pending属性-延迟:Com_SendSignal( )服务请求调用具备Pending属性的信号发送,不会触发相关I-PDU的发送。
信号的初始化与对齐方式(大小端)
AUTOSAR COM在Com_Init()执行时,将初始化所有I-PDU内容,首先用默认值(ComTxIPduUnusedAreasDefault)表示字节,然后根据所包含信号的初始值(ComSignalInitValue)和更新位来表示位。初始化过程中无法使能ECU内部的通信功能
(小端):信号的高位(MSB)放在高字节的高位,信号的低位(LSB)放在低字节的低位;
(大端):信号的高位(MSB)放在低字节的高位,信号的低位(LSB)放在高字节的低位。
信号的收发
send
发送过程中,应用层调用COM层提供的信号或信号簇发送函数,根据配置,信号或信号簇的数据经过字节序转换后被更新到I-PDU中相应的位置。AUTOSAR COM规范中同一I-PDU可以设置两种发送模式ÿ