AUTOSAR DCM 실습#
0. 목차#
- Project Import
- DCM DID 및 DID Info 설정
- DCM Data 설정
- Generate
- SWC 생성 및 설정
- C Coding
- SCons 설정
- Composition 및 ECU Mapping
- ECU Configuration 생성
- Service and I/O 연결
- Build
1. Project Import#
우선 프로젝트를 가져오기 위해 상단 메뉴에서 File → Import를 클릭한다.

General → Existing Projects into Workspace를 선택한 뒤 Next를 클릭한다.

Browse를 통해 Base 프로젝트를 선택하고 Copy projects into workspace를 체크한 후 Finish를 누른다.

2. DCM DID 및 DID Info 설정#
프로젝트 탐색기에서 Configuration → Ecu → Ecud_Dcm.arxml로 이동한 뒤 Dcm을 더블클릭한다.

All Contents 탭에서 DcmConfigSet → DcmDsp → Did를 더블클릭한다.

+ 버튼을 클릭하여 DID를 추가한다. Short Name은 DcmDid_Test, Identifier는 0xF310, Used는 true로 설정한다.

Did Info를 더블클릭한 뒤 + 버튼을 클릭한다. Short Name을 DcmDidInfo_Test로 입력하고, Did Dynamically Defined는 false로 설정한다.

생성된 DcmDidInfo_Test를 더블클릭하고 Did Read를 클릭한다.

Number of Containers를 1로 설정하고 OK를 클릭한다.

다시 DcmDidInfo_Test를 더블클릭하고 이번에는 Did Write를 클릭한다.

Number of Containers를 1로 설정한 뒤 OK를 클릭한다.

Did를 더블클릭한 뒤 DcmDid_Test의 Info Ref 항목에서 ... 버튼을 클릭한다.

앞서 생성한 DcmDidInfo_Test를 선택하고 OK를 클릭한다.

DcmDid_Test를 더블클릭하고 Signal을 클릭한다.

Number of Containers를 1로 설정하고 OK를 클릭한다.

Container Details 창으로 넘어오면 Short Name을 DcmDidSignal_Test, Byte Offset을 0으로 설정한다.

3. DCM Data 설정#
DcmDsp → Data로 이동한 뒤 + 버튼을 클릭한다.

Short Name을 DcmData_Test, Byte Size를 4, Condition Check Read Fnc Used를 true로 설정한다.

Type을 UINT32, Use Port를 USE_DATA_SYNCH_CLIENT_SERVER로 설정한 뒤 Info Ref의 ... 버튼을 클릭한다.

DataInfo_NoScaling을 선택하고 OK를 클릭한다.

Did → DcmDid_Test → Signal을 더블클릭한 뒤 Data Ref 항목의 ... 버튼을 클릭한다.

DcmData_Test를 선택하고 OK를 클릭한다.

4. Generate#
상단의 망치 아이콘 옆 화살표를 클릭하고 Generate All을 선택한다.

Generate가 완료되면 왼쪽 위 초록색 버튼을 클릭한다. Service and I/O → Dcm으로 이동하여 DataServices_DcmData_Test가 추가되었는지 확인한다.

5. SWC 생성 및 설정#
Configuration → System → Swcd_App을 우클릭하여 New → AUTOSAR File로 새 파일을 생성한다.

File name을 App_DcmTest.arxml로 설정한 뒤 Finish를 클릭한다.

생성된 App_DcmTest.arxml → ARRoot을 우클릭하여 New → Application Sw Component Type로 SWC를 생성한다.

생성된 SWC를 더블클릭하고 Short Name을 SWC_DcmTest, Supports Multiple Instantiation을 false로 설정한다.

Ports 탭으로 넘어와서 + 버튼을 클릭하고 Client Server Interface → Server를 선택한다.

인터페이스 목록에서 DataServices_DcmData_Test를 선택하고 OK를 클릭한다.

생성된 포트를 더블클릭하여 Short Name을 DataServices_DcmData_Test로 설정한다. Operation에서 ReadData를 선택하고 Enable Provided Com Specs를 체크한 뒤 Queue Length를 1로 설정한다.

이어서 Operation에서 WriteData를 선택하고 Enable Provided Com Specs를 체크한 뒤 Queue Length를 1로 설정한다.

Runnables 탭으로 넘어와서 + 버튼을 클릭하고 새 Runnable을 더블클릭한다. Short Name을 RE_DcmTest_Read, Symbol을 DcmTest_Read_func, Can Be Invoked Concurrently를 false로 설정한다.

RTE Event 에서 Add를 클릭한다.

Operation Invoked Event에서 DataServices_DcmData_Test.ReadData를 선택하고 OK를 클릭한다.

+ 버튼으로 Runnable을 하나 더 추가하고 더블클릭한다. Short Name을 RE_DcmTest_Write, Symbol을 DcmTest_Write_func, Can Be Invoked Concurrently를 false로 설정한다.

RTE Event 에서 Add를 클릭한다.

Operation Invoked Event에서 DataServices_DcmData_Test.WriteData를 선택하고 OK를 클릭한다.

6. C Coding#
프로젝트 탐색기의 Static_Code → Reference_Code → src에서 New → File을 클릭한다.

File name을 SWC_DcmTest.c로 입력한 뒤 Finish를 클릭한다.

생성된 파일에 해당 코드를 입력한다.

#include "Rte_SWC_DcmTest.h"
uint32 DcmTest_Data = 128;
Std_ReturnType DcmTest_Read_func(Dcm_DataElement_DcmData_TestType* Data)
{
*Data = DcmTest_Data;
}
Std_ReturnType DcmTest_Write_func(Dcm_DataElement_DcmData_TestType Data, Dcm_NegativeResponseCodeType* ErrorCode)
{
DcmTest_Data = Data;
}
7. SCons 설정#
Build → SCons.arxml에서 Scons를 더블클릭하고 Module 탭을 클릭한다.

Rte를 찾아 더블클릭한 뒤 Expected Files List의 Add를 클릭한다.

입력란에 App_DcmTest를 입력한 뒤 Add를 클릭한다.

App_DcmTest가 추가된 것을 확인하고 OK를 클릭한다.

Input Files List의 Add를 클릭한다.

App_DcmTest를 입력하고 Add를 클릭한 뒤 OK를 누른다.

8. Composition 및 ECU Mapping#
Configuration → System → Composition → RootComposition.arxml로 이동한다. CSWC_RootComposition을 더블클릭하고 Components and Ports에서 + 버튼을 클릭한다.

SWC_DcmTest를 체크하고 OK를 클릭한다.

왼쪽 위 보라색 버튼을 클릭한 뒤 ECU Software Components Mapping을 선택한다.

OK를 클릭한다.

1 SwComponentPrototype이 추가된 것을 확인하고 Apply를 클릭한다.

9. ECU Configuration 생성#
왼쪽 위 초록색 버튼을 클릭한 뒤 Overview → Generate ECU Configuration을 선택한다.

Next를 클릭한다.

Service에서 Rte를 체크하고 Next를 클릭한다.

Finish를 클릭한다.

10. Service and I/O 연결#
왼쪽 위 초록색 버튼을 클릭한 뒤 Service and I/O 로 넘어와서 Dcm → DataServices_DcmData_Test 클릭 후 + 버튼을 클릭한다.

목록에 표시된 하나의 항목을 체크하고 OK를 클릭한다.

11. Build#
왼쪽 위 망치 아이콘 옆 화살표를 클릭하고 Build를 선택한다.

Build가 완료되면 실습을 종료한다.
