AUTOSAR CAN 실습#
0. 목차#
- Project 생성
- SWC 생성 (VFB level)
- Runnable 설정 (RTE level)
- ECU Mapping
- Port 생성 (Data Mapping)
- Data / Signal Mapping
- Harmonize & Task Mapping
- C Coding
- Generate & Build
1. Project 생성#
우선 Project Import 과정부터 진행한다. File → Import를 클릭한다.

그 후, General → Existing Projects into Workspace를 선택한 후, Next를 클릭한다.

그리고, Base Project를 browse 버튼을 통해 가져온 뒤, 반드시 아래의 Copy projects into workspace를 선택한다. 모든 설정을 마쳤다면 Finish 버튼을 통해 마무리 한다.

2. SWC 생성 (VFB level)#
Import가 끝났다면 AUTOSAR file을 추가한다. Configuration → System → Swcd_App을 우클릭하여 New → AUTOSAR File을 클릭하여 새로운 AUTOSAR File을 생성한다.

File name을 App_CANTest.arxml, ARPackage 이름을 CANTest로 설정한 후 Finish를 눌러준다.

지금부터 Software Component를 추가하고, 내부에 Tx, Rx Runnable을 추가해주는 작업을 진행할 예정이다. AUTOSAR file 내부의 CANTest를 우클릭하여 New → Application Sw Component Type를 클릭한다.

추가된 SWC를 더블클릭하여 설정 화면으로 넘어온 후 Short Name을 변경하고, Multiple Instantiation을 false로 변경한다. 설정을 완료하였다면 화면 중앙의 Runnables를 클릭하여 Runnable 설정 화면으로 넘어간다.

3. Runnable 설정 (RTE level)#
Tx Runnable 설정#
그림 순서대로 Runnables로 넘어와 + 버튼을 클릭하여 새로 생긴 Runnable을 더블클릭한다. 이후 다음과 같이 설정한다.
- Short Name : RE_CANTest_Tx
- Symbol : CANTest_Tx
- Can Be Invoked Concurrently : false

그 후 Event 추가를 위해 RTE Event 탭을 클릭하여 Timing Event 추가를 위한 Add 버튼을 클릭한다.

넘어오면 Timing Event 선택 후, OK 버튼을 클릭한다.

기본값으로 설정된 5 msec를 변경하기 위해 해당 부분을 더블클릭한다.

Period를 100ms로 변경하고 OK 버튼을 클릭한다.

Rx Runnable 설정#
CANTest_Rx 또한 추가, Short Name, Symbol, Concurrency 부분을 올바르게 입력한다.

4. ECU Mapping#
다음으로 ECU Extract를 위해 RootComposition에 SWC를 추가하는 작업을 진행한다. System → Composition → RootComposition → CSWC_RootComposition을 더블클릭하여 해당 화면으로 넘어온다.

Component 추가를 위해 Components and Ports를 클릭하고 + 버튼을 클릭한다.

SWC_CANTest의 체크박스에 체크하고 OK 버튼을 클릭한다.

그림과 같이 잘 추가된 것을 확인한 후 ECU Extract로 넘어간다.

화면 좌측 상단의 초록 아이콘 Configure ECU and Generate Code을 클릭한 뒤 ECU Software Components Mapping 버튼을 클릭한다.

OK 버튼을 누른다.

SwComponentPrototype가 1개 추가되는 것을 확인한 후 Apply 버튼을 클릭한다.

5. Port 생성 (Data Mapping)#
ECU Mapping 과정이 끝났다면 다음으로 Tx/Rx Port를 생성하는 작업을 진행해볼 예정이다. Data Mappings 탭으로 이동후 CANTEST를 클릭, Create Ports From Network를 클릭한다.

이 화면은 소프트웨어 컴포넌트의 포트를 추가하기 위해 참고할 네트워크 정보를 선택한다. 본 실습에서는 기존에 만들어져있는 dbc 파일인 FD_CAN1을 선택한다.

Tx 창에서 그림의 체크박스를 전부 체크한다.

Rx 창으로 넘어와 그림의 체크박스를 전부 체크한다. 그 후 화면 우측 하단의 OK 버튼을 클릭한다.

OK 버튼을 클릭한다.

여기까지의 작업을 마쳤다면, SWC_CANTest의 Port가 자동으로 추가된 것을 확인할 수 있다.

추가로 FD_CAN1_Normal_Msg_FD_Tp_01_B 신호의 경우 Queue Length를 1로 설정한다.

6. Data / Signal Mapping#
지금부터는 생성한 Port의 Interface의 Data Elements(Signal)와 통신 Signal을 mapping하는 작업을 진행할 예정이다. 다시 원래의 Data Mappings 화면으로 돌아와서, Add / Remove All 버튼을 클릭한다.

그리고 체크박스에 체크를 한 후, OK 버튼을 클릭한다.

해당 작업을 완료하면 Data들이 모두 Mapping 된 것을 확인할 수 있다.

이번에는 Tx/Rx Port의 Send/Receive Point를 생성하는 작업을 진행해보자. 다시 SWC_CANTest를 클릭하고, Create Ports From Network를 클릭한다.

마찬가지로 FD_CAN1의 체크박스를 체크하고 OK 버튼을 눌러준다.

해당 칸을 클릭한다.

Data Access Runnable을 RE_CANTest_Tx로 설정한다.

최종적으로 그림과 같이 Data Access Runnable 과 DSP를 설정한다.

마찬가지로 Rx의 경우도 동일하게 Data Access Runnable과 Start on DRE를 설정한다. 이후 OK 버튼을 클릭하여 작업을 마무리 한다.

OK 버튼을 클릭한다

위 작업을 마무리 해주면 SWC_CANTest의 Runnables 탭에서 Data Send Point가 추가된 것을 확인할 수 있다.

마찬가지로 RE_CANTest_Rx에 대해서도 RTE Event가 추가된 것을 확인할 수 있다.

마지막으로 Rx의 Receive Point를 설정하는 작업을 진행해보자. 다시 SWC_CANTest를 클릭하고, Create Ports From Network를 클릭한다.

마찬가지로 FD_CAN1의 체크박스를 체크하고 OK 버튼을 눌러준다.

바로 Rx 탭으로 이동 후 Data Access Runnable과 DRPBA로 설정한다

OK 버튼을 눌러 마무리 한다.

이 작업 이후 다시 SWC_CANTest의 Rx Runnable을 확인해보면 DRPBA가 설정된 것을 확인할 수 있다.

7. Harmonize & Task Mapping#
이미 ECU Extract 과정은 진행하였으므로, Harmonize 과정을 진행한다. 화면 좌측 상단의 초록 아이콘 Configure ECU and Generate Code을 클릭한다.

Generate ECU Configuration 버튼을 클릭한다.

Next 버튼 클릭

화면에서 Service 옆의 빈칸에 체크를 해주고 Next 버튼을 클릭한다.

화면까지 확인한 후 Finish 버튼을 클릭한다.

Harmonize 과정이 완료되었다면 Task Mapping을 진행한다. 다시한번 화면 좌측 상단의 초록 아이콘 Configure ECU and Generate Code을 클릭한다.

현재 프로젝트를 확인한 뒤 OK 를 클릭한다.

rte를 클릭한다.

화면 하단의 Task Mapping을 클릭한다.

순서대로 Timing Event를 주기 Task에 mapping한다.
Sw Component Instance선택SwInstance_SWC_CANTest선택Related ro Sw Component선택OsTask_ASW_FG1_100ms선택TE_RE_CANTest_Tx선택

Add 를 클릭한다.

순서대로 나머지 이벤트들을 모두 비주기 Task에 mapping한다.
RE_CANTest_Rx의 DRE 이벤트들 선택OsTask_BSW_FG5_ComMModuleReq선택Add클릭

그림과 같이 추가된 것을 확인한다.

8. C Coding#
Task Mapping 과정이 완료되었다면 generate를 위한 설정을 한다. 화면 좌측의 Build / SCons.arxml / SCons를 더블클릭한다.

All Contents를 클릭하여 RTSW의 확장 버튼 클릭한다.
All Contents를 클릭하여 Navigator 내의 Rte를 찾아 더블클릭하고, Input Files List의 Add 버튼을 클릭한다.

Generation / Module 로 확장한다.

Rte를 찾아 더블클릭 한 뒤, Input Files List의 Add 버튼을 클릭한다.

Value에 App_CANTest를 입력한 후, Add 버튼을 클릭한다.

우측의 Value에 추가된 것을 확인하고 OK 버튼을 클릭한다.

마지막으로 코드를 입력한다. Static Code / Reference / src 폴더를 우클릭하여 File을 추가한다.

파일명을 다음과 같이 설정한다: SWC_CANTest.c

코드를 입력한다.
#include "Rte_SwC_CANTest.h"
void CANTest_Tx(void)
{
// DSP
}
void CANTest_Rx(void)
{
// DRPBA
}
9. Generate & Build#
코드 입력을 완료하였다면 화면 좌측 상단의 망치 버튼을 클릭하여 Build를 한다.

정상적으로 Build 되는지 확인한 후 실습을 마무리한다.
