Skip to content

AUTOSAR RTE6 실습#

RTE6

0. 목차#

  1. Project 생성
  2. VFB level
  3. RTE level
  4. C coding
  5. ECU Mapping
  6. ECU Extract
  7. ECU Configuration
    1. IO Configuration
    2. OS Configuration
    3. RTE Configuration
  8. Generate & Build

1. Project 생성#

  • FileImportGeneralExisting Projects into WorkspaceNext 선택
    1-1

  • Browse.. → Base Project 선택 → Copy projects into workspace 체크 → Finish 클릭
    1-2

    Copy projects into workspace는 원본 프로젝트 보존 목적 위함.


2. VFB level#

  • Configuration → System → Swcd_App 우클릭 → NewAUTOSAR File 선택
  • Package name & Package name : App_RteFinish클릭 2-1
  • 생성한 AUTOSAR 파일의 아래 방향 화살표 클릭.
  • App_Rte[ARPackage]에서 우클릭 → NewApplication Sw Component Type 클릭.(SWC 생성) 2-2

  • SWC 더블클릭 → Short Name : SWC_SeatSwitch

  • Support Multiple Instantiation : false
  • 같은 방법으로 SWC_SeatHeatingControl 생성.
  • App_Rte[ARPackage] 우클릭 → NewApplication Sw Component Type 클릭 → Short Name : SWC_SeatHeatingControl, Supports Multiple Instantiation : false 2-3

Sender Receiver Interface 생성#

  • App_Rte[ARPackage]우클릭 → New → Sender Receiver Interface 2-4
  • 생성한 SRI 더블클릭 → Short Name : If_SeatSwitch
  • Is Service : false
  • Data Elements → New 클릭.
  • Short Name : PassengerDetected
  • Type : ...박스 클릭 → boolean[/AUTOSAR...]을 선택. 2-5
  • 동일한 방식으로 HeatStrength 추가
  • Type : uint16 2-6 2-7

SWC_SeatSwitch 설정#

  • Ports+ 클릭 → Sender Receiver InterfaceSenderIf_SeatSwitch 선택 → OK 클릭.
    2-8

  • Short Name : P_SeatSwitch

  • Communication Spec → Data Elements → PassengerDetectedEnable Provided Com Specs를 체크
  • 동일한 방식으로 HeatStrengthEnable Provided Com Specs 2-9

  • Ports 우측의 + 클릭 → Client Server InterfaceClientIoHwAb_If_DigDirOK 클릭 2-10

  • Short Name : R_SW06
  • Communication Spec → Operations → ReadDirectEnable Provided Com Specs 체크 2-11

  • Ports 우측의 + 클릭 → Client Server InterfaceClientIoHwAb_If_AnalnDirOK 클릭 2-12

  • Short Name : R_Pot

  • Communication Spec → Operations → ReadDirectEnable Provided Com Specs 체크 2-13

SWC_SeatHeatingControl 설정#

  • SWC_SeatHeatingControlPorts
  • 상단 Ports 우측의 + 클릭 → Send Receiver InterfaceReceiverIf_SeatSwitchOK 클릭
    2-14

  • Short Name : R_SeatSwitch

  • Communication Spec → Data Elements → PassengerDetectedEnable Provided Com Specs 체크
  • Init Value : Numerical Value Specification 체크 2-15

  • 동일한 방식으로 HeatStrengthEnable Required Com Specs 체크

  • Init Value : Numerical Value Specification 체크 2-16
  • Ports 우측의 + 클릭 → Client Server InterfaceClientIoHwAb_If_DigDirOK 클릭 2-17
  • Short Name : R_LED_Red
  • Communication Spec → Operations → WriteDirect로 선택 → Enable Provided Com Specs를 체크 2-18
  • Ports 우측의 + 클릭 → Client Server InterfaceClientIoHwAb_If_PwmOK 클릭 2-19
  • Short Name : R_LED_Blue
  • Communication Spec → Operations → SetDutyCycle로 선택 → Enable Provided Com Specs를 체크 2-20

CSWC 생성 및 연결#

  • 위의 SWC를 묶어서 관리하기 위해 CSWC를 추가.
  • App_Rte[ARPackage] 우클릭 → NewComposition Sw Component Type
  • Short Name : CSWC_SeatHeatingSystem 2-21

  • Components and Ports → 상단의 Components 우측 + 선택 → 생성한 SWC_SeatSwitchSWC_SeatHeatingControl 체크 → OK 클릭 2-22

  • Automatic ConnectionR_SeatSwitch 선택 → 우측 상단 + 클릭. 2-23

  • P_SeatSwitch 체크 → OK 클릭 2-24

3. RTE level#

Runnable 설정: SWC_SeatSwitch#

  • 작업 창의 SWC_SeatSwitch 클릭 –> Runnable 클릭
  • 상단 Runnables의 우측 + 클릭
  • Short Name : RE_SeatSwitch , Symbol : SeatSwitch_func
  • Can Be Invoked Concurrently : false 3-1

  • RTE EventAddTiming EventOK 클릭

  • 생성된 Timing Event 더블클릭 → Period : 100msecOK 클릭
    3-2
  • Operation/Mode/Trigger AccessAdd. 3-3
  • Synchronuous Server Call Points(SSCP) → R_Pot.ReadDirect & R_SW06.ReadDirect를 선택 → OK 클릭. 3-4
  • Data/Parameter AccessAdd. 3-5
  • Data Sent Points(DSP) → P_SeatSwitch.HeatStrength & P_SeatSwitch.PassengerDetected 선택 → OK 클릭. 3-6

Runnable 설정: SWC_SeatHeatingControl#

  • 작업 창의 SWC_SeatHeatingControlRunnables 클릭
  • Short Name : RE_SeatHeatingControl, Symbol : SeatHeatingControl_func
  • Can Be Invoked Concurrently : false 3-7
  • RTE EventAdd. 3-9

  • Data Received EventR_SeatSwitch.HeatStrength & R_SeatSwitch.PassengerDetected 선택 → OK 클릭. 3-10

  • Operation/Mode/Trigger AccessAdd. 3-11

  • Synchronous Server Call Points(SSCP) → R_LED_Blue.SetDutyCycle & R_LED_Red.WriteDirect 선택 → OK 클릭. 3-12

  • Data/Parameter AccessAdd. 3-13

  • Data Received Points By Arguments(DRPBA) → R_SeatSwitch.HeatStrength & R_SeatSwitch.PassengerDetected 선택 → OK 클릭. 3-14

4. C coding#

  • Static CodeReference Codesrc에서 우클릭 → NewFile 4-1
  • File name : SWC_SeatSwitch.c 4-2
  • 동일한 방법으로 SWC_SeatHeatingControl.c 생성 4-3
  • C 코드 작성 4-4

5. ECU Mapping#

  • ConfigurationSystemCompositionRootComposition.arxmlCSWC_RootComposition 더블클릭.
  • 하단의 Components and Ports+ 클릭. 5-1
  • CSWC_SeatHeatingSystem 선택 → OK 클릭. 5-2
    > SWC를 따로 넣지 말고 묶음 단위(CSWC)로 넣기
    

    5-3#

6. ECU Extract#

  • 상단의 Auto-WizSystem Configuration & ECU ExtractECU Software Components Mapping 클릭. 6-1
  • 우측 하단의 OK를 누른 후 추가하고자 하는 SWC와 Connector가 적용되는지 확인한 후 Apply 클릭. 6-2

7. ECU Configuration#

OS Configuration#

  • Auto-WizECU Configuration & Code Generation OS 1.3.0 클릭. 8-1

  • Task → 우측 상단 + 클릭. 8-2

  • Short Name : OsTask_SWC_SeatSwitch_100ms
  • Activation : 1, Priority : 117 8-3

  • 같은 방식으로 +클릭

  • Short Name : OsTask_SWC_SeatHeatingControl
  • Activation : 1, Priority : 118 8-4

  • Alarm → 우측 상단 + 클릭 8-5

  • 만든 알람을 더블 클릭 하여 알람 안으로 접근.

  • Short Name : OsAlarm_SWC_SeatSwitch_100ms 8-6

  • Counter Ref*의 Browse.. 클릭 8-7

  • OsCounter_Main 선택 → OK 8-8

  • Counter를 설정 후 Action 클릭.

  • Number of containers : 1OK 8-9

  • Activate Task 선택 → OK 클릭. 8-10

  • Browse.. 클릭. 8-11

  • OsTask_SWC_SeatSwitch_100ms 선택 → OK 8-12

  • ApplicationOsApplication0 더블클릭 8-13

  • App Alarm Ref 의 Browse.. 클릭. (만든 Alarm 추가) 8-14

  • 이미 그룹에 포함되어 있는 Alarm들을 확인할 수 있고, 우리가 만든 Alarm을 추가시켜주는 과정. 8-15

  • App Task Ref의 Browse.. 클릭.(만든 2개의 Task를 그룹에 포함시켜주기 위함.) 8-16

  • 두 개 모두 선택(ctrl + 클릭) → AddOK 8-17

RTE Configuration#

  • Configure ECU and Generate CodeGenerate ECU Configuration 8-18

  • NextRte 선택 → NextRte: Generate SwInstance configuration 체크 → Finish 클릭 8-19

  • RTE event to Task Mapping 클릭 8-20

  • SWC_SeatSwitch Mapping (주기 Task)
  • unMappedOsTask_SWC_SeatSwitch_100ms 8-21

  • TE_RE_SeatSwitch 선택 → Add 8-22

  • SwcInstance_SWC_SeatHeatingControlunmapped 선택 → OsTask_SWC_SeatHeatingControl 선택 → DRE_RE_* 선택 → Add 클릭. 8-23

I/O Configuration#

  • ConfigurationEcuMcalEcud_Port.armlPort 더블클릭. 다음 아래의 ContainerPortContainer_APin 안에 담겨 있는 핀 확인 5-1

  • PTA31을 더블클릭

  • Initial Mode : PORT_ALT1_FUNC_MODE
  • Mode : EMIOS_1_EMIOS_1_CH_14_H_OUT 선택 - > OK 클릭 5-2

  • PTA11 더블클릭

  • Direction : PORT_PIN_IN
  • Initial Mode : PORT_ANALOG_INPUT_MODE 5-3

  • ConfigurationEcuMcalEcud_PWM.arxmlPwm 더블클릭 → Channel 클릭 5-4

  • 우측 상단의 + 버튼 클릭하여 Channel을 생성.

  • Short Name : PwmChannel_PTA31
  • Id : 1
  • Class : PWM_FIXED_PERIOD
  • Period Default : 8191, Dutycycle Default : 0 5-5

  • 이후 Hw Channel을 설정해야함. 필요한 Hw Channel 생성을 위해 이동.
    5-6

  • Emios 클릭.

  • PwmEmios_0ChannelsPwmEmiosChannels_0
  • 우측 상단의 + 버튼으로 채널을 생성. 5-7

  • Short Name : PwmEmiosChannels_CH14

  • Emios Ch Id : CH_14
  • Emios Ch Mode : EMIOS_PWM_IP_MODE_OPWMB
  • Emios Ch Counter Bus : EMIOS_PWM_IP_BUS_BCDE 5-8

  • 다음은 Bus Ref를 설정해야 하지만 필요한 Bus Ref가 없기에 생성해주어야 함. 5-9

  • McalEcud_Mcl.arxmlMcl 더블클릭.

  • Emios Common으로 이동. 5-10

  • EmiosCommon_1Emios Mcl Master Bus+ 버튼 클릭.

  • Short Name : EmiosMclMasterBus_1_CH8, Number : EMIOS_CH_8
  • Mode Type : MCB_UP_COUNTER, Emios Mcl Default Period : 8191
  • Prescaler : DIV_12 5-11

  • PwmEmiosPwmEmiosChannels_CH14의 Bus Ref를 생성한 EmiosMasterBus_1_CH8로 설정. 5-12

  • ChannelHw Channel, Mcu Clock Reference 설정. 5-13

  • Hw Channel : PwmEmiosChannels_CH14 5-14

  • Mcu Clock : CORE_CLK 5-15

  • McalEcud_IoHwAb.arxmlIoHwAb 더블클릭.

  • All Contents 클릭. 5-16
  • IoHwAbConfigIoHwAbAnalogInputDirectLogical
  • 기존에 있던 IoHwAbAnalogInputDirectLogical_Test2의 이름을 다음과 같이 IoHwAbAnalogInputDirectLogical_Pot로 변경. 5-17
  • IoHwAbPwmLogical+ 버튼 클릭 Short Name : IoHwAbPwmLogical_LED_Blue, Callback Via Rte : false Hw Pwm Ch Ref : PwmChannel_PTA31 5-18

I/O Mapping#

  • I/O Mapping을 위해 다시 상단의 초록색 네모 (Configure ECU and Generate Code) 클릭 → 하단의 Service and I/O 클릭 → IoHwAb의 화살표 클릭 9-1
  • P_IoHwAb…_Pot 선택 → Automatic Connection의 우측 + 클릭 9-2
  • Respect Naming Rule 해제 → R_Pot 선택 → OK 클릭 9-3
  • 동일한 방식으로 P_IoHwAb…_LED_RedR_LED_RED와 연결.
  • P_IoHwAb…_SW06R_SW06과 연결.
  • P_IoHwAb…_LED_BlueR_LED_Blue와 연결. 9-4

8. Generate & Build#

  • BuildScons.arxmlSCons 더블클릭 후
  • 하단의 All ContentsRTSWGenerationModule 8-1

  • Rte 폴더 찾기

  • 오른쪽 창에서 Input Files List 우측의 Add를 클릭
    8-2

  • 'App_Rte'(이전에 생성한 AUTOSAR file이름) 입력 → AddOK 클릭 8-3

  • 좌측 상단 망치의 화살표 클릭 → Build 8-4