AUTOSAR COM模块框架梳理

框架:

COM的功能主要就是两个:

把IPDU内的signal提取出来提供给SWC使用,把SWC发送的signal拷贝到IPDU buffer内

所以,COM的关键字是 signal, signal group, IPDU, IPDU group

  • Signal group 是为了保证 Complex Data Types 的数据一致性
  • IPDU group 是为了实现partial networking

发送数据:

发送流程是, SWC更新IPDU buffer内部的signal数据,然后com把IPDU发送出去

这里有两大块可以配置的地方:

1. PDU内signal的更新:

  • 如果是普通的signal,SWC调用Com_SendSignal函数会直接改变IPDU buffer内相应signal的值
  • 如果是属于signal group下的signal,SWC调用Com_SendSignal函数则只会改变shadow buffer里面的值,SWC调用Com_SendSignalGroup函数时,才会把shadow buffer 复制过去改变IPDU buffer内相应signal的值

signal group的好处是,在对Complex Data Types操作时可以保证IPDU buffer内数据的一致性。也就是说SWC可以先调用Com_SendSignal, 对signal group下的signal一一赋值,然后再调用Com_SendSignalGroup统一发送出去

AUTOSAR COM模块框架梳理_第1张图片

2. PDU的发送:pdu ComTxModeMode + signal ComTransferPropety

  • PDU【direct】+ Signal 【triggered】: PDU内的signal一被更新就发送
  • PDU【periodic】+ Signal 【pending】: PDU被自动定期发送出去

具体函数

  • Com_SendSignal(signal ID, *SignalDataPtr)
  • Com_SendSignalGroup(signalgroup ID)

SWC调用这两个函数去把signal的信息更新到IPDU里面,根据PDU的ComTxModeMode 和 signal/signal group 的ComTransferPropety 属性 共同确定PDU什么时候被发送出去

AUTOSAR COM模块框架梳理_第2张图片

PDU: 【ComTxModeMode】

  • periodic: Com_Mainfunction will trigger the IPDU transmit
  • direct: IPDU transmit will be triggered immediately by triggered signal
  • mixed: direct + periodic 的完全融合,即direct 又 periodic

signal:  【ComTransferPropety】

  • pending: A write access to this signal never triggers the transmission of the corresponding I-PDU
  • triggered: a write access to this signal can trigger the transmission of the corresponding IPDU(Depending on the IPDU transmission mode)

接收数据:

Com_RxIndication更新IPDU buffer内的signal数据,然后SWC去接收signal

IPDU buffer 内 signal 的读取:

  • 如果是普通的signal,SWC直接调用Com_ReceiveSignal函数即可完成signal读取
  • 如果是signal group下的signal,SWC需要先调用Com_ReceiveSignalGroup函数,实现把signal从IPDU buffer 复制到 shadow buffer, 然后再调用Com_ReceiveSignal函数即可完成signal读取

AUTOSAR COM模块框架梳理_第3张图片

杂:

ComSignal里面可以配置signal的endianness

AUTOSAR COM模块框架梳理_第4张图片

AUTOSAR COM模块框架梳理_第5张图片

Ipdu group:

BswM的action 里面可以去触发 Ipdu group 的 发送,感觉是跟PN有关 【在某些特定的情况下,让BswM去关闭特定的Ipdu group 的 发送 和接收】

AUTOSAR COM模块框架梳理_第6张图片

I-PDU group 在BswM里面 enable,只有被enable的才能被发送/接收

I-PDU group 是PN的一种表现方式

发送/接收 数据完成后的 通知:

pdu:

  • deferred: Com_RxIndication/ Com_TxConfirmation will set a flag, Com_Mainfunction will check the flag and notifies RTE via configured ComNotifications function 
  • immediate: Com_RxIndication/ Com_TxConfirmation immediately notifies RTE via configured ComNotifications function for the signals and signal groups

ComNotifications function 是在ComIPDU里面用户自己配置的

你可能感兴趣的:(C语言+OS面试,开发语言)