DCM是什么
DCM全稱Diagnostic Communication Manager,它位于AUTOSAR基礎軟件的服務層,它的主要作用是為開發(fā)和生產(chǎn)階段提供與診斷儀交互的診斷服務。
DCM模塊可以保證診斷數(shù)據(jù)流的正確性,管理診斷狀態(tài),比如會話狀態(tài)和安全訪問等級狀態(tài)。DCM會檢查某個診斷請求是否被支持,以及在當前的會話狀態(tài)和安全訪問等級下下該診斷請求會不會被執(zhí)行。
DCM在AUTOSAR中的位置
DCM模塊在AUTOSAR架構中的位置如下圖:
DCM模塊獨立于網(wǎng)絡總線,也就是說DCM不區(qū)分接收到的診斷請求是來自于CAN總線還是LIN總線,抑或是Flexray總線,所有與總線有關的處理都在PDUR模塊完成。DCM模塊從PDUR接收診斷報文,然后在DCM內部完成檢查和處理。在這個過程中DCM將會與其他BSW模塊或SWC(通過RTE)進行交互,以獲得需要的數(shù)據(jù)或者執(zhí)行相應的命令。DCM最終會收集并整合信息,最后發(fā)送響應報文給PDUR模塊。
DCM包含的子模塊
為了合理的分配DCM的各項任務,DCM被劃分為如下三個子模塊:
- DSL(Diagnostic Session Layer):處理診斷請求和響應的數(shù)據(jù)流,監(jiān)督和管理診斷協(xié)議時序,管理會話和安全訪問狀態(tài)。
- DSD(Diagnostic Service Dispatcher):檢查診斷請求的有效性(診斷ID是否支持、會話狀態(tài)、安全等級),把有效的診斷請求委托給DSP,并追蹤診斷請求的處理
- DSP(Diagnostic Service Processing):檢查診斷請求格式以及診斷子服務是否支持,獲得需要返回的數(shù)據(jù)或者執(zhí)行需要被調用的函數(shù)(調用SWC的函數(shù)寫數(shù)據(jù)到NVM,調用DEM的服務獲得DTC狀態(tài))、填充response的數(shù)據(jù)
DCM各個子模塊及其他軟件模塊之間的交互
下面利用一張圖來厘清DCM各個子模塊之間的關系,以及與其他軟件模塊的交互關系。
現(xiàn)在通過診斷儀發(fā)送一條配置車輛識別碼(VIN)的診斷命令,看一下DCM的整個處理流程。
- 首先這條診斷報文(0x2E, 0xF1, 0x90, ......)會經(jīng)由PDUR傳送到DSL,DSL會先確認當前是否有其他診斷請求正在處理,如果沒有將會把該診斷請求發(fā)送給DSD模塊。
- DSD模塊收到0x2E的診斷報文后,會先判斷服務ID 0x2E在不在當前的Service Identifier Table中,如果不在將會拒絕該請求(一般情況下ECU都是支持0x2E服務的,這里只是舉例子),如果該服務ID在Service Identifier Table中,接下來要判斷當前的診斷會話(從DSL獲取)是否為擴展會話,以及當前的安全訪問狀態(tài)是否允許0x2E寫入。如果所有檢查通過,則會把該診斷請求委托給DSP模塊。否則將會拒絕該診斷請求,并通知DSL發(fā)送響應的負反饋到PDUR。
- DSP收到0x2E的診斷請求后,會先檢查請求的格式,比如總的報文長度是否符合定義,以及診斷子服務0xF190是否支持。如果校驗通過則調用APP層相應的SWC的函數(shù),把VIN數(shù)據(jù)寫入到NVM。然后準備正響應報文并發(fā)送給DSD,DSD再發(fā)送給DSL,最后通過PDUR發(fā)送到相應到網(wǎng)絡總線上。
-
LIN總線
+關注
關注
19文章
108瀏覽量
27436 -
AUTOSAR
+關注
關注
10文章
349瀏覽量
21446 -
DCM
+關注
關注
0文章
157瀏覽量
26388 -
ECU軟件
+關注
關注
1文章
13瀏覽量
10300 -
DTC控制
+關注
關注
0文章
18瀏覽量
1162
發(fā)布評論請先 登錄
相關推薦
評論