协议数据单元I-PDU Multiplexer深入理解
PDU的全稱是Protocol Data Unit,也就是協議數據單元的意思,而在Autosar的規范中描述的是自動共享服務器基本軟件模塊I-PDU多路復用器I-PDU M的功能、api和配置。
PDU多路復用意味著使用PDU(協議數據單元)的相同PCI(協議控制信息),其SDU(服務數據單元)的多個唯一布局。選擇器字段是多路PDU的SDU的一部分。它用于區分多路pdu之間的內容。
pdu的多路復用是目前已知的來自CAN的方法,但并不局限于此通信系統。(而對于CAN通信不懂的同學,可以在網上查一查看看,關于CAN的資料再網上還是蠻多的)。
在發送方端,I-PDU多路復用器模塊負責將適當的I-PDU從COM組合到新的、多路復用的I-PDU,并將它們發送回PDU Router。
在接收端,它負責解釋多路I-PDU的內容,并考慮到選擇器字段的值,為COM提供適當的分離I-PDU。?
對于多路i-pdu的傳輸,則是不能考慮最小的觀測數值的。而對于具有靜態布局的容器PDU的傳輸,如果兩個或多個包含的PDU每個都具有MDT配置,則不能保證最小的觀測數值。
而對于各個模塊的依賴性,因為博主是做跟Autosar相關的技術研究,所以以下只列出跟Autosar相關的Dependencies to modules,如果如果其他人做的不屬于這個方面的技術,就僅當了解好了,下面我們看一下這個圖,是來自Autosar的SWS里的I-PDU Multiplexer文檔。
?IPDU-M被AUTOSAR中的PDU Router旁邊;而IPDU-M則不能直接訪問AUTOSAR OS,有的同學可能不太理解AUTOSAR OS到底是什么,在這里可以把它暫時理解成一個系統,后面我會進行一個詳細的講解。
而RTE又包含著BSW-Scheduler,這里有可能大家又不理解了,我直接上個圖吧,看著圖可能會好理解一些,這是AUTOSAR的基本架構,后面我有可能會說,看看時間的安排了。
IpduM模塊依賴于BSW調度器,分別在IpduMRx時間庫或MTx時間庫中配置的時間點調用IpduM_MainFunctionRx和IpduM_MainFunctionTx。
下面總結了IpduM所需要的來自PDU Router的功能:指示輸入的多路復用或包含的i-pdu;輸出i-pdu的發送接口;在外部去證實來自I-PDU的發送的報文。
以下列表總結了IpduM模塊為PDU Router提供的功能:可進行多路復用的輸入I-pdu和待拆卸的輸入容器-pdu的指示接口;發送接口為多路復用的i-pdu和i-pdu相結合,它們將被組裝成一個容器PDU;對已傳輸的IPDU的接口進行確認。
而PDU Router模塊的配置必須來自IPDU,它屬于多路復用的I-pdu,通常表示為多路復用的I-PDU的靜態或動態部分,都被Router到IPDUM模塊。
PDU-Router(例如查找表)的配置必須能夠使相關的I-PDU被Router到IPDUM。
而COM的話由于IpduM模塊的配置依賴于自動共享COM模塊的相應配置。對于每個多路復用的I-PDU,靜態部分和動態部分的每個布局都需要有不同的i-pdu。對COM不了解的同學網上的資料也挺全的,可以去自行了解。IpduM進一步假設正確的字段選擇器的值已經包含在表示動態部分的COM的模塊I-PDU中。而所包含的i-pdu則不依賴于COM配置。
IPDUM 的定義和布局
多路復用的I-PDU由靜態部分和一個動態部分組成,其中靜態部分由零個或多個信號或信號組組成。而動態部分由選擇字段和一個或多個信號或信號組組成;?I-PDU的動態部分可與C語言的集合相媲美。根據I-PDU內的選擇器字段的值,系統會選擇I-PDU的實際布局。
靜態部件和動態部件的位置可根據I-PDU進行配置。靜態部分和動態部分可以被細分為不同的部分。對于每個多路復用的I-PDU,只能定義一個選擇器字段。選擇器字段具有1到16個連續位之間的可配置大小,其位置可以通過配置來定義,選擇器字段的值解釋了如何去定義I-PDU的動態部分的內容。
靜態部分有一個COMI-PDU,一個復用IpduMI-PDU的動態部分的每個布局有一個COMI-PDU,因此IpduM最多組合兩個COM的I-PDU。對于通過IpduM模塊的I-PDU數據傳輸路徑,在IpduM模塊內分配了一個緩沖區。這個緩沖區需要初始化,因為它可能在COM模塊完全填充數據之前傳輸。此緩沖區的初始化數據來自COM模塊配置的初始值。為了進行優化,緩沖區可以在配置時計算出初始位模式,然后在運行時進行復制。
在COM內部,靜態部分有獨立的i-pdu,多路的I-PDU每個動態部分都有一個。靜態部分和動態部分在COM中被視為單獨的i-pdu,并且它們有屬于自己的I-PDU ID。
?IpduM模塊提供了一個IpduM_Transmit功能,使PDU路由器能夠啟動一個I-PDU的傳輸;每個輸出的I-PDU都有一個初始值,因此,在靜態和動態部件從COM發送到IpduM之前,IpduM模塊傳輸I-PDU,則傳輸由配置定義的值。如果多路I-PDU僅通過更新動態或靜態部分來觸發發送,那么如果在兩次傳輸之間進行多次更新,非觸發部分可能會被覆蓋。
IpduM模塊通過分離的兩個來自PDU Router模塊的兩個傳輸請求來接收多路I-PDU的靜態和動態部分。
有時,IpduM模塊可能不只是發送本地存儲的部分,因為這些部分可能包含過時的信息,例如update bits。因此,IpduM支持每個部分都有一個可配置的即時更新機制。
通信硬件抽象(CAN接口、Lin接口、FlexRay接口)接收的每個I-PDU都給PDU Rouer。PDU Router將i-pdu多路router到IpduM模塊。IpduM模塊分別將多路I-PDU的靜態和動態部分路由到其目的地。在配置時就可以知道,傳入的I-PDU ID對應于配置了靜態部分的多路復用的I-pdu。僅通過I-PDUID就可以確定是否存在靜態部件。
沒有要求處理或通知配置錯誤的部件。因此,如果接收到的I-PDU包含未在此ECU上為接收配置的段,則將忽略它們。此外,如果I-PDU配置的PduLength為0,它也將被忽略,因為不能配置有意義的處理。
總結
以上是生活随笔為你收集整理的协议数据单元I-PDU Multiplexer深入理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安防视频推流组件EasyRTSPServ
- 下一篇: Linux我的世界一键开服