Skip to content

AUTOSAR CAN 실습#

0. 목차#

  1. Project 생성
  2. SWC 생성 (VFB level)
  3. Runnable 설정 (RTE level)
  4. ECU Mapping
  5. Port 생성 (Data Mapping)
  6. Data / Signal Mapping
  7. Harmonize & Task Mapping
  8. C Coding
  9. Generate & Build

1. Project 생성#

우선 Project Import 과정부터 진행한다. FileImport를 클릭한다.

CAN_1

그 후, GeneralExisting Projects into Workspace를 선택한 후, Next를 클릭한다.

CAN_2

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

CAN_3


2. SWC 생성 (VFB level)#

Import가 끝났다면 AUTOSAR file을 추가한다. ConfigurationSystemSwcd_App을 우클릭하여 NewAUTOSAR File을 클릭하여 새로운 AUTOSAR File을 생성한다.

CAN_4

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

CAN_5

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

CAN_6

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

CAN_7


3. Runnable 설정 (RTE level)#

Tx Runnable 설정#

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

CAN_8

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

CAN_9

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

CAN_10

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

CAN_11

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

CAN_12

Rx Runnable 설정#

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

CAN_13


4. ECU Mapping#

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

CAN_14

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

CAN_15

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

CAN_16

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

CAN_17

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

CAN_18

OK 버튼을 누른다.

CAN_19

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

CAN_20


5. Port 생성 (Data Mapping)#

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

CAN_21

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

CAN_22

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

CAN_23

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

CAN_24

OK 버튼을 클릭한다.

CAN_25

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

CAN_26

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

CAN_27


6. Data / Signal Mapping#

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

CAN_28

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

CAN_29

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

CAN_30

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

CAN_31

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

CAN_32

해당 칸을 클릭한다.

CAN_33

Data Access RunnableRE_CANTest_Tx로 설정한다.

CAN_34

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

CAN_35

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

CAN_36

OK 버튼을 클릭한다

CAN_37

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

CAN_38

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

CAN_39

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

CAN_40

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

CAN_41

바로 Rx 탭으로 이동 후 Data Access RunnableDRPBA로 설정한다

CAN_42

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

CAN_43

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

CAN_44


7. Harmonize & Task Mapping#

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

CAN_45

Generate ECU Configuration 버튼을 클릭한다.

CAN_46

Next 버튼 클릭

CAN_47

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

CAN_48

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

CAN_49

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

CAN_50

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

CAN_51

rte를 클릭한다.

CAN_52

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

CAN_53

순서대로 Timing Event를 주기 Task에 mapping한다.

  • Sw Component Instance 선택
  • SwInstance_SWC_CANTest 선택
  • Related ro Sw Component 선택
  • OsTask_ASW_FG1_100ms 선택
  • TE_RE_CANTest_Tx 선택

CAN_54

Add 를 클릭한다.

CAN_55

순서대로 나머지 이벤트들을 모두 비주기 Task에 mapping한다.

  • RE_CANTest_Rx의 DRE 이벤트들 선택
  • OsTask_BSW_FG5_ComMModuleReq 선택
  • Add 클릭

CAN_56

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

CAN_57


8. C Coding#

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

CAN_58

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

CAN_59

Generation / Module 로 확장한다.

CAN_60

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

CAN_61

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

CAN_62

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

CAN_63

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

CAN_64

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

CAN_65

코드를 입력한다.

CAN_66

#include "Rte_SwC_CANTest.h"

void CANTest_Tx(void)
{
    // DSP
}

void CANTest_Rx(void)
{
    // DRPBA
}


9. Generate & Build#

코드 입력을 완료하였다면 화면 좌측 상단의 망치 버튼을 클릭하여 Build를 한다.

CAN_67

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

CAN_68