详解AUTOSAR COM配置
目录
一、COM级别配置解析
1. ComSignal
ComBitPosition (0 -> 524272): 该signal在ipdu中的开始位置
ComBitSize(0->64): 该signal的大小
ComDataInvalidAction:检查信号是否为提前配置好的无效数据,会有配置好的动作,NOTIFY 或者 REPLACE,顾名思义,前者为通知,后者为替换数据为指定数据
ComErrorNotification:仅发送端有效,call Com_CbkTxErr
ComFirstTimeout (0 -> 3600): 初次超时时间。如果省略:ComTimeout用于ComFirstTimeout。
ComTimeout (0 -> 3600): 超时监控时间,若不配置则com模块不应监视该信号或信号组,还应忽略ComFirstTimeout
ComTimeoutNotification: 定义发生超时时在发送方或接收方要调用的函数的名称,send: Com_CbkTxTOut receive: Com_CbkRxTOut,无需配置,缺省默认, 通知RTE。本身不会进一步处理,比如发送端超时并不会主动尝试重发,等待RTE做进一步处理。
ComRxDataTimeoutAction: 出于数据有效性的考虑需要决定在未收到有效报文的情况下,向APL呈现何种数据,因而需要设定【ComRxDataTimeoutAction】来决定超时发生后,对被监控的IPDU中的数据的操作,或替换初始值,或保持上一次的数据。
ComInitialValueOnly
ComInvalidNotification: ComDataInvalidAction=NOTIFY时有效
ComNotification: send side: Com_CbkTxAck , It is called immediately after successful transmission of the I-PDU containing the message Receive side: Com_CbkRxAck, It is called immediately after the message has been stored in the receiving message object.
ComSignalDataInvalidValue
ComSignalDirection: send or receive
ComSignalEndianness:定义信号网络表示的字节排序。可以是BIG_ENDIAN,LITTLE_ENDIAN,OPAQUE
ComSignalInitValue:信号初始值
ComSignalLength (0 -> 65535): 它指定UINT8 [n]类型的n(以字节为单位:1 … 8)。对于其他类型,它将被忽略。(多重性:0 … 1),一般不使能
ComSignalType:它指定符合BOOTEAN,SINT8,UINT8等
ComTransferProperty:定义此信号是否可以触发相应IPDU的传输,具体分为以下几类:
ComSystemTemplateSystemSignalRef:一般导入dbc文件时才配置该项,自己不用配置。
ComFilter:一般不需要配置,不过滤掉信号,发送端只为计算TMC,根据TMS的结果判断走ComTxModeTrue OR ComTxModeFalse; 接收端过滤掉一个信号,即过滤条件被计算为 false 时,应该丢弃信号并且不处理该信号
ComFilterAlgorithm:
ALWAYS
NEVER
MASKED_NEW_EQUALS_X
MASKED_NEW_DIFFERS_X
MASKED_NEW_DIFFERS_MASKED_OLD
ONE_EVERY_N
注:对于ComSignalType FLOAT32、FLOAT64、UINT8_N或UINT8_DYN的信号,AUTOSAR COM模块应只支持配置为ALWAYS、NEVER或ONE_EVERY_N的ComFilterAlgorithm ;对于ComSignalType配置为BOOLEAN的信号,AUTOSAR COM模块应只支持ComFilterAlgorithm配置为ALWAYS;NEVER;MASKED_NEW_EQUALS_X;MASKED_NEW_DIFFERS_X;MASKED_NEW_DIFFERS_MASKED_OLD; ONE_EVERY_N
2. ComIpdu级别配置解析
以Tx发送报文为例:
ComIPduCallout: 此参数可定义相应I-PDU的callout函数的名称,该函数在接收IPDU时或在发送PDU之前调用,提供一个指针
ComIPduCancellationSupport:是否支持取消正在进行的请求。 ComIPduType NORMAL:canif 是否支持取消正在进行的请求 ComIPduType TP:TP是否支持取消正在进行的请求.如果 ComIPduCancellationSupport 配置为 TRUE 的 I-PDU 的传输期限监视计时器到期,则 AUTOSAR COM 模块应为该 I-PDU 调用 PduR_ComCancelTransmit. PduR_ComCancelTransmit 的调用是在 Com 的正常超时处理之外完成的,如果 PduR_ComCancelTransmit 已配置,它会通知 SW-C。
ComIPduDirection:receive or send
ComIPduSignalProcessing:two modes :deferred or immediate 。
Immediate:则 AUTOSAR COM 模块应分别为 Com_RxIndication 或 Com_TpRxIndication 函数中包含的信号和信号组调用配置的 ComNotifications
Deferred:则 AUTOSAR COM 模块应首先将 Com_RxIndication 函数或相关 TP 接收函数中的 I-PDU 数据分别从 PduR 复制到 COM。 然后 AUTOSAR COM 模块应在下次调用 Com_MainFunctionRx 期间异步调用所包含的信号和信号组配置的 ComNotifications
ComIPduTriggerTransmitCallout:略
ComIPduType:NORMAL OR TP ,决定下层是PDUR 或CANTP
ComPduIdRef: Refer to a ECUC
comTxIPdu:略
ComMinimumDelayTime (0 -> 3600):MDT最小延迟时间,表示这个IPDU两次发送之间的最小间隔时间,模式ComTxModeMode转换不受影响,refer this link for details:
【AUTOSAR-CP-CAN-2】AUTOSAR COM_肥羊也的博客-CSDN博客_autosar cp 代码
ComTxIPduClearUpdateBit:refer to the up link.当该IPDU关联的signal配置了updatebit时有效。
ComTxIPduUnusedAreasDefault: 填充 I-PDU 内部没有使用的区域
ComTxModeTrue/False:
如果 TMS 被评估为 true,COM 应该为这个I-PDU使用定义在配置容器 ComTxModeTrue 的ComTxModeMode。
如果 TMS 被评估为 false,COM 应该为这个I-PDU使用定义在配置容器 ComTxModeFalse 的ComTxModeMode。
ComTxModeMode:poried /mixed /direct /none
ComTxModeNumberOfRepetitions (0 -> 255): ipdu重复次数,仅ComTxModeMode配置为DIRECT OR MIXED有效
ComTxModeRepetitionPeriod (0 -> 3600):ipdu重复时周期,仅ComTxModeMode配置为DIRECT OR MIXED有效
ComTxModeTimeOffset (-1 -> 3600): IPDU开始调度Com_IpduGroupControl 与first transmission request之间的时间(初次传输):
1) ==0 or omitted : first transmission request就是下次调用Com_MainFunctionTx的时间
2) >0 开始调度Com_IpduGroupControl 与first transmission request之间的时间设定值为调用 Com_MainFunctionTx的次数
3) <0 立即调用
ComTxModeTimePeriod (0 -> 3600) :IPDU调度周期
二、CANIF级别配置解析
以Tx为例:
CanIfTxPduCanId: CANID 将其转换成hex即为canoe显示的CANID ,该条PDU名称也一般后缀CANID的十进制数大小。
CanIfTxPduCanIdType :可选以下几项
Range:
CanifRxPduUserRxIndicationUL、CanIfTxPduUserTxConfirmationUL:定义上/下层模块分配,包括: CAN_NM /CAN_TP/ CAN_TSYN/ CDD/ PDUR
CanIfTxPduDlc: 该选项常被忽略,因为发送报文的长度信息一般配置在函数Canif_Transmit 中的PduInfoPtr里
特别的,Rx接收报文:
CanIfRxPduDlc:该条L-PDUS的长度。对于接收报文来讲,它用于DLC checking,若接收到的报文长度大于等于这个值,则认为有效,canif将其传到上层结构;若接收到的报文小于配置的值,该条报文将被忽略;若配置为0,则不会对DLC check产生影响,忽略。
CanIfRxPduCanIdRange:可以配置接收某个CANID范围段的报文,此时CanIfRxPduCanId选项会不可选,若该选项使能,CanIfRxPduCanIdRangeLowerCanId ,CanIfRxPduCanIdRangeUpperCanId 则使能。
三、PduR级别配置解析
PduRSrcPduRef:引用ECUC里面对应pdu即可
PduRDestPduRef :引用ECUC里面对应pdu即可
PduRDestTxBufferRef :在PduRTxBuffer中引用一个Buffer, 可以被全局引用,所以可以节省更多的内存空间。
四、ECUC级别配置解析
PduLength:定义Pdu的长度信息,以BYTE为单位。
SysTPduToFramMappingRef: 引用模板信息,只有在导入dbc或者arxml文件配置报文时会默认配置,手动配置时不需要关心。
以上就是这篇文章的所有内容啦,有问题大家一起交流!