目錄
前言
1. Com模塊功能介紹
2.關鍵概念理解
3.功能詳細設計
3.1 Introduction
3.2 General Functionality
3.2.1 AUTOSAR COM basis
3.2.2 Signal Values
3.2.3 Endianness Conversion and Sign Extension
3.2.4 Filtering
3.2.5 Signal Gateway
3.3 Normal Operation
3.3.1 Start-Up Behavior
3.3.2 De-Initialization
3.3.3 Communication Modes
3.3.4 Signal Invalidation
3.3.5 Handling of I-PDUs
7.3.6 Deadline Monitoring
3.4 Signal Groups - Complex Data Types
3.4.1 Initialization
3.4.2 Transmission
3.4.3 Reception
3.4.4 Notifications
3.4.5 Attributes of a Signal Group
3.4.6 UINT8-array based access to signal groups
3.5 Large Data Types
3.5.1 Transmission of Large Signals/ I-PDUs
3.5.2 Reception of Large Signals/ I-PDUs
3.6 Dynamic Length Signals
3.6.1 Transmission of Dynamic Length Signals/ I-PDUs
3.6.2 Reception of Dynamic Length Signals/ I-PDUs
3.7 Interface between AUTOSAR COM Module and the PDU Router
3.8 Update-Bits
3.8.1 Sender Side
3.9 Data Sequence Control
3.9.1 Sender Side
3.9.2 Receiver Side
3.10?Communication Protection
3.10.1 Sender Side
3.10.2 Receiver Side
7.10.3 Constraints
3.11?Signal Gateway
3.11.1 Dealing with Signals
3.11.2 Dealing with Signal Groups
3.11.3 Routing of Out-Timed Signals and Signal Groups
3.11.4 Handling of Update-Bits
3.11.5 Decoupling Signal Gateway
4.關鍵API函數
5.COM模塊與上下層模塊的交互
5.1COM模塊與PDUR模塊之間的接口
5.2 COM模塊和RTE模塊之間的數據確認處理
6.COM模塊的配置
6.1 COM
6.2 ComGeneral
6.3 ComConfig
6.3.1 ComIPduGroups
6.3.2 ComIPdus
6.3.3 ComSignal
6.3.4 ComSignalGroup
前言
信號/消息在AutoSAR通信架構中流經了下列模塊,從上至下(發送邏輯)為:SwcAppSender->Rte->Com->PduR->CanIf->CanDrv;從下至上(接收邏輯:CanDrv>CanIf->PduR->Com->Rte->SwcAppReceiver;通過分層,每層可以根據自己的配置信息實現消息的打包和拆包,用戶層的業務邏輯不依賴底層總線的硬件特性;缺點就是增加了各層的API調用開銷。
1. Com模塊功能介紹
COM模塊位于RTE和PDU Router模塊之間。
COM模塊提供信號網關功能,主要的功能如下:
????. 為RTE提供信號導向的數據接口
????. 將AUTOSAR信號封裝到要發送的I-PDU
????. 將接收到的I-PDUs解包,并向RTE提供接收到的信號
????. 將接收到的I-PDUs信號路由到發送I-PDUs
????. 將接收到的I-PDUs信號組路由到發送I-PDUs
????. 通訊傳輸控制(開始/結束 I-PDU組)
????. 發送請求控制
????. 保證傳輸I-PDU之間的最小距離
????. 接收信號的控制(信號超時控制)
????. 輸入信號的濾波機制
????. 不同的通知機制
????. 提供初始值和更新指示
????. 字節序轉換
????. 符號擴展
????. 每個I-PDU支持兩種不同的傳輸方式
????. 基于信號的網關
????. 支持大數據類型和動態數據類型
????. 支持I-PDU計數器和I-PDU復制
2.關鍵概念理解
Confirmation: 通過確認,PDU Router報告AUTOSAR COM模塊的請求已經成功完成。這是對COM請求的反應。例如,當PDU已成功傳輸時,PDU Router就會通過Confirmation報告給Com模塊傳輸PDU成功。
Data Invalid Value: 由AUTOSAR COM模塊發送的值,用于指示發送方側AUTOSAR軟件組件無法提供有效值。
Dynamic Length Signal: 可以在運行時動態改變信號數據長度的信號。
Dynamic Length I-PDU: 包含動態長度信號的I-PDU。
Group Signal:?信號組里面包含的信號。
Indication: Indication指的是從PDU Router到COM的異步信息,例如PDU Router通知COM報文的接收。
Init Value: Com module啟動之前,I-PDU中的Signal的值。
Large Signal: 一整個I-PDU長度都不能滿足的Signal。
Large I-PDU:?一整個L-PDU長度都不能滿足的I-PDU。Large I-PDU需要通過TP傳輸層分幀傳輸。
Notification:?COM模塊通知到RTE的信息,例如可用的新數據,錯誤的發生。
Signal: I-PDU中的具體的每個信號。
Signal Group:?在AUTOSAR中,使用了所謂的復雜數據類型。在復雜數據類型中,有一個或多個數據元素(基本數據類型),就像在C結構中一樣。這種復雜數據類型的數據一致性必須得到保證。RTE將復雜的數據類型分解為單個信號,并將其發送給AUTOSAR COM模塊。由于這些信號都需要得到一致的處理,所以稱之為信號組。
Update-bit: 由AUTOSAR COM模塊支持的一種機制,使信號/信號組的接收方能夠識別發送方在發送前是否更新了該信號/信號組中的數據。
3.功能詳細設計
3.1 Introduction
3.2 General Functionality
3.2.1 AUTOSAR COM basis
COM模塊需要可實現以下功能,每個功能可根據需求配置,如果在其他特定模塊中已經實現,可通過配置disable該功能:
- 分離I-PDU為具體的Signal/Message的功能。
- 將Signal組合成I-PDU的功能。
- 緩沖隊列的功能。
- 0長度信號的處理
- 對事件、任務、標志的通知機制。
- 開始和停止周期報文的功能。
- 間接網絡管理的接口。
- 發送信號濾波。
3.2.2 Signal Values
COM模塊為每個信號提供初始值、無效值、正常值三種數據。
3.2.3 Endianness Conversion and Sign Extension
COM模塊支持boolean, uint8, uint16, uint32, uint64, sint8, sint16, sint32, sint64, uint8[n], float32, float64數據類型。
COM模塊應該支持所有支持的有符號和無符號整型數據類型的字節序轉換。
AUTOSAR COM模塊將非整數數據類型(例如uint8[n]或float32)作為匹配大小的整數數據類型處理,或者在ComSignalEndianness配置為OPAQUE時不解釋其內容。
AUTOSAR COM模塊應將不透明數據解釋為uint8[n],并始終將其映射為n字節大小的信號。
對于不透明的數據字節順序,轉換必須配置為opaque。
AUTOSAR COM模塊應將接收的數據擴展到接收信號的ComSignalType的大小(符號擴展)。
AUTOSAR COM模塊不支持float32和float64數據類型的符號擴展。
AUTOSAR COM模塊在I-PDU發送之前執行字節序轉換。
AUTOSAR COM模塊在執行信號濾波和接收信號通知之前完成符號擴展和字節序轉換。
3.2.4 Filtering
AUTOSAR COM模塊只過濾接收端信號。AUTOSAR COM模塊應在發送方使用傳輸模式條件(TMC)的過濾機制,但不應過濾發送方的信號。
AUTOSAR COM模塊提供以下的濾波算法:
. ALWARYS
. NEVER
. MASKED_NEW_EQUALS_X
. MASKED_NEW_DIFFERS_X
. MASKED_NEW_DIFFERS_MASKED_OLD
. NEW_IS_OUTSIDE
. ONE_EVERY_N
ComSignalType為FLOAT32, FLOAT64, UINT8_N, UINT8_DYN的信號只支持ALWAYS, NEVER, ONE_EVERY_N的濾波算法。
ComSignalType為BOOLEAN的信號只支持ALWAYS, NEVER, ONE_EVERY_N,MASKED_NEW_EQUALS_X,MASKED_NEW_DIFFERS_X,MASKED_NEW_DIFFERS_MASKED_OLD的濾波算法。
3.2.5 Signal Gateway
AUTOSAR COM模塊提供了一個集成的信號網關(Signal Gateway),實現信號和信號組的1:n轉發。
路由關系是通過ComGwMapping 容器靜態配置的。
信號網關接收到進行路由的信號或信號組后,立即分別作為這些信號或信號組的發送方。如果是集成的信號網關轉發一個信號/信號組,或者是軟件組件發送一個信號/信號組,則信號處理沒有區別。
由于網關關系是靜態配置的,因此優化后的信號網關可能會跳過一些具體配置的處理階段。例如,在某些情況下不需要進行字節序轉換。當然,這樣的優化不應該在目標總線上導致任何不同的邏輯行為或不同的表示。優化只能用于提高Signal Gate方法的性能。
3.3 Normal Operation
3.3.1 Start-Up Behavior
AUTOSAR COM模塊在執行Com_Init (SWS_Com_00432)時初始化每個I-PDU,首先使用ComTxIPduUnusedAreasDefault值進行字節化,然后根據所包含信號的初始值(ComSignalInitValue)和更新位進行位化。
3.3.2 De-Initialization
AUTOSAR COM模塊提供了API函數Com_DeInit用于COM層的反初始化。這意味著,在層d反初始化后,沒有通過AUTOSAR COM模塊的通信是possible和所有啟動的I-PDU組停止。
3.3.3 Communication Modes
Transfer Properties and I-PDU Transmission Mode
Signals
AUTOSAR COM模塊支持信號的幾種傳輸特性和I-PDU的幾種傳輸模式。
一個信號的發送請求屬性(ComTransferProperty )如果為TRIGGERED,且該I-PDU的發送模式(ComTxModeMode)為DIRECT或MIXED,AUTOSAR COM模塊應立即(在最近的的下一個主函數中)啟動ComTxModeNumberOfRepetitions加上I-PDU的一次傳輸。
對于使用ComTxModeMode DIRECT或MIXED分配給I-PDU的帶有ComTransferProperty TRIGGERED_WITHOUT_REPETITION的信號的任何發送請求,AUTOSAR COM模塊將立即(最遲在下一個主要函數中使用)啟動分配給IPDU的一次傳輸。
在發送一個信號時,如果信號的ComTransferProperty?屬性為TRIGGERED_ON_CHANGE,且發送模式ComTxModeMode為DIRECT或者MIXED。如果新發送的信號在長度或值上與本地存儲的(最后發送或初始化)不同,AUTOSAR COM模塊將立即(最遲在下一個主要函數中使用)啟動分配給IPDU的一次傳輸。
在發送一個信號時,如果信號的ComTransferProperty?屬性為TRIGGERED_ON_CHANGE_WITHOUT_REPETITION,且發送模式ComTxModeMode為DIRECT或者MIXED。如果新發送的信號在長度或值上與本地存儲的(最后發送或初始化)不同,AUTOSAR COM模塊將立即(最遲在下一個主要函數中使用)啟動分配給IPDU的一次傳輸。
對于ComBitSize配置為0的信號和組信號,AUTOSAR COM模塊不支持TRIGGERED_ON_CHANGE和TRIGGERED_ON_CHANGE_WITHOUT_REPETITION傳輸屬性。
對傳輸屬性TRIGGERED_ON_CHANGE和TRIGGERED_ON_CHANGE_WITHOUT_REPETITION的支持并不局限于某些信號類型。因此,所有可能的信號類型都支持它們。這甚至包括字節數組類型,例如UINT8_N。
AUTOSAR COM模塊不應對傳輸模式(ComTxModeMode)為 NONE的I-PDU發起傳輸。
發送模式(ComTxModeMode)為NONE的I-PDUs可以通過Com_TriggerTransmit進行發送。
如果I-PDU的傳輸因任何原因被觸發,則發送與I-PDU相關的Pending信號。例如,如果在同一個I-PDU內發送了一個具有ComTransferProperty TRIGGERED的信號,或者I-PDU的發送被調度為cause of ComTxModeMode PERIODIC或MIXED。
I-PDU的總線定時可以通過RTE的發送請求來控制,并結合上述的傳輸模式和傳輸特性。另外,PDU路由器,特別是在FlexRay和LIN的情況下,可以通過Com_TriggerTransmit服務來控制它。在后一種情況下,PDU路由器請求從AUTOSAR COM模塊發送i -PDU。
可以對任意I-PDU調用Com_TriggerTransmit函數,而不管它的傳輸模式是什么。這使得LIN和FlexRay可以使用所有可用的傳輸模式,特別是對于零星通信。NM也使用這種機制來發送用戶數據。
Signal Groups
在AUTOSAR COM中,如果I-PDU在信號組或組信號更新的情況下被發送出去,結合傳輸模式定義,則信號組和組信號也可以有一個傳輸適當的傳輸模式。
一個信號組的發送請求屬性(ComTransferProperty )如果為TRIGGERED,且該I-PDU的發送模式(ComTxModeMode)為DIRECT或MIXED,AUTOSAR COM模塊應立即(在最近的的下一個主函數中)啟動ComTxModeNumberOfRepetitions加上I-PDU的一次傳輸。
在使用ComTxModeMode DIRECT或MIXED分配給I-PDU的信號組的任何發送請求中,AUTOSAR COM模塊最遲將在下一個主函數中啟動分配的I-PDU的傳輸任務。
關于使用ComTransferProperty TRIGGERED_ON_CHANGE的信號組,它不包含任何具有自己的ComTransferProperty配置的信號:
在發送信號組的時候,如果信號組的發送模式(ComTxModeMode)配置為DIRECT或者MIXED,且任何一個組信號的值或者長度和上一次的值或者長度不同,則AUTOSAR COM模塊在Mainfucntion的下一次調度中立即啟用ComTxModeNumberOfRepetitions,同時傳輸該I-PDU。
Selection of the Transmission Mode for one specific I-PDU
I-PDUs傳遞信號。由于一個I-PDU可以包含多個信號,下面定義了一種方法,根據包含在一個特定I-PDU中的信號的狀態來推導I-PDU的傳輸模式。
AUTOSAR COM模塊允許為每個I-PDU靜態配置兩種不同的傳輸模式。I-PDU在特定時間點有效的傳輸模式,只使用映射到該I-PDU的信號的值來選擇。
用于選擇兩種傳輸模式中的一種的I-PDU的信號以及用于選擇傳輸模式的條件是靜態配置的。
對于傳輸方式的選擇,AUTOSAR COM模塊將組信號視為正常信號。
對于TMS的評估,AUTOSAR COM模塊應考慮所有(組)信號,其中的配置項包括configured ComFilter容器。
如果一個具有ComIPduDirection配置為SEND的I-PDU的信號包含一個配置容器ComFilter,則該信號可以視為對該I-PDU的TMS的contribute。如果該信號的配置容器沒有分配配置容器ComFilter,那么它不會被視為對TMS的contribute。
如果I-PDU內沒有信號參與TMS的計算,則AUTOSAR COM模塊將該I-PDU的TMS評估為true。
如果AUTOSAR COM模塊評估一個contributing signal的TMC為真,那么AUTOSAR COM模塊將評估TMS為真。
如果AUTOSAR COM模塊評沒有一個contributing signal的TMC為true,那么AUTOSAR COM模塊將評估TMS為false。
AUTOSAR COM模塊應該為每個I-PDU定義一個傳輸模式選擇器。
當包含的信號通過調用Com_SendSignal或Com_SendSignalGroup更新后,AUTOSAR COM模塊將重新計算I-PDU的TMS。
對于配置為?MASKED_NEW_DIFFERS_MASKED_OLD的傳輸模式的計算,AUTOSAR COM模塊應僅使用最低有效的ComBitSize位。
對于配置為MASKED_NEW_DIFFERS_X、MASKED_NEW_EQUALS_X、NEW_IS_OUTSIDE或NEW_IS_WITHIN的傳輸模式計算,AUTOSAR COM模塊應使用配置的ComSignalType的所有位。
注意,將ComFilterAlgorithm配置為ALWAYS的信號將始終將各自I-PDU的TMS設置為true。因此,在定義導致經顱磁刺激的信號時必須謹慎。
如果I-PDU的TMS值為true,則AUTOSAR COM模塊將使用配置容器ComTxModeTrue 中定義的ComTxModeMode。
如果I-PDU的TMS值為false,則AUTOSAR COM模塊將使用配置容器ComTxModeFalse 中定義的ComTxModeMode。
當I-PDU的TMS狀態發生變化時,AUTOSAR COM模塊應立即使用當前有效的傳輸模式(最遲在下一個主功能內)。這意味著,首先AUTOSAR COM模塊應根據形式的模式更改,然后,AUTOSAR COM模塊應執行任何由模式更改引起的對PduR_ComTransmit的調用。
如果TMS的變化導致I-PDU的傳輸模式發生變化,則AUTOSAR COM模塊需要重新啟動定時器,以獲取傳輸模式PERIODIC和MIXED的周期時間。
當調用Com_SendSignal或Com_SendSignalGroup結果變化的傳輸方式開始I-PDU傳輸模式周期或混合,然后AUTOSAR COM模塊應當開始新的傳播循環調用PduR_ComTransmit未來在最新的主要功能。無論導致傳輸模式切換的信號或信號組的傳輸特性如何,都應啟動傳輸。仍應尊重最小延遲時間。參見圖5 AUTOSAR COM模塊的接收交互模型。
不考慮ComTxModeTimeOffset。它只在明確的I-PDU傳輸模式開關中生效,例如Com_IpduGroupStart或Com_SwitchIpduTxMode。
如果TMS的更改導致傳輸模式DIRECT的更改,則應立即(最遲在下一個主要函數內,除非由于MDT而移位ed)直接傳輸至底層。
上面的需求說明了如果使用ComTransferProperty PENDING信號觸發TMS-switch到ComTxModeMode DIRECT時的行為。
如果I-PDU的ComTxModeMode配置為NONE,則AUTOSAR COM不會發起傳輸。這可以用來防止傳輸I-PDU,例如TMS計算為假的情況下。
在一次調用Com_MainFunctionTx中,AUTOSAR COM模塊最多發送一次I-PDU。
Signal Flow and Transmission Mode Selection
在RTE對一個特定的信號發出請求后,將信號寫入配置定義的適當的I-PDU緩沖區,并根據3.3.3.2章節選擇I-PDU的傳輸模式。
Replication of Signal Transmission Requests
RTE發送請求時,在ComTxModeMode傳輸模式為?DIRECT或?MIXED中傳輸請求的重復次數由配置參數ComTxModeNumberOfRepetitions定義。
如果ComRetryFailedTransmitRequests 設置為TRUE,I-PDU的發送模式設置為DIRECT或MIXED,且ComTxModeNumberOfRepetitions設置為0,則這個I-PDU被觸發發送數據時,AUTOSAR COM模塊僅調用 PduR_ComTransmit函數一次發送I-PDU,且這個發送不用考慮發送Confirmation。
COM模塊如果在發送數據的時候又收到RTE新的信號發送請求,且這個新的信號屬于同一I-PDU中的信號,AUTOSAR COM模塊應該取消未完成的發送任務,并在下一個調度周期處理新的發送請求。
如果底層返回E_NOT_OK,而N-Times傳輸正在進行,這個錯誤通知將被忽略,除非ComRetryFailedTransmitRequests設置為true。N-Times傳輸只計算確認的傳輸,錯誤的發送請求可以被安全忽略。
如果在MIXED傳輸模式循環傳輸并等待確認后,在混合傳輸模式下請求n次傳輸,則循環傳輸的確認將分配給n次傳輸。在這種情況下,只有N次請求的新值的N -1次傳輸被服務。然后,在N-Times請求完成后,傳輸截止日期監控定時器將最早被重置。在結合混合傳輸模式和N-Times傳輸配置傳輸截止時間監控定時器時,必須考慮到這一點。
如果在傳輸模式中混合一個n次傳輸請求與混合傳輸的循環部分重疊,則循環傳輸應計算為相應的n次傳輸任務請求的傳輸。
如果在N-Times傳輸完成之前出現了傳輸截止時間監控超時,則AUTOSAR COM模塊將不會對該N-Times傳輸發起進一步的傳輸。
最小延遲時間將始終被考慮在內,為了避免啟動時的突發,可以為每個I-PDU配置一個時間偏移,兩次重復的時間由配置參數“ComTxModeRepetitionPeriod”配置。
Retry Failed Transmission Requests
如果ComRetryFailedTransmitRequests設置為TRUE,則需要計算PduR_ComTransmit的返回值。如果PduR_ComTransmit的返回值不等于E_OK,則AUTOSAR COM模塊將在下一次Com_MainFunctionTx中為未發送的I-PDU再次調用PduR_ComTransmit。
AUTOSAR COM模塊對傳輸deadline的監控應獨立于可能的重試。后續重試不應影響傳輸截止日期監測。
如果ComRetryFailedTransmitRequests設置為True,并且I-PDU出現了傳輸截止時間監控超時,AUTOSAR COM模塊將對該I-PDU的任何正在等待的傳輸請求過期。
循環傳輸的周期定時器總是從第一次傳輸嘗試開始。
3.3.4 Signal Invalidation
AUTOSAR COM模塊為發送方提供了指示其無法為相應信號提供有效值的可能性,例如在傳感器故障的情況下。AUTOSAR COM模塊允許在配置期間定義ComSignalDataInvalidValue。
Reception of an Invalidated Signal
如果為一個接收信號配置了無效值ComSignalDataInvalidValue且在COM層接收到了這個信號的無效值,并且信號的ComDataInvalidAction配置項被配置為NOTIFY, AUTOSAR COM模塊將通過配置的ComInvalidNotification函數通知RTE。在這種情況下,不能進行濾波或正常信號指示等信號處理。接收信號Deadline定時器也會重啟。
如果信號組中有一個組信號配置了ComSignalDataInvalidValue 參數,且收到了這個無效值,并且這個信號的ComDataInvalidAction配置項被配置為NOTIFY, AUTOSAR COM模塊將通過配置的ComInvalidNotification函數通知RTE。在這種情況下,信號組中的所有信號的正常處理(例如接收Indication)都不會發生。
如果信號組中有一個組信號配置了ComSignalDataInvalidValue 參數,且收到了這個無效值,并且這個信號的ComDataInvalidAction配置項被配置為REPLACE, , AUTOSAR COM模塊將將會使用信號組配置的ComSignalInitValue替換所有的組信號,正常的信號組/組信號處理(例如接收Notification)將會在接收到所有組信號的初始值后開始進行。
如果為一個接收信號配置了ComSignalDataInvalidValue參數且接收到了這個無效值,并且它的ComDataInvalidAction配置為NOTIFY, AUTOSAR COM模塊將不會將接收到的ComSignalDataInvalidValue存儲到信號對象中。下一次調用com_receivessignal將分別返回最后一個有效接收到的信號或ComSignalInitValue(如果還沒有接收到信號)。
如果一個信號組中的一個組信號配置了ComSignalDataInvalidValue參數且接收到了這個無效值,且其ComDataInvalidAction配置為NOTIFY,則AUTOSAR COM模塊不應將接收到的任何組信號存儲到信號對象中。下一次調用com_receivessignal將分別返回最后一個有效接收到的組信號或ComSignalInitValue(如果還沒有接收到信號)。
3.3.5 Handling of I-PDUs
I-PDU Group Definitions
以下規則被應用于I-PDU組:
- 一個I-PDU可以屬于任意一個I-PDU組
- 如果一個I-PDU屬于一個已啟動的I-PDU組,或者它不屬于任何I-PDU組,并且它被隱式啟動,則該I-PDU是active (started)
- 最大的I-PDU組的數目是可配置的,通過ComSupportedIpduGroups參數配置
- I-PUD組可能只包含發送I-PDU或者接收I-PDU
I-PDU組里面的一個I-PDU被激活,整個I-PDU組里面的I-PDU都會被激活。
對于AUTOSAR COM模塊,I-PDU組的嵌套純粹是概念上的,必須通過AUTOSAR COM模塊的適當配置和/或使用來解決。
同樣,COM模塊不知道或處理任何i - pdu分組。任何I-PDU分組必須通過配置或調用模塊進行處理。
此外,I-PDU組的完整狀態處理不在AUTOSAR COM模塊完成,例如在ComM模塊中處理。當I-PDU組狀態發生變化時,管理I-PDU組狀態的模塊會通過Com_IpduGroupStart和Com_IpduGroupStop來持續啟動或停止I-PDU組。
I-PDU未被分配到任何I-PDU組的狀態不能被改變,因此它們是隱式啟動的:
如果一個I-PDU沒有被分配給任何一個I-PDU組,AUTOSAR COM將在Com_Init中啟動這個I-PDU,就像它將由Com_IpduGroupStart啟動一樣,參數Initialize設置為true。
由于AUTOSAR COM不會隱式地停止這樣一個I-PDU,而且它沒有被分配給任何I-PDU組,這樣一個I-PDU永遠不會被停止。
Starting of I-PDU Groups
缺省狀態下所有的I-PDU是被stopped,通過調用Com_IpduGroupStart開始一個I-PDU的接收或者發送。
如果一個I-PDU由Com_IpduGroupStart啟動,AUTOSAR COM模塊將初始化這個I-PDU的以下屬性:
- DIRECT或MIXED傳輸模式下I-PDUs的ComMinimumDelayTime
- 使用非零配置的ComFirstTimeout重新啟動所有信號的所有接收截止監控計時器
- 當I-PDU激活后第一次啟動傳輸計時器時,取消所有傳輸截止監控計時器,并使用ComFirstTimeout(如果配置)作為值
- 所有包含的更新位將被清除
- 使用ONE_EVERY_N的算法(ComFilterAlgorithm)重置 OCCURRENCE類型的過濾器
- 對于ComIPduDirection為SEND的I-PDU,設置I-PDU計數器為0
- 接收ComIPduDirection配置為RECEIVED的I-PDU
如果一個I-PDU是由Com_IpduGroupStart啟動的,參數Initialize設置為true,則AUTOSAR COM模塊還需要初始化這個I-PDU的以下屬性:
- I-PDU中定義的數據
- 包含信號組的shadow buffer
- 將每個信號的過濾機制的old_value賦給ComSignalInitValue
- 周期或混合傳輸模式下i - pdu的ComTxModeTimePeriod和ComTxModeTimeOffset
如果一個I-PDU是由Com_IpduGroupStart啟動的,則AUTOSAR COM模塊需要根據其當前的數據內容確定其傳輸方式。
在某些情況下,I-PDU在所有包含的信號被寫入之前由Com_ IpduGroupStart啟動。在這種情況下,AUTOSAR COM模塊應該使用ComSignalInitValue來表示缺失的信號數據。
當I-PDU啟動,并且上層已經通過一個發送api寫入了I-PDU中的一個或多個信號時,AUTOSAR COM模塊應該使用最近獲得的值來確定I-PDU的TMS
如果一個I-PDU是由Com_IpduGroupStart啟動的,并且I-PDU中包含了配置了截止時間監控的信號,則AUTOSAR COM模塊應該獨立于初始化參數的值啟動這些信號的截止時間監控。
注意,如果一個I-PDU是由Com_IpduGroupStart啟動的,并且參數initialize設置為false,內部緩沖區不會被更改,并且I-PDU包含最后一個設置或初始化值。特別的是,如果I-PDU是第一次啟動,并且initialize設置為false, COM會對Com_Init設置的初始值進行操作。
如果I-PDU不屬于任何I-PDU組,則在COM初始化時啟動。其啟動傳輸方式根據貢獻其TMS的信號的ComSignalInitValue來評估。在這種情況下,已經可以在配置時完成計算,因為在COM初始化之前不能寫入信號。
Stopping of I-PDU Groups
調用Com_IpduGroupStop將停止I-PDU組(如果它之前已經啟動)。
為了使I-PDU不傳輸,需要停止包含該I-PDU的所有I-PDU組。因此,要實現listen-only模式,需要停止所有包含傳輸I-PDU的I-PDU組。i - pdu的接收也可能被停止。
通過調用Com_SendSignal, Com_SendSignalGroup或com_invalidatsignal函數,AUTOSAR COM模塊將更新其內部緩沖區的值,即使是對于停止的i - pdu。
如果一個寫入停止的I-PDU的信號將觸發這個I-PDU的傳輸,如果它沒有停止,那么這個觸發器不存儲。在重新啟動相應的I-PDU組后,這樣一個舊的觸發器不會立即導致I-PDU的傳輸。
如果一個I-PDU被Com_IpduGroupStop停止,AUTOSAR COM模塊將取消該I-PDU的任何未完成傳輸請求。這包括取消關于ComRetryFailedTransmitRe任務的任何潛在重試。
如果一個I-PDU被Com_IpduGroupStop停止,AUTOSAR COM模塊將取消對所有未決確認的截止時間監控。
對于停止的I-PDU, AUTOSAR COM模塊應忽略任何發送確認。
AUTOSAR COM模塊不能禁止Com_Trigger- Transmit函數的調用。但是,在I-PDU停止的情況下,Com_TriggerTransmit函數返回E_NOT_OK。
如果I-PDU被Com_IpduGroupStop停止,則AUTOSAR COM模塊應禁用其接收處理。
如果Com_IpduGroupStop停止了較大的I-PDU, AUTOSAR COM模塊應停止接收過程,忽略部分接收到的I-PDU。
如果I-PDU被Com_IpduGroupStop停止,則AUTOSAR COM模塊將取消其截止時間監控。
如果I-PDU被Com_IpduGroupStop停止,對于停止的I-PDU中未確認的傳輸信號/信號組,AUTOSAR COM模塊應立即調用配置的ComErrorNotification
如果一個大的I-PDU在傳輸過程中被停止,則AUTOSAR COM模塊應立即停止傳輸過程。
下圖給出了停被止的I-PDU的行為概述:
下圖給出了已啟動i - pdu的行為概述:
?Signal Indication (Unpacking of I-PDUs)
為了同時支持中斷驅動和輪詢系統,可以在信號指示發生時進行配置。有兩種可配置的信號指示模式IMMEDIATE和DEFERRED可通過comipdussignalprocessing配置。
如果將I-PDU的ComIPduSignalProcessing配置為IMMEDIATE,則AUTOSAR COM模塊應針對Com_RxIndication或Com_TpRxIndication函數中包含的信號和信號組分別調用配置好的ComNotifications。
如果將I-PDU的ComIPduSignalProcessing配置為DEFERRED,則AUTOSAR COM模塊應先將I-PDU的數據分別從PduR的Com_RxIndication函數或相關TP接收函數中復制到COM中。然后,在下一次調用Com_MainFunctionRx時,AUTOSAR COM模塊將異步調用所包含信號和信號組的配置的ComNotifications。
如果在DEFERRED模式下,在延遲解包發生之前調用com_receivessignal,則返回之前未更新的值。
當拆包I-PDU時,AUTOSAR COM模塊應檢查接收到的數據長度(PduInfoPtr->SduLength),并通過ComNotification拆包并只通知完全接收到的信號。
如果接收到的I-PDU小于通過參數ComPduIdRef得到的長度,當且僅當其配置位置小于或等于部分接收到的I-PDU的接收大小時,接收大小為0的信號。
如果接收到小于預期的I-PDU,結果是接收到一個沒有其配置的更新位的信號,AUTOSAR COM模塊應將此信號視為其更新位被設置,并將該信號解釋為已更新。
如果接收到的I-PDU長度小于配置的/預期的I-PDU長度,則接收到的I-PDU長度小于配置的/預期的I-PDU長度需要防止信號部分更新。另一方面,所有com完全接收的信號應該被接收并通知到上層。
拆包I-PDU時,AUTOSAR COM模塊應檢查接收到的數據長度(PduInfoPtr->SduLength),在只收到部分信號組的情況下,不能拆包或通過ComNotification通知該信號組及包含的所有信號組。
上述要求防止接收到不一致的信號組,從而防止接收到不一致的復雜數據類型。
如果接收到的數據長度大于預期,則AUTOSAR COM模塊不會為未配置的信號復制或處理額外的接收數據。
Minimum Delay Timer (MDT)
當I-PDU啟動時,重新初始化MDT。因此,可以通過快速停止和啟動i - pdu來延遲MDT。
傳輸截止時間監控定時器的行為不受最小延遲時間監控所引起的任何傳輸延遲的影響。
如果省略ComMinimumDelayTime或配置為0,則不進行最小延遲時間監控。
如果ComEnableMDTForCyclicTransmission配置為false,則在以下情況下不應(重新)啟動最小延遲定時器:
- ComTxModeMode配置為PERIODIC的I-PDUs
- 使用ComTxModeMode MIXED的i - pdu循環部分
- 在ComTxModeNumberOfRepetitions > 0情況下i - pdu重復傳輸
如果最小延遲計時器當前沒有啟動,則最小延遲計時器不會過期。因此,優化的實現可能會在ComEnableMDTForCyclicTransmission配置為false的情況下完全忽略對周期性i - pdu的最小延遲時間的監控,因為最小延遲計時器永遠不會啟動。
如果配置一個I-PDU的ComMinimumDelayTime大于0,并且ComRetryFailedTransmitRequests設置為FALSE,則AUTOSAR COM模塊在通過PduR_ComTransmit將該I-PDU傳輸到PDU路由器時,將加載并啟動最小延遲時間計數器。
如果ComMinimumDelayTime I-PDU配置大于0并且ComRetryFailedTransmitRequests被設置為TRUE時,只有PDU Router的PduR_ComTransmit函數返回true后,AUTOSAR COM模塊通過PduR_Transmit傳輸I-PDUs時才加載和啟動最小延遲時間計數器。
如果配置一個I-PDU的ComMinimumDelayTime大于0,AUTOSAR COM模塊將在成功傳輸確認時(重新)加載該I-PDU的一個已經運行且未經過的最小延遲時間計數器,使用ComMinimumDelayTime
運行的最小延遲定時器在接收到成功的TX確認該I-PDU時被重新加載,除非在接收到確認時傳輸已經延遲超過ComMinimumDelayTime。在正常情況下,AUTOSAR COM模塊將不會進一步傳輸該I-PDU,除非加載和啟動的最小延遲已經過期。但是也存在一些例外: Com_TriggerTransmit不干擾最小延遲定時器。此外,minimum delay timer在傳輸截止時間監控定時器到期時復位。同時,啟動I-PDU組將重置所包含I-PDU的最小延遲時間定時器。
如果由于傳輸截止時間監控定時器超時而導致I-PDU的最小延遲定時器被重置,并且存在對該I-PDU的延遲請求,則AUTOSAR COM模塊應立即發送該I-PDU。
7.3.6 Deadline Monitoring
在對信號組進行期限監控的上下文中,它被當作一個信號來處理。截止時間監控參數ComFirstTimeout和ComTimeout可以在配置容器ComSignal或ComSignalGroup中定義。
對應的超時通知回調函數可以在配置容器ComSignal或ComSignalGroup中的參數ter ComTimeoutNotification中定義。
如果一個信號或signal組的配置參數ComTimeout被省略或配置為0,AUTOSAR COM模塊將不監測這個信號或信號組。它還應該忽略ComFirstTimeout。
Reception Deadline Monitoring
接收Deadline控制這個功能可以通過配置enable或者disable。
當且僅當I-PDU包含在已開啟接收截止時間監控的I-PDU組中時,才開啟I-PDU接收截止時間監控。否則禁用I-PDU接收截止時間監控功能。
如果為帶有更新位的信號配置了接收截止日期監控,則AUTOSAR COM模塊應為每個帶有更新位的信號/信號組執行單獨的接收截止日期監控。
AUTOSAR COM模塊應該對信號執行基于I-PDU的接收截止時間監控,而不需要更新位。
對于同一I-PDU內所有沒有更新位的信號和信號組,AUTOSAR COM模塊應使用相關信號和信號組的最小配置的非零超時參數(COM FirstTimeout, ComTimeout)執行接收截止時間監聽。
如果配置了接收截止時間監控的I-PDU內的所有信號都配置了更新位,則不需要對I-PDU基進行接收截止時間監控。
在Rx-timeout的情況下,comerxdatatimeoutaction參數決定AUTOSAR COM模塊是用初始值或替代值替換信號/信號組值,還是保持最后接收的值。
如果將comxdatatimeoutaction設置為REPLACE,當信號的接收截止時間的監聽計時器到期時,AUTOSAR COM模塊將用它的ComSignalInitValue替換信號的值。
如果ComSignalInitValue替換了最后接收到的值,最后接收到的值將被覆蓋并丟失。因此,AUTOSAR COM模塊會為這個信號返回ComSignalInitValue,直到接收到一個新的值。
如果將comxdatatimeoutaction設置為SUBSTITUTE,當信號的接收截止監控定時器到期時,AUTOSAR COM模塊將用它的ComTimeoutSubstitutionValue替換信號的值。
如果信號或者信號組的接收deadline控制定時器到期且配置參數ComRxDataTimeoutAction沒有配置(缺省狀態)或者配置為NONE,AUTOSAR COM模塊不會替換信號或者信號組的值。
如果配置參數ComRxDataTimeoutAction配置為REPLACE,當信號組的接收deadline控制定時器到期的時候,AUTOSAR COM模塊將使用ComSignalInitValues值替換組信號值。
如果配置參數ComRxDataTimeoutAction配置為SUBSTITUTE,當信號組的接收deadline控制定時器到期的時候,AUTOSAR COM模塊將使用ComTimeoutSubstitutionValue值替換組信號值。
當成功接收到一個配置了接收截止監控的(大)I-PDU時,AUTOSAR COM模塊將分別在調用Com_RxIndication或Com_TpRxIndication函數時重置此(大)I-PDU的re接收截止監控定時器。
如果一個信號或信號組的配置參數ComFirstTimeout被省略或配置為0,則AUTOSAR COM模塊不應該分別從相應的I-PDU開始監控該信號或信號組的接收,直到第一次接收。
基于I-PDU的接收截止時間監控機制不考慮信號的值。
En-/Disable Reception Deadline Monitoring
當I-PDU的接收截止時間監控被禁用并且定時器過期時,不會給RTE錯誤指示。禁用接收截止時間監控不會停止I-PDU的接收。
如果Com_EnableReceptionDM使能了I-PDU的接收截止時間監控,則AUTOSAR COM模塊需要將包含信號和信號組的接收截止時間監控定時器設置為配置的ComFirstTimeout值。
AUTOSAR COM模塊將靜默地忽略Com_EnableReceptionDM使能I-PDU接收截止時間監控的設置,如果這個I-PDU已經使能接收截止時間監控。
啟用接收截止日期監視意味著使用配置的ComTimeoutNotification將截止日期監視到期的超時通知通知給信號或信號組的RTE。
如果在包含tx -I-PDU的I-PDU組上調用Com_EnableReceptionDM或Com_DisableReceptionDM,則AUTOSAR COM模塊將靜默忽略此請求。
如果I-PDU的接收截止時間監控已經被禁用,AUTOSAR COM模塊將靜默地忽略Com_DisableReceptionDM將I-PDU的接收截止時間監控設置為禁用的情況。
Transmission Deadline Monitoring
AUTOSAR COM傳輸截止時間監控的總體思路是對底層和總線進行監控,而不是對COM模塊本身進行監控。因此,傳輸監控定時器通常在COM模塊向下層發送I-PDU時啟動。這與傳輸模式、傳輸屬性或更新位無關。在一般情況下,傳輸監控定時器沒有重新啟動或重置,如果它當前正在運行。
AUTOSAR COM模塊應獨立于信號/信號組所屬I-PDU的傳輸特性和傳輸方式,對所有信號和信號組進行傳輸截止時間監控(如配置)。
對于傳輸截止日期監控, AUTOSAR COM模塊不區分ComTransferProperty配置為?PENDING或TRIGGERED信號。
如果對一個I-PDU的相關信號/信號組配置了不同的ComTimeout參數,則AUTOSAR COM模塊應使用最小值作為超時參數,用于監控I-PDU的傳輸截止時間。
對于支持生成傳輸確認的總線,只應該在AUTOSAR COM模塊中配置傳輸截止日期監控。否則,傳輸截止日期監視總是會通知一個傳輸錯誤。
如果一個信號(組)被發送到較低的層(I-PDU內),AUTOSAR COM應該啟動一個配置的傳輸截止時間監控計時器,除非這個計時器已經在運行。
如果計時器已經在運行,新的發送請求不會重置或重新啟動正在運行的計時器,但當前未完成的發送請求將被進一步監視。除非另有規定,否則定時器將啟動,而不管導致潛在I-PDU發送請求的觸發器是什么。例如,此類觸發器是信號的循環發送請求、傳輸模式切換或通過Com_TriggerIPduSend顯式I-PDU發送請求。
如果該I-PDU的傳輸截止時間監控服務(重新)啟動后第一次啟動定時器,則使用配置的ComFirstTimeout值啟動該定時器,否則使用ComTimeout值啟動該定時器。
當AUTOSAR COM收到I-PDU的發送確認時,它將取消所有包含信號和信號組的運行傳輸截止時間監控計時器。
如果只對傳輸模式為NONE的I-PDU配置了傳輸截止時間監控,則AUTOSAR COM模塊需要在I-PDU所屬的I-PDU組啟動時啟動該I-PDU的傳輸截止時間監控定時器。
如果為傳輸模式為NONE的I-PDU和其他傳輸模式配置了傳輸截止時間監控,則當傳輸模式為NONE時,傳輸截止時間監控應被禁用。
如果為傳輸模式為NONE的I-PDU配置了傳輸截止時間監控,當收到成功的發送確認時,AUTOSAR COM模塊將重置該I-PDU的傳輸截止時間監控定時器。
對于一個信號組,只能對整個信號組配置傳輸截止時間監聽,不能對組信號配置傳輸截止時間監聽。
如果ComIPduCancellationSupport配置為TRUE的I-PDU的傳輸截止監控定時器到期,AUTOSAR COM模塊將為該I-PDU調用PduR_ComCancelTransmit。
PduR_ComCancelTransmit的調用是在Com的正常超時處理之外完成的,如果配置了,則會通知SW-C。AUTOSAR COM忽略PduR_ComCancelTransmit的返回值。
如果傳輸截止監控定時器超時,將會有一個超時通知,不管原因是什么。例如,如果傳輸被I-PDU callout過濾掉,甚至會發生通知。
Transmission Deadline Monitoring with N-Times Transmission Mode
如監控定時器中定義的,如果分別為相應的信號或信號組配置了傳輸截止時間監控,則必須在分別調用Com_SendSignal或Com_SendSignalGroup時啟動。
對于DIRECT和MIXED傳輸模式,應確保所有的ComTxModeNumberOfRepetitions請求都能在配置的時間段內發出。
如果監控計時器過期了,RTE就會通過configured通知機制收到關于該失敗的通知。
對于具有ComTxModeMode DIRECT和ComTxModeNumberOfRepetitions > 0的I-PDU,在ComTxModeNumberOfRepetitions加上一個成功接收的發送確認之后,AUTOSAR COM模塊將取消任務截止時間監控計時器。
如果在ComTxModeNumberOfRepetitions加上一個confirmations后定時器被取消,則傳輸成功,然后發送傳輸確認到RTE。
對于帶有ComTxModeMode DIRECT和ComTxModeNumberOfRepetitions > 0的I-PDU, AUTOSAR COM模塊將重置一個已經運行的傳輸截止日期監控定時器,以防該I-PDU的另一個發送請求被發起。
3.4 Signal Groups - Complex Data Types
為了支持復雜數據類型的AUTOSAR概念,AUTOSAR COM提供了信號組的解決方案。AUTOSAR COM模塊一致地發送和接收信號組,為復雜數據類型提供必要的一致性。
信號組支持靜態配置。對于每個信號組,可以配置一個符號名。
AUTOSAR COM模塊通過shadow?buffer緩沖區機制實現信號組的一致性,即RTE訪問shadow?buffer緩沖區中的組信號。如果shadow緩沖區需要與I-PDU同步,RTE可以使用Com_SendSignalGroup或Com_ReceiveSignalGroup顯式觸發。同步是以原子方式執行的。
一個信號組一致性的替代方法是啟用信號組數組API?Com_SendSignalGroupArray和com_receivesignalgrouparray
3.4.1 Initialization
通過調用Com_Init, AUTOSAR COM模塊將初始化發送端信號組的shadow緩沖區,一個結構良好的SWC在調用Com_ReceiveSignalGroup之前嘗試讀取組信號。
3.4.2 Transmission
如果Com_SendSignal或com_invalidatsignal被調用的信號屬于一個信號組,那么AUTOSAR COM將只更新這個信號組的shadow緩沖區。除非I-PDU內容發生了變化,否則不需要像TMS評估那樣進行進一步的I-PDU處理。
如果為信號組調用Com_SendSignalGroup, AUTOSAR COM模塊將自動復制shadow緩沖區內容到I-PDU buffer。
Example with two group signals signal_a and signal_b, which belong to group_x:
/* copy a to shadow buffer */
Com_SendSignal (signal_a, &a);
/* copy b to shadow buffer */
Com_SendSignal (signal_b, &b);
/* copy shadow buffer to I-PDU */
Com_SendSignalGroup (group_x)
3.4.3 Reception
當信號組數據被Com_ReceiveSignalGroup復制到shadow buffer后,可以通過調用com_receivessignal函數從shadow緩沖區接收組信號。
如果為一個信號組調用Com_ReceiveSignalGroup, AUTOSAR COM模塊將自動將數據從I-PDU緩沖區復制到shadow緩沖區。
Example with two group signals signal_a and signal_b, which belong to group_x:
/* copy I-PDU to shadow buffer */Com_ReceiveSignalGroup (group_x);/* copy a from shadow buffer */Com_ReceiveSignal (signal_a, &a);/* copy b from shadow buffer */Com_ReceiveSignal (signal_b, &b)
3.4.4 Notifications
下表顯示,所有的通知功能僅可為信號組配置,而不是為單個組的信號配置。
3.4.5 Attributes of a Signal Group
3.4.6 UINT8-array based access to signal groups
一個信號組一致性的替代方法是通過COM配置參數ComSignalGroupArrayAccess 啟用信號組數組API?Com_SendSignalGroupArray和Com_ReceiveSignalGroupArray。復合數據的序列化在COM模塊外部完成,但結果是與COM將用于在I-PDU中放置組信號相同的布局。在這種方法中,不使用shadow緩沖區。串行化的數據作為信號組的uint8數組表示直接提供給COM模塊。
只有在滿足以下前提條件的情況下才能使用基于uint8陣列的信號組接入:
(1)僅對復合數據使用固定大小的數據類型
(2)信號組,它們被映射到與I-PDU對齊的字節
(3)信號組,不被其他信號中斷(但可能包含間隙)
如果一個信號組定義了ComSignalGroupArrayAccess,則不應該為該信號組分配shadow緩沖區。
如果一個信號組定義了ComSignalGroupArrayAccess,則該信號組不支持調用以下API:
- Com_SendSignal和com_receivessignal用于該信號組中的任何一組信號
- Com_SendSignalGroup和Com_ReceiveSignalGroup對應的信號組
上面的要求定義了具有數組訪問的信號組不支持某些api。也就是說,不能為具有數組訪問的信號組調用這些api。如果是非法調用,則該行為是未定義的。
Basic functionality
如果使用AUTOSAR Transformer方法,則序列化和進一步的數據處理已經在數據發送鏈路中完成。由于數據發送過程已經處理通信數據的uint8-array表示,基于信號組的uint8-array訪問允許使用已經序列化的數據,并將其放入I-PDU,而不需要COM再次序列化數據。
AUTOSAR系統模板定義了在基于uint8陣列的方法中處理哪個信號組。如果系統模板開啟了基于uint8-array的方式,則Ecu配置參數ComSignalGroupArrayAccess 設置為true。
com通信數據的uint8-array表示的起始位置應該是該信號組中ComBitPosition最小的組信號的字節偏移量。
通信數據的uint8-array表示長度應為該ComSignalGroup中的所有ComGroupSignals在ComIPdu中所占用的字節數。
Initialization
通過調用Com_Init, AUTOSAR COM模塊將基于ComSignalInitValue的所有包含ComGroupSignals的ComSignalGroupArrayAccess配置為true的信號組的相應I-PDU緩沖區初始化。
Transmission
當Com_SendSignalGroupArray被調用時,一個指向信號組的uint8數組表示的數據指針被提供。AUTOSAR COM模塊根據啟動位置將數據復制到I-PDU。
AUTOSAR COM模塊處理Com_SendSignalGroupArray的調用時,一下情況下與Com_SendSignalGroup處理方式相同:
- Signal Groups (Transfer Properties and I-PDU Transmission Mode)
- Selection of the Transmission Mode for one specific I-PDU
- Signal Flow and Transmission Mode Selection
由于信號組是由uint8-array表示提供的,所以在分析信號組時,傳輸模式選擇需要考慮這個數據表示。
TMS對Com_SendSignalGroupArray的支持中排除了兩個過濾器:NEW_IS_WITHIN, NEW_IS_OUTSIDE
Com_SendSignalGroupArray的調用應支持以下傳輸模式選擇(TMS)濾波器:
? ALWAYS,
? ?NEVER
? MASKED_NEW_EQUALS_X
? MASKED_NEW_DIFFERS_X
? MASKED_NEW_DIFFERS_MASKED_OLD
? ONE_EVERY_N
Reception
當Com_ReceiveSignalGroupArray被調用時,一個指向信號組的uint8數組表示的數據指針被提供。AUTOSAR COM模塊根據起始位置將數據復制到I-PDU的數據指針位置。
3.5 Large Data Types
大信號是指信號太大,以致于無法容納底層通信協議的單個L-PDU。例如,CAN上的一個大信號將超過8個字節,而對于CAN FD則會超過64個字節。對于FlexRay,情況更加復雜,因為一幀可以包含幾個i - pdu。因此,一個信號對于FlexRay來說可能是一個很大的信號,即使它沒有超過FlexRay幀的大小。
AUTOSAR中的大信號需要配置一個大的I-PDU,該I-PDU將通過底層總線的傳輸層協議傳輸。一個大的I-PDU并不一定要包含一個或多個大信號。使用這個概念,I-PDU長度和信號大小將根據總線特定的傳輸協議受到限制。UINT8_N是唯一支持大于8字節的靜態大小信號的信號類型。
由于AUTOSAR COM模塊不知道底層總線屬性,如果I-PDU可以在單個L-PDU中傳輸,例如一個can幀,或者需要通過TP傳輸,則必須配置它。
AUTOSAR COM模塊無法阻止或檢測是否太大的i -PDU被發送到特定的總線傳輸協議,因為AUTOSAR COM模塊使用總線獨立的PDU路由器接口。然而,AUTOSAR COM模塊允許使用底層TPs的N-SDU的最大長度,因此AUTOSAR COM模塊不會引入任何額外的長度限制。
3.5.1 Transmission of Large Signals/ I-PDUs
PDU Router模塊提供使用傳輸層的API給上層模塊,COM模塊使用這類API發送I-PDU:
(1)PduR_ComTransmit:用于發起發送請求
(2)一個或多個Com_CopyTxData回調:用于復制數據
(2)回調Com_TpTxConfirmation:用于確認傳輸
I-PDU通過調用PduR_ComTransmit 函數開始大I-PDU的傳輸后,AUTOSAR COM模塊不得修改其內部的數據傳輸緩沖區的I-PDU除非AUTOSAR COM模塊通知成功傳輸或者一個錯誤表明傳輸中止。
AUTOSAR COM模塊內部的i - pdu是靜態配置的。因此,即使對于非常大的I-PDU,也會分配I-PDU的完整內存。采用這種方法是為了降低大型數據類型處理的復雜性。
如果所使用的傳輸協議還用于診斷或其他服務,則必須支持多個用戶。這至少被CAN TP和FlexRay TP所支持。
如果當前傳輸較大的I-PDU,而再次觸發相同的I-PDU進行傳輸,則AUTOSAR COM將跳過新來的傳輸請求,并報告運行時錯誤COM_E_SKIPPED_TRANSMISSION。例如,如果一個大的I-PDU被周期性地發送出去,并且傳輸在下一個周期被延遲,就可能發生這種情況。
3.5.2 Reception of Large Signals/ I-PDUs
PDU Router模塊提供使用傳輸層的API給上層模塊,COM模塊使用這類API接收I-PDU:
(1)調用Com_StartOfReception:用于發起RX請求
(2)一個或多個Com_CopyRxData的回調:將接收數據復制到AUTOSAR COM模塊的內部接收緩沖區
(3)調用Com_TpRxIndication:指示接收過程的正確或不正確的結束
當調用Com_TpRxIndication時,參數結果的值E_NOT_OK, AUTOSAR COM模塊將接收到的大I-PDU的所有信號都當作無效信號處理。也就是說,AUTOSAR COM模塊將對所有包含的信號和信號組執行所有配置的ComDataInvalidActions。
3.6 Dynamic Length Signals
動態長度信號是指長度在運行時可以變化的信號。動態長度信號的最大長度需要在配置時指定。動態長度信號必須在動態長度I-PDU中傳輸。
對于動態長度信號,AUTOSAR COM模塊應該只支持ComSignalType UINT8_DYN。將該類型限制為UINT8-array類型也限制了將動態長度信號放置到字節邊界。
所有其他信號,可能包括大信號,必須在動態長度信號前打包。因此,不需要在I-PDU內對動態長度信號的長度進行編碼。在接收端,動態長度信號的長度可以根據接收到的I-PDU的長度來計算。
允許為動態長度信號配置一個更新位。在這種情況下,更新位必須位于動態長度信號的前面。
在AUTOSAR COM模塊中沒有任何限制,可以防止信號組與大長度或動態長度的信號組合使用。
動態長度信號不受限于通過傳輸協議發送。但是,包含動態長度信號的I-PDU的最大長度必須遵守總線特定的限制。
對于需要通過CAN FD發送動態長度信號的i -PDU,建議使用IpduM的多PDU映射特性。這避免了由于CAN FD幀的離散數據長度而導致對接收長度的解釋錯誤。
3.6.1 Transmission of Dynamic Length Signals/ I-PDUs
對于發送動態長度信號,RTE需要在發送時指定實際長度。對應的API是Com_SendDynSignal。
在調用Com_SendDynSignal時,AUTOSAR COM模塊將對應的動態長度I-PDU的長度設置為包含動態長度信號的最小長度。動態信號的長度應該等于API Com_SendDynSignal中傳入的輸入參數“length”的值。
AUTOSAR COM模塊能夠通過普通或大i - pdu發送動態長度的i - pdu。在任何情況下,都需要將動態I-PDU的長度傳遞給下層。
當AUTOSAR COM模塊調用PduR_ComTransmit來獲取動態長度I-PDU時,PduInfoType的SduLength值需要根據所包含的動態長度信號的最后一次更新(如果還沒有發送,則為init值)來設置。
3.6.2 Reception of Dynamic Length Signals/ I-PDUs
為了接收動態長度信號,RTE需要被告知實際大小。
在接收到動態長度I-PDU時,AUTOSAR COM模塊應計算所包含的動態長度信號的長度,方法如下:
dynamic signal length in bytes?= received I-PDU length in bytes - ComBitPosition of dynamic length signal / 8
Com_ReceiveDynSignal函數返回接收到的動態長度信號的長度。
由于動態長度信號的長度來源于I-PDU的接收長度,因此AUTOSAR COM模塊不支持動態長度I-PDU和I-PDU與元數據的組合。
3.7 Interface between AUTOSAR COM Module and the PDU Router
AUTOSAR架構下,AUTOSAR COM模塊的唯一下層模塊就是PDU Router模塊。
AUTOSAR COM模塊在兩種不同的模式下使用PDU?Router,取決于I-PDU的類型,PDU Router將使用總線特定的傳輸層協議或不使用。如果I-PDU應該通過TP發送,則根據配置參數ComIPduType進行配置。
如果AUTOSAR COM模塊發送一個ComIPduType配置為NORMAL的I-PDU,則AUTOSAR COM模塊應該期望被PDU?Router調用,使用不經過傳輸層的COM接口。
如果AUTOSAR COM模塊發送一個ComIPduType配置為TP的I-PDU,則AUTOSAR COM模塊應該期望被PDU?Router調用,使用經過傳輸層的COM接口。
3.8 Update-Bits
為了使信號/信號組的接收方能夠識別發送方在發送前是否更新了該信號/信號組中的數據,AUTOSAR COM模塊支持更新位。
更新位指示發送端RTE是否在包含該信號的I-PDU發送給PDU路由器之前更新了一個信號。
如果ComTxModeNumberOfRepetitions大于或等于1且傳輸模式為DIRECT,則不允許更新位。
通過發送端和接收端的配置,可以為每個信號和/或為每個信號組分別添加至多一個更新位。
更新位的位置可以通過配置參數ComUpdateBitPosition配置。ComUpdateBitPosition包含在配置容器ComSignal中。因此,保證了信號/信號組和相應的更新位始終是同一個I-PDU的一部分。
AUTOSAR COM模塊應該只在內部處理更新位,而不是作為信號或信號組的一部分。更新位對AUTOSAR Software Components不可見,且SWC不能訪問更新位。
3.8.1 Sender Side
如果RTE通過調用Com_SendSignal來更新一個信號的值,AUTOSAR COM模塊應該設置這個信號的更新位。
如果RTE通過調用Com_SendSignalGroup來更新一個信號組,AUTOSAR COM模塊應該設置這個信號組的更新位。
如果I-PDU的ComTxIPduClearUpdateBit參數配置為Transmit,則AUTOSAR COM模塊在通過PduR_ComTransmit發出I-PDU, PduR_ComTransmit返回E_OK后,將清除所有包含信號和信號組的更新位。
如果I-PDU的配置參數ComTxIPduClearUpdateBit配置為confirmation,?PduR_ComTransmit被調用后返回E_OK且被確認,AUTOSAR COM模塊將會清除信號組及其包含信號的所有update-bit。
如果將I-PDU的ComTxIPduClearUpdateBit參數配置為TriggerTransmit,則當Com_TriggerTransmit請求該I-PDU的內容成功后,AUTOSAR COM模塊將清除所有包含信號和信號組的更新位。
3.8.2 Receiver Side
如果接收到帶有更新位的信號或信號組,如果設置了信號的更新位,則AUTOSAR COM模塊只對該信號進行過濾、通知、信號網關、字節交換等處理。
如果接收到帶有附加更新位的信號或信號組,且未設置更新位,則AUTOSAR COM模塊應丟棄該信號。
如果信號沒有被更新,信號將不會通過信號門的方式路由。它只會被丟棄。
如果RTE讀取一個具有相關的已清除的更新位的信號,則返回初始化值或最后接收到的值。
如果信號附加了更新位,并且更新位被置位,則AUTOSAR COM模塊應將信號/信號組解釋為已更新。
3.9 Data Sequence Control
AUTOSAR COM模塊以I-PDU Counters的形式提供數據序列控制機制。如果i - pdu是重復的i - pdu,或者i - pdu丟失后收到的i - pdu,將被檢測丟棄。I-PDU Counters是可配置的。
3.9.1 Sender Side
對于ComIPduDirection配置為SEND且配置了comipduounter的所有I-PDU,在Com_Init初始化或Com_IpduGroupStart重新初始化I-PDU后,AUTOSAR COM模塊將I-PDU計數器設置為0。
AUTOSAR COM模塊應在I-PDU被PduR_ComTransmit發送之前,直接將I-PDU的I-PDU計數器相對于環繞計數器增加1。如果PduR_ComTransmit的返回值不等于E_OK,則I-PDU計數器的更新將被撤銷(通過將I-PDU計數器減1 )。
如果Com_TriggerTransmit獲取一個包含I-PDU計數器的I-PDU,則不發生Counter計數。因此,如果使用Com_TriggerTransmit在combination上使用I-PDU計數器,必須小心。如果在對應的PduR_ComTransmit之后多次調用Com_TriggerTransmit,所有i - pdu將包含相同的計數器值。因此,延遲的TriggerTransmit傳輸可以工作,但是純底層驅動的TriggerTransmit用例不能與I-PDU計數器結合使用。
3.9.2 Receiver Side
對于所有ComIPduDirection配置為RECEIVE且配置了ComIPduCounter的I-PDU,在Com_Init初始化或Com_IpduGroupStart重新初始化I-PDU后,AUTOSAR COM模塊將接受任何傳入的I-PDU,無論I-PDU計數器的值如何。
在接收到包含I-PDU計數器的I-PDU時,AUTOSAR COM模塊應將下一個期望值設置為接收到的計數器環繞值之后的值。
例如,如果I-PDU計數器為4位,則可能的值為0 ~ 15。如果接收到一個4位計數器的I-PDU,并且接收到的計數器值是15,那么下一個期望值是0。無論接收到的值是否與實際的期望值匹配,都需要更新新的期望值。
在接收到包含I-PDU計數器的I-PDU時,如果沒有為該I-PDU配置I-PDU復制,則AUTOSAR COM模塊在設置下一個期望值后,將丟棄該I-PDU,并且:
received I-PDU counter < expected I-PDU counter
Or
received I-PDU counter > expected I-PDU counter
如果檢測到預期的和接收到的I-PDU計數器不匹配,AUTOSAR COM模塊將通過配置的ComIPduCounterErrorNotification通知函數來通知此不匹配。
計數器錯誤通知與配置的ComIPduCounterThreshold無關。
示例:在下表的示例中,I-PDU計數器的寬度為4位(值為0 ~ 15),ComIPduCounterThreshold配置為1:
3.10?Communication Protection
與安全相關的i - pdu可能需要在多個l - pdu中復制,以防止泄漏損壞和數據丟失。在AUTOSAR中,i -PDU的復制是通過PDU路由器實現的。在AUTOSAR COM中對復制i - pdu進行比較和表決。由于復制的i - pdu沒有用于比較的校驗和或簽名,因此需要在接收端存儲和比較完整的i - pdu。AUTOSAR COM允許通過ComIPduReplicaRef配置兩個額外的復制i - pdu。
通過ComIPduReplicationQuorum可以從1到3配置一個合格接收所需的成功接收i - pdu的數量。PDU Router模塊不支持i -PDU的1:n路由,因為i -PDU是通過TP模塊發送或接收的,需要發送多個幀。因此,AUTOSAR COM堆棧目前不支持大型或動態i - pdu或數據類型的復制。
3.10.1 Sender Side
由于復制本身是由PduR完成的,所以在發送端沒有針對AUTOSAR COM的特殊處理。但必須確保復制的I-PDU配置了I-PDU計數器。這是必需的,因為接收端的判斷依賴于I-PDU計數器。
3.10.2 Receiver Side
在接收端,AUTOSAR COM模塊對多個復制i - pdu進行Voting。AUTOSAR COM模塊只將確認成功的i - pdu信號傳遞給RTE。如上所述,復制的I-PDU需要配置一個I-PDU計數器。但是,ComIPduCounterThreshold必須配置為0。沒有混合這兩個features的用例,一旦混合則Voting將更加復雜。
只有當AUTOSAR COM模塊收到至少ComIPduReplicationQuorum相同復制I-PDU的副本時,它才應該從這個I-PDU中提供信號和/或信號組給RTE。
在AUTOSAR COM module的配置中,復制的I-PDU被配置為一個正常的I-PDU。發送端fan-out在PduR configu配給中配置。在接收端,可以在AUTOSAR COM模塊的配置中配置多達兩個PDU-R pdu副本和成功投票所需的相同接收i - pdu數量。
當AUTOSAR COM模塊收到至少ComIPduReplicationQuorum相同復制I-PDU的副本時,它應僅就該I-PDU的信號和/或信號組通知RTE一次。
由于I-PDU不包含特殊的校驗和,所以比較是通過逐個字節比較完整的I-PDU來執行的。
對于I-PDU復制,ComIPduCounterThreshold需要配置為0。因此,ComIPduReplicaRef + 1緩沖區足以存儲成功投票的i - pdu。
7.10.3 Constraints
PduR允許在不同的總線上fan out輸出復制的i - pdu。在接收端,這些I-PDU被指示給具有相同I-PDU id的COM。但是,對于相同的I-PDU id, Com_RxIndication可能不會被稱為可重入。防止這種情況發生的一個簡單方法是確保所有i - pdu都被相同的Interface module接收,這將導致對所有副本使用相同的總線。對于當前的AUTOSAR堆棧,這是推薦的方法。但是,系統集成商也可以通過其他方式同步接收路徑。
此外,由于沒有機制來阻止上層對I-PDU的更新,這種通信保護方法在解耦傳輸(即通過Com_TriggerTransmit請求I-PDU)的組合中不起作用。
3.11?Signal Gateway
該信號網關是AUTOSAR COM模塊的集成部分。除了循環任務調用外,任何外部模塊都不能訪問信號網關。
AUTOSAR COM模塊的信號網關與(組)信號和信號組一起工作。
AUTOSAR COM模塊的信號網關僅支持ComGwMapping配置容器的靜態路由。只能獨立于路由信號和信號組的內容來配置路由。
信號或信號組的目的地可以配置為每個ComGwDestinationDescription容器或通過ComGwSignal引用。傳輸模式將根據I-PDU中其他相關信號的tmc來選擇。如果沒有信號有助于TMS計算,將使用傳輸模式ComTxModeTrue。
AUTOSAR COM模塊的信號網關應根據配置將要路由的信號/信號組的值復制到傳輸的信號/信號組。
ComGwMapping配置允許將一個信號/信號組從一個源信號/信號組路由到零(沒有信號網關功能)或多個目的地(1:n)。
AUTOSAR COM模塊的信號網關不支持處理包含在大型I-PDU中的信號或信號組。
信號網關應在接收端支持下列I-PDU信號處理:
(1)復位接收截止時間監控定時器
(2)I-PDU回調處理
(3)檢查更新位
(4)大小端處理和符號擴展
信號網關應在發送端支持下列I-PDU信號處理:
(1)設置更新位
(2)大小端處理和符號擴展
(3)I-PDU傳輸模式選擇
(4)I-PDU回調
3.11.1 Dealing with Signals
AUTOSAR COM模塊需要從接收到的i - pdu轉發需要路由的信號來發送i - pdu。通過配置配置容器ComGwMappin來實現。
當需要路由的信號被轉發到發送I-PDU后,停止接收I-PDU并不會阻止發送I-PDU的傳輸,除非發送I-PDU也被停止。
如果接收到的待路由信號的字節序與相關目的信號的字節序不一致,則AUTOSAR COM模塊應將其字節序轉換為目的信號的字節序。
3.11.2 Dealing with Signal Groups
AUTOSAR COM模塊需要從接收到的i - pdu轉發待路由信號組來發送i - pdu。參見配置容器ComGwMapping.
當要路由的信號組已經轉發到發送I-PDU后,停止接收I-PDU并不會阻止發送I-PDU的傳輸,除非發送I-PDU也被停止。
AUTOSAR COM模塊應以一致的方式路由信號組。因此,在進行路由操作時,AUTOSAR COM模塊將一個信號組的數據作為一個一致的數據集進行傳輸。
AUTOSAR COM模塊應支持將一個源信號組中的組信號子集路由為一個縮減后的目標信號組。
AUTOSAR COM模塊應支持將源信號組中的單個組信號路由到單個目標信號(不屬于信號組)。
如果接收到要路由的組信號的字節序與相關的目的(組)信號的字節序不一致,則AUTOSAR COM模塊應將其字節序轉換為目的(組)信號的字節序。
3.11.3 Routing of Out-Timed Signals and Signal Groups
AUTOSAR COM模塊的信號網關應該路由信號和信號組,即使任何配置的接收截止時間監控超時。
如果沒有及時收到信號或信號組,AUTOSAR COM模塊的信號網關將路由這些信號或信號組無論如何。
3.11.4 Handling of Update-Bits
如果兩者都有,接收信號/信號組和目的地信號/信號組配置了一個更新位(ComUpdateBitPosition),并設置了接收信號/信號組的更新位,AUTOSAR COM模塊對設置的更新位的信號/信號組進行路由,并在發送后清除目標信號/信號組的更新位。
如果接收到的信號/信號組和目的信號/信號組配置了一個更新位(ComUpdateBitPosition),且未設置接收到的信號/信號組的更新位,則AUTOSAR COM模塊不應路由該信號/信號組。
如果接收到的信號/信號組配置了一個更新位(ComUpdateBitPosition),但目的地信號沒有更新位configure,并且設置了更新位,AUTOSAR COM模塊將在沒有更新位的情況下路由該信號/信號組。
如果接收到的信號/信號組配置了一個更新位(ComUpdateBitPosition),但是目的地信號沒有更新位con被計算出來,并且更新位沒有設置,AUTOSAR COM模塊將不路由這個信號/信號組。
如果接收到的信號/信號組沒有update-bit (ComUpdateBitPosition)配置和目標信號/信號組update-bit配置,AUTOSAR COM模塊應當設置目的地的update-bit信號當一個新的信號/信號組收到后和清晰的目標信號的發送/信號組。
3.11.5 Decoupling Signal Gateway
為了保護用于I-PDU接收的中斷程序不受不可計算的時間占用的影響,有必要將AUTOSAR COM模塊的信號網關與中斷程序解耦。
AUTOSAR COM模塊在調用com_mainfunctionroutessignals函數時,執行其信號網關的所有函數。在此函數調用過程中,AUTOSAR COM模塊的信號網關檢查接收和待路由的信號和信號組,并將其從相關的接收i - pdu轉發到相關的發送i - pdu。
在com_mainfunctionroutessignals中,AUTOSAR COM模塊將評估傳輸屬性和傳輸模式,并按照以下順序執行其路由操作:
1. copy all gated signals from the source to the target I-PDUs
2. evaluate the TMC of all gated signals
3. evaluate the TMS for the target I-PDUs
在這種情況下,目標I-PDU包含新接收的具有ComTransferProperty TRIGGERED的門控信號,發送可以在Com_MainFunctionTx或com_mainfunctionroutessignals中執行。
在一次調用com_mainfunctionroutessignals時,AUTOSAR COM模塊最多發送一次I-PDU。
4.關鍵API函數
Com_Init: 該服務初始化AUTOSAR COM模塊層的內部和外部接口和變量,以進行進一步處理。調用Com_init后,ECU內部的通信還是disable的。
Com_DeInit:?停止ECU內部的通信,所有started的I-PDU組都置為stopped。
Com_IpduGroupStart:?啟動一個I-PDU組,根據配置執行是否初始化信號組中的信號。
Com_IpduGroupStop:?停止一個I-PDU組。
Com_EnableReceptionDM: Enable I-PDU組中的一個I-PDU截至時間監控定時器。
Com_DisableReceptionDM: Disable ?I-PDU組中的一個I-PDU截至時間監控定時器。
Com_SendSignal: 將RTE的信號值更新到COM。
Com_ReceiveSignal:?將COM的信號值更新高RTE。
Com_SendSignalGroup:?將shadow buffer的值更新到對應的I-PDU。
Com_ReceiveSignalGroup:?將I-PDU的值更新高對應的Shadow buffer。
Com_TriggerIPDUSend: 通過調用Com_TriggerIPDUSend,對應I-PDU被傳輸一次,用于事件幀的處理。
Com_MainFunctionRx:?周期調度函數,RX回調函數直接處理不了的信息都由它來處理。
Com_MainFunctionTx:?周期調度函數,TX 回調函數直接處理不了的信息都由它來處理。
Com_IpduGroupControl: 控制IPDU Group中所有報文的的開啟和停止發送。由BswM來調用。
5.COM模塊與上下層模塊的交互
5.1COM模塊與PDUR模塊之間的接口
以CAN信號的收發為例,COM模塊調用PduR_ComTransmit接口函數通過PduR發送IPDU數據,PduR模塊完成數據的發送后調用COM模塊的Com_TxConfirmation回調函數通知到COM模塊完成數據的發送;底層收發CAN數據后一路回調上傳模塊的接收回調函數,在PduR模塊調用COM模塊的Com_RxIndication回調函數通知COM模塊接收到了CAN IPDU數據且將數據傳遞到COM層。
5.2 COM模塊和RTE模塊之間的數據確認處理
數據接收:
PduR模塊接收到數據后調用COM模塊的Com_RxIndication函數通知到COM模塊,且將IDPU數據也傳遞到COM模塊。COM模塊接收到數據通知后根據配置有兩種方式將數據IPDU中包含的Signals數據更新到RTE:
Immediate: Com接收到IPDU通知后立即調用Rtex_COMCbk_signalxxx將IPDU中包含的Signal(x, y)更新到RTE(緩存區)。
Deferred: Com模塊接收到IPDU后內部設置標志(Flag)延遲處理,在Com模塊的周期調度函數Com_MainFunctionRx中輪詢標志(Flag),如果設置了標志則調用Rtex_COMCbk_signalxxx將IPDU中包含的Signal(x, y)更新到RTE(緩存區)。
數據發送:和數據接收過程類似,主要注意COM模塊有Immediate和Deferred兩種數據發送確認的處理機制。
6.COM模塊的配置
6.1 COM
COM模塊的配置,包括ComConfig,ComGeneral兩個頂層 container.
ComConfig: 包含各個子container。
ComGeneral: ?包含COM模塊的通過配置參數。
6.2 ComGeneral
一些重要的配置參數:
ComSupportedIPduGroups: 支持的最大的IPDU組數量,有多少路LIN,CAN,ETH等他們的總和就是這個參數的配置值。
ComEnableSignalGroupArrayApi: 配置是否使用信號組數字訪問API,一般項目中不使用這個API。
ComRetryFailedTransmitRequests: 配置是否發送IPDU失敗后重新請求發送。
6.3 ComConfig
ComConfig配置容器中包含,ComIPduGroups,ComIPdus,ComSignalGroups,ComSignals四個配置子容器容器。
6.3.1 ComIPduGroups
COM模塊有多少路的通信通道(Channel,包括ETH,CAN,LIN,Flexray等)ComIPduGroup里面就有多少個配置數,配置完后某個通道的索引值就是該通道的標識,具體每一個Channel里面無配置項。
6.3.2 ComIPdus
配置所有通信通道(LIN,CAN,ETH,Flexray)的所有IPDU的配置項。比較重要的配置有:
ComIPduDirection: RECEIVE 還是 SEND,是發送的IPDU還是接收的IPDU。
ComIPduSignalProcessing: IMMEDIATE還是DEFERRED,接收或者發送該IPDU時立即處理還是延遲處理(周期調度函數中統一處理)。
ComIPduType: TP還是NORMAL,該PDU是否要經過傳輸層處理(一般診斷報文會經過TP)。
ComIPduGroupRef: 該IPDU隸屬的IPduGroup。
ComIPduSignalRef: 該IPDU包含的所有Signals。
6.3.3 ComSignal
配置所有通信通道(LIN,CAN,ETH,Flexray)的所有IPDU的的所有Signal的配置項。比較重要的配置有:
ComBitPosition: 該信號在IPDU中其實Bit位置。
ComBitSize: 該信號所占的Bit長度。
ComSignalEndianness: 該信號的字節序。
ComSignalType: 信號類型,BOOLEAN, UINT8等。
6.3.4 ComSignalGroup
此參數定義在接收到無效信號后執行的操作。當所包含的信號中有一個是無效信號時,與信號組相關的動作。
如果使用Replace,將使用ComSignalInitValue進行替換。
具體的配置項和ComSignal中的配置項差不多。