AUTOSAR架構的 Pdu Router


前言:PDU Router(路由器)在本文將簡稱為PduR,考慮到個人對PduR模塊認識深度有限,且接觸的CAN通訊功能運用PduR模塊功能也較簡單,所以本文僅對PduR模塊做簡單介紹。

基本概念

首先了解下路由的概念,路由是指路由器從一個接口上收到數據包,根據數據包的目的地址進行定向并轉發到另一個接口的過程(引自百度百科)。
接著了解下PduR更多的作用,引自[1]:PduR模塊提供路由I-PDU(Interaction Layer Protocol Data Units)服務,使用在通訊接口模塊(比如CanIf,CanNM,FrIf)和傳輸協議模塊(比如CanTp,COM和DCM),如下圖1所示。常用的PDU路由使用模塊有:與UDS服務相關的AUTOSAR 診斷通訊管理模塊(Diagnostic Communication Manager,DCM)和傳輸協議模塊,與CAN通訊相關的AUTOSAR COM,通訊協議模塊等。

AUTOSAR架構的 Pdu Router的圖1

圖1 AUTOSAR架構下的PduR模塊,引自[1]
PduR主要由2部分組成:
  • PduR路由表:靜態路由表描述每個被路由的I-PDU的路由屬性;I-PDU路由的執行是基于靜態定義的I-PDU ID。
  • PduR引擎:根據PduR路由表執行路由動作的實際代碼,該引擎不得不路由I-PDU從源頭到目的地,以及根據I-PDU ID的源頭翻譯其目的地。

AUTOSAR架構的 Pdu Router的圖2

圖2 PduR模塊的組成,引自[1]
通過以上知識對應到CAN通訊,就是PduR模塊從CAN接口模塊/COM模塊接收到了PDU,然后根據PDU ID查找已定義好的靜態路由表,獲得其目標地址,定向并轉發到COM模塊/CAN接口模塊,即路由PDU,故稱為PDU Router。

發送與接收操作

從CAN通訊的發送與接收來看,再來理解下PduR模塊的作用,即:
  • 發送時,PduR模塊將來自COM模塊的發送請求路由到Can接口模塊,將來自Can接口模塊的確認路由到COM模塊,如下圖3。
  • 接收時,PduR模塊將來自Can接口模塊的通知路由到COM模塊,如下圖4。

AUTOSAR架構的 Pdu Router的圖3

圖3

AUTOSAR架構的 Pdu Router的圖4

圖4
下面借助文檔了解下上述函數的定義,發送請求函數如下圖5所示:

AUTOSAR架構的 Pdu Router的圖5

圖5 發送請求函數,引自[1}
注意User:Up與當前的功能有關,CAN通訊的話,User:Up為Com,即發送時,COM模塊調用PduR_ComTransmit函數。當然作為PduR模塊的函數,會根據不同功能路由到其他模塊,自然需要采用這種定義方式。同樣地發送確認函數和接收通知函數也一樣。

AUTOSAR架構的 Pdu Router的圖6

引自[1]
發送確認函數的定義如下圖6,其中User:Lo的定義如下表,發送時,Can接口模塊調用PduR_CanIfTxConformation函數向上確認。

AUTOSAR架構的 Pdu Router的圖7

圖6 發送確認函數,引自[1]
AUTOSAR架構的 Pdu Router的圖8
接收通知函數的定義如下圖7,其中User:Lo的定義如上表,即Can接口模塊調用PduR_CanIfRxIndication函數。在此就發現圖4用PduR_RxIndication函數就不夠準確咯。

AUTOSAR架構的 Pdu Router的圖9

圖7 接收通知函數,引自[1]

路由表

目前覺得PduR模塊最關鍵還是路由表的定義,一是路由路徑的確定,二是由源頭ID到目的地ID的確定。特此再引用兩例說明,如下圖8、9。

AUTOSAR架構的 Pdu Router的圖10

圖8 接收通知路由,引自[2]

AUTOSAR架構的 Pdu Router的圖11

圖9 發送請求路由,引自[2]

以上就是簡單介紹了PduR模塊在CAN通訊的發送與接收所起的作用,當向上進入COM層后,簡單地說就是:接收時,將PDU解包成一個一個的信號,供ASW使用;發送時,將一個一個的信號打包成PDU,向下發送。那么具體怎么實現?請看下篇文章。

Reference:

[1] Specification of PDU Router.

[2] 基于AUTOSAR標準的汽車通訊及網絡管理技術的設計及實現[M],楊永亮,山東大學

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP