為了定義DCM模塊的功能,DCM SWS將DCM模塊建模為由以下子模塊組成:
1.診斷會話層(DSL)子模塊:DSL子模塊可確保與診斷請求和響應有關的數據流,監督和保證診斷協議計時並管理診斷狀態(尤其是診斷會話和安全性)。
2.診斷服務分派器(DSD)子模塊:DSD子模塊處理診斷數據流。 子模塊:
1.通過網絡接收新的診斷請求,並將其轉發到數據處理器。
2.由數據處理器(例如DSP子模塊)觸發時,通過網絡傳輸診斷響應。
3.診斷服務處理(DSP)子模塊:DSP子模塊處理實際的診斷服務(分別為子服務)請求。下圖概述了DCM模塊中子模塊DSP,DSD和DSL之間的接口。
注意:這些子模塊及其之間的接口的實現是不是強制性的。 引入它們只是為了提高規格。
負面回應碼(NRC)
定義UDS服務和OBD服務的標准定義了否定響應代碼(NRCs)。
DCM SWS在DCM與其他BSW模塊和SW-C之間的接口中使用這些NRC。 這些NRC在數據類型Dcm_NegativeResponseCodeType中定義。
[SWS_Dcm_01075]傳輸的NRC的順序應符合ISO14229-1 [15]中所述的順序。
非易失性信息:
Dcm的幾個功能要求對非易失性信息進行初始化。
AUTOSAR沒有描述在Dcm初始化時如何訪問此信息或該信息是否可用。 因此,對非易失性信息的訪問是特定於實現的,並且必須在集成期間確保。
[SWS_Dcm_00870] Dcm必須檢查NvM是否被正確讀出。如果非揮發性信息無法讀出正確的DCM將啟動默認的反應。 本章描述了默認的反應,並描述了非易失性數據的用法。
[SWS_Dcm_01048] 如果Dcm取消具有NvM訪問權限的服務,則它將調用NvM_CancelJobs()。
通過達到RCRRP NRC的最大數量或通過協議搶占來取消該服務。
數據類型
[SWS_Dcm_00968] Dcm應支持以下數據類型:
uint8 [n]類型映射到固定或可變數據長度。
[SWS_Dcm_00969] Dcm應該像匹配大小的整數數據類型一樣對待非整數數據類型(例如uint8 [n]),或者在DcmDspDataEndianness配置為OPAQUE的情況下不解釋其內容。
[SWS_Dcm_00970] Dcm模塊應將不透明數據解釋為uint8 [n],並應始終將其映射到n字節大小的信號。
對於不透明的數據字節序,必須將DcmDspDataEndianness配置為OPAQUE。
[SWS_Dcm_00971] Dcm必須將在[21](第2.4章)中定義的字節序轉換擴展到有符號數據類型。在[21](第2.4章)中,字節序轉換是為無符號數據類型定義的。 可以在配置10.2.29 DcmDspData中找到相關的配置。
-
原子類型概述

- 數據數組類型概述

數據類型約束
[constr_6002]定義DcmDspDataSize參數的用法, DcmDspDataSize是數組和位類型所必需的。
注意:基本數據類型不需要DcmDspDataSize [constr_6003] 8位數組的大小參數限制如果值大於8並且DcmDspDataType為UINT8_N,SINT8_N或UINT8_DYN,則⌈DcmDspDataSize應為8的倍數。
[constr_6035]如果值大於16並且DcmDspDataType為UINT16_N或SINT16_N,則16位數組⌈DcmDspDataSizes的大小參數限制應為16的倍數。
[constr_6036]如果值大於32並且DcmDspDataType為UINT32_N或SINT32_N,則32位數組DcmDspDataSizes的大小參數限制應為32的倍數。
[constr_6004]如果DcmDspDataUsePort是類型,則UINT8將用作(實現)數據類型,其位長度在1到8之間。USE_DATA_SENDER_RECEIVER或USE_ECU_SIGNAL並且DcmDspDataSize大於1且小於8,DcmDspDataType應使用UINT8。
[constr_6005] UINT16將用作(實現)數據類型,用於8至16位之間的位長度。⌈如果DcmDspDataUsePort的類型為USE_DATA_SENDER_RECEIVER或USE_ECU_SIGNAL類型,並且DcmDspDataSize大於8且小於16,則DcmDspDataType應使用UINT16。
[constr_6006]如果DcmDspDataUsePort等於USE_BLOCK_ID ||,則按位訪問的限制⌈DcmDspDataSize應為8的倍數。
USE_DATA_SYNCH_CLIENT_SERVER ||
USE_DATA_ASYNCH_CLIENT_SERVER ||
USE_DATA_ASYNCH_CLIENT_SERVER_ERROR ||
USE_DATA_ASYNCH_FNC_ERROR || USE_DATA_SYNCH_FNC ||
USE_DATA_ASYNCH_FNC。
[constr_6033]可變長度的常規參數始終為8的倍數。如果DcmDspRoutineSignalType等於VARIABLE_LENGTH,則DcmDspRoutineSignalLength值應為8的倍數。
[constr_6007]對按位放置的限制DcmDspDidDataPos參數應始終尋址字節邊界,但DcmDspDataType設置為BOOLEAN,UINT8或UINT16且DcmDspDataSize小於或等於16除外。
[constr_6008]僅在DcmDspRoutineSignalType設置為VARIABLE_LENGTH時,才需要定義DcmDspRoutineSignalLength參數的用法DcmDspRoutineSignalLength。
[constr_6009] DcmDspRoutineSignalPos參數的按位放置限制應始終尋址字節邊界,但DcmDspRoutineSignalType設置為BOOLEAN或UINT8除外。
[constr_6010]如果DcmDspRoutineSignalType設置為UINT8,則按位訪問DcmDspRoutineSignalLength的限制不得超過8的值。
[constr_6011]只有RID中的最后一個參數可以具有可變長度具有VARIABLE_LENGTH的⌈DcmDspRoutineSignalType僅對最后一個信號有效。
[constr_6012]定義DcmDspPidDataSize參數的用法arrayDcmDspPidDataSize是array-和bittype所必需的。注意:基本數據類型不需要DcmDspPidDataSize
[constr_6013] 8位數組的大小參數限制如果該值大於8並且DcmDspPidDataType為UINT8_N,SINT8_N或UINT8_DYN,則DcmDspPidDataSize應為8的倍數。
[constr_6040] 16位數組的大小參數限制如果值大於16並且DcmDspPIDDataType為UINT16_N或SINT16_N,則DcmDspPIDDataSize應為16的倍數。
[constr_6041] 32位數組的大小參數限制如果值大於32並且DcmDspPIDDataType為UINT32_N或SINT32_N,則DcmDspPIDDataSize應為32的倍數。
[constr_6014]如果DcmDspPidDataUsePort是類型,則UINT8將用作(實現)數據類型,其位長度在1到8之間USE_DATA_SENDER_RECEIVER和DcmDspPidDataSize大於1且小於8,DcmDspPidDataType應使用UINT8。
[constr_6015]如果DcmDspPidDataUsePort是類型,則UINT16將用作(實現)數據類型,用於8到16之間的比特長度USE_DATA_SENDER_RECEIVER並且DcmDspPidDataSize大於9且小於16,DcmDspPidDataType應使用UINT16。
[constr_6016]對按位訪問的限制DcmDspPidDataSize為8的倍數,而DcmDspPidDataUsePort為USE_DATA_SYNCH_CLIENT_SERVER,使用USE_DATA_SYNCH_FNC。
[constr_6017]對按位放置的限制DcmDspPidDataPos參數應始終尋址字節邊界,但DcmDspPidDataType設置為BOOLEAN,UINT8或UINT16且DcmDspPidDataSize小於或等於16除外。
[constr_6042] UINT8將用作客戶端-服務器接口的(實現)數據類型。如果DcmDspPIDDataUsePort參數設置為{USE_DATA_SYNCH_CLIENT_SERVER},則DcmDspPIDDataType必須使用UINT8_N或UINT8_DYN。
[constr_6043]數據類型使用的限制:DcmDspPIDDataUsePort等於USE_DATA_SYNCH_FNC時,DcmDspPIDDataType必須為UINT8_N或UINT8_DYN。
[constr_6024]如果DcmDspDataUsePort參數設置為,則應將UINT8用作客戶端-服務器接口的(實現)數據類型。{USE_DATA_SYNCH_CLIENT_SERVER,USE_DATA_ASYNCH_CLIENT_SERVER,USE_DATA_ASYNCH_CLIENT_SERVER_ERROR},DcmDspDataType必須使用UINT8_N或UINT8_DYN。
[constr_6037]數據類型使用的限制⌈如果DcmDspDataUsePort等於USE_DATA_ASYNCH_FNC_ERROR,則DcmDspDataType必須為UINT8_N或UINT8_DYN。 USE_DATA_SYNCH_FNC || USE_DATA_ASYNCH_FNC。
[constr_6038]在DcmDspDataUsePort等於USE_BLOCK_ID的情況下,數據類型使用DcmDspDataType的限制應為UINT8_N。
[constr_6026]在S / R通信,NvRam訪問或ECU信號訪問的情況下使用可變數據長度,如果DcmDspDataUsePort設置為{USE_DATA_SENDER_RECEIVER,USE_BLOCK_ID,USE_ECU_SIGNAL},則不允許使用可變數據長度。
注意:只有將DcmDspDataType設置為UINT8_DYN的UINT8陣列才可以使用可變數據長度。
