AUTOSAR RTE6 실습#
0. 목차#
- Project 생성
- VFB level
- RTE level
- C coding
- ECU Mapping
- ECU Extract
- ECU Configuration
- IO Configuration
- OS Configuration
- RTE Configuration
- Generate & Build
1. Project 생성#
-
File
→Import
→General
→Existing Projects into Workspace
→Next
선택
-
Browse..
→ Base Project 선택 →Copy projects into workspace
체크 →Finish
클릭
Copy projects into workspace
는 원본 프로젝트 보존 목적 위함.
2. VFB level#
Configuration → System → Swcd_App
우클릭 →New
→AUTOSAR File
선택- Package name & Package name :
App_Rte
→Finish
클릭 - 생성한 AUTOSAR 파일의 아래 방향 화살표 클릭.
-
App_Rte[ARPackage]
에서 우클릭 →New
→Application Sw Component Type
클릭.(SWC 생성) -
SWC 더블클릭 → Short Name :
SWC_SeatSwitch
- Support Multiple Instantiation :
false
- 같은 방법으로
SWC_SeatHeatingControl
생성. App_Rte[ARPackage]
우클릭 →New
→Application Sw Component Type
클릭 → Short Name :SWC_SeatHeatingControl
, Supports Multiple Instantiation :false
Sender Receiver Interface 생성#
- App_Rte[ARPackage]우클릭 → New → Sender Receiver Interface
- 생성한 SRI 더블클릭 → Short Name :
If_SeatSwitch
- Is Service :
false
- Data Elements →
New
클릭. - Short Name :
PassengerDetected
- Type :
...박스
클릭 →boolean[/AUTOSAR...]
을 선택. - 동일한 방식으로
HeatStrength
추가 - Type :
uint16
SWC_SeatSwitch 설정#
-
Ports
→+
클릭 →Sender Receiver Interface
→Sender
→If_SeatSwitch
선택 →OK
클릭.
-
Short Name :
P_SeatSwitch
- Communication Spec → Data Elements →
PassengerDetected
→Enable Provided Com Specs
를 체크 -
동일한 방식으로
HeatStrength
→Enable Provided Com Specs
-
Ports 우측의
+
클릭 →Client Server Interface
→Client
→IoHwAb_If_DigDir
→OK
클릭 - Short Name :
R_SW06
-
Communication Spec → Operations →
ReadDirect
→Enable Provided Com Specs
체크 -
Ports 우측의
+
클릭 →Client Server Interface
→Client
→IoHwAb_If_AnalnDir
→OK
클릭 -
Short Name :
R_Pot
- Communication Spec → Operations →
ReadDirect
→Enable Provided Com Specs
체크
SWC_SeatHeatingControl 설정#
SWC_SeatHeatingControl
→Ports
-
상단 Ports 우측의
+
클릭 →Send Receiver Interface
→Receiver
→If_SeatSwitch
→OK
클릭
-
Short Name :
R_SeatSwitch
- Communication Spec → Data Elements →
PassengerDetected
→Enable Provided Com Specs
체크 -
Init Value :
Numerical Value Specification
체크 -
동일한 방식으로
HeatStrength
→Enable Required Com Specs
체크 - Init Value :
Numerical Value Specification
체크 - Ports 우측의
+
클릭 →Client Server Interface
→Client
→IoHwAb_If_DigDir
→OK
클릭 - Short Name :
R_LED_Red
- Communication Spec → Operations →
WriteDirect
로 선택 →Enable Provided Com Specs
를 체크 - Ports 우측의
+
클릭 →Client Server Interface
→Client
→IoHwAb_If_Pwm
→OK
클릭 - Short Name :
R_LED_Blue
- Communication Spec → Operations →
SetDutyCycle
로 선택 →Enable Provided Com Specs
를 체크
CSWC 생성 및 연결#
- 위의 SWC를 묶어서 관리하기 위해 CSWC를 추가.
App_Rte[ARPackage]
우클릭 →New
→Composition Sw Component Type
-
Short Name :
CSWC_SeatHeatingSystem
-
Components and Ports
→ 상단의 Components 우측+
선택 → 생성한SWC_SeatSwitch
와SWC_SeatHeatingControl
체크 →OK
클릭 -
Automatic Connection
→R_SeatSwitch
선택 → 우측 상단+
클릭. P_SeatSwitch
체크 →OK
클릭
3. RTE level#
Runnable 설정: SWC_SeatSwitch#
- 작업 창의
SWC_SeatSwitch
클릭 –>Runnable
클릭 - 상단 Runnables의 우측
+
클릭 - Short Name :
RE_SeatSwitch
, Symbol :SeatSwitch_func
-
Can Be Invoked Concurrently :
false
-
RTE Event
→Add
→Timing Event
→OK
클릭 - 생성된
Timing Event
더블클릭 → Period :100msec
→OK
클릭
Operation/Mode/Trigger Access
→Add
.Synchronuous Server Call Points
(SSCP) →R_Pot.ReadDirect
&R_SW06.ReadDirect
를 선택 →OK
클릭.Data/Parameter Access
→Add
.Data Sent Points
(DSP) →P_SeatSwitch.HeatStrength
&P_SeatSwitch.PassengerDetected
선택 →OK
클릭.
Runnable 설정: SWC_SeatHeatingControl#
- 작업 창의
SWC_SeatHeatingControl
→Runnables
클릭 - Short Name :
RE_SeatHeatingControl
, Symbol :SeatHeatingControl_func
- Can Be Invoked Concurrently :
false
-
RTE Event
→Add
. -
Data Received Event
→R_SeatSwitch.HeatStrength
&R_SeatSwitch.PassengerDetected
선택 →OK
클릭. -
Operation/Mode/Trigger Access
→Add
. -
Synchronous Server Call Points
(SSCP) →R_LED_Blue.SetDutyCycle
&R_LED_Red.WriteDirect
선택 →OK
클릭. -
Data/Parameter Access
→Add
. Data Received Points By Arguments
(DRPBA) →R_SeatSwitch.HeatStrength
&R_SeatSwitch.PassengerDetected
선택 →OK
클릭.
4. C coding#
Static Code
→Reference Code
→src
에서 우클릭 →New
→File
- File name :
SWC_SeatSwitch.c
- 동일한 방법으로
SWC_SeatHeatingControl.c
생성 - C 코드 작성
5. ECU Mapping#
Configuration
→System
→Composition
→RootComposition.arxml
→CSWC_RootComposition
더블클릭.- 하단의
Components and Ports
→+
클릭. CSWC_SeatHeatingSystem
선택 →OK
클릭.> SWC를 따로 넣지 말고 묶음 단위(CSWC)로 넣기
#
6. ECU Extract#
- 상단의
Auto-Wiz
→System Configuration
&ECU Extract
→ECU Software Components Mapping
클릭. - 우측 하단의
OK
를 누른 후 추가하고자 하는 SWC와 Connector가 적용되는지 확인한 후Apply
클릭.
7. ECU Configuration#
OS Configuration#
-
Auto-Wiz
→ECU Configuration & Code Generation
OS 1.3.0
클릭. -
Task
→ 우측 상단+
클릭. - Short Name :
OsTask_SWC_SeatSwitch_100ms
-
Activation :
1
, Priority :117
-
같은 방식으로
+
클릭 - Short Name :
OsTask_SWC_SeatHeatingControl
-
Activation :
1
, Priority :118
-
Alarm
→ 우측 상단+
클릭 -
만든 알람을 더블 클릭 하여 알람 안으로 접근.
-
Short Name :
OsAlarm_SWC_SeatSwitch_100ms
-
Counter Ref*의
Browse..
클릭 -
OsCounter_Main
선택 →OK
-
Counter를 설정 후
Action
클릭. -
Number of containers : 1
→OK
-
Activate Task
선택 →OK
클릭. -
Browse..
클릭. -
OsTask_SWC_SeatSwitch_100ms
선택 →OK
-
Application
→OsApplication0
더블클릭 -
App Alarm Ref 의
Browse..
클릭. (만든 Alarm 추가) -
이미 그룹에 포함되어 있는 Alarm들을 확인할 수 있고, 우리가 만든 Alarm을 추가시켜주는 과정.
-
App Task Ref의
Browse..
클릭.(만든 2개의 Task를 그룹에 포함시켜주기 위함.) -
두 개 모두 선택(ctrl + 클릭) →
Add
→OK
RTE Configuration#
-
Configure ECU and Generate Code
→Generate ECU Configuration
-
Next
→Rte
선택 →Next
→Rte: Generate SwInstance configuration
체크 →Finish
클릭 -
RTE event to Task Mapping
클릭 SWC_SeatSwitch Mapping
(주기 Task)-
unMapped
→OsTask_SWC_SeatSwitch_100ms
-
TE_RE_SeatSwitch
선택 →Add
SwcInstance_SWC_SeatHeatingControl
→unmapped
선택 →OsTask_SWC_SeatHeatingControl
선택 →DRE_RE_*
선택 →Add
클릭.
I/O Configuration#
-
Configuration
→Ecu
→Mcal
→Ecud_Port.arml
→Port
더블클릭. 다음 아래의Container
→PortContainer_A
→Pin
안에 담겨 있는 핀 확인 -
PTA31
을 더블클릭 - Initial Mode :
PORT_ALT1_FUNC_MODE
-
Mode :
EMIOS_1_EMIOS_1_CH_14_H_OUT
선택 - >OK
클릭 -
PTA11
더블클릭 - Direction :
PORT_PIN_IN
-
Initial Mode :
PORT_ANALOG_INPUT_MODE
-
Configuration
→Ecu
→Mcal
→Ecud_PWM.arxml
→Pwm
더블클릭 →Channel
클릭 -
우측 상단의
+
버튼 클릭하여 Channel을 생성. - Short Name :
PwmChannel_PTA31
- Id :
1
- Class :
PWM_FIXED_PERIOD
-
Period Default :
8191
, Dutycycle Default :0
-
이후 Hw Channel을 설정해야함. 필요한 Hw Channel 생성을 위해 이동.
-
Emios
클릭. PwmEmios_0
→Channels
→PwmEmiosChannels_0
-
우측 상단의
+
버튼으로 채널을 생성. -
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
-
다음은 Bus Ref를 설정해야 하지만 필요한 Bus Ref가 없기에 생성해주어야 함.
-
Mcal
→Ecud_Mcl.arxml
→Mcl
더블클릭. -
Emios Common
으로 이동. -
EmiosCommon_1
→Emios 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
-
Pwm
→Emios
→PwmEmiosChannels_CH14
의 Bus Ref를 생성한EmiosMasterBus_1_CH8
로 설정. -
Channel
→Hw Channel
,Mcu Clock Reference
설정. -
Hw Channel :
PwmEmiosChannels_CH14
-
Mcu Clock :
CORE_CLK
-
Mcal
→Ecud_IoHwAb.arxml
→IoHwAb
더블클릭. All Contents
클릭.IoHwAbConfig
→IoHwAbAnalogInputDirect
→Logical
- 기존에 있던
IoHwAbAnalogInputDirectLogical_Test2
의 이름을 다음과 같이IoHwAbAnalogInputDirectLogical_Pot
로 변경. IoHwAbPwm
→Logical
→+
버튼 클릭 Short Name :IoHwAbPwmLogical_LED_Blue
, Callback Via Rte :false
Hw Pwm Ch Ref :PwmChannel_PTA31
I/O Mapping#
- I/O Mapping을 위해 다시 상단의 초록색 네모 (
Configure ECU and Generate Code
) 클릭 → 하단의Service and I/O
클릭 →IoHwAb
의 화살표 클릭 P_IoHwAb…_Pot
선택 → Automatic Connection의 우측+
클릭Respect Naming Rule
해제 →R_Pot
선택 →OK
클릭- 동일한 방식으로
P_IoHwAb…_LED_Red
→R_LED_RED
와 연결. P_IoHwAb…_SW06
→R_SW06
과 연결.P_IoHwAb…_LED_Blue
→R_LED_Blue
와 연결.
8. Generate & Build#
Build
→Scons.arxml
→SCons
더블클릭 후-
하단의
All Contents
→RTSW
→Generation
→Module
-
Rte
폴더 찾기 -
오른쪽 창에서 Input Files List 우측의
Add
를 클릭
-
'App_Rte'(이전에 생성한 AUTOSAR file이름) 입력 →
Add
→OK
클릭 -
좌측 상단 망치의 화살표 클릭 → Build