본문 바로가기
mobilgene

[RTE] RTE란 무엇인가? (실제 RTE 설정 화면)

by Autosar 2026. 4. 14.
반응형


AUTOSAR를 처음 접하면 가장 많이 듣는 단어 중 하나가 바로 RTE(Runtime Environment) 이다.
SWC를 만들고 Port를 연결하고 Generate를 누르면 항상 생성되는 영역이지만,

실제로 어떤 역할을 하는지 정확히 이해하지 못한 채 사용하는 경우도 많다.

 

이번 글에서는 RTE가 왜 필요한지, 구조는 어떻게 되어 있는지, 실무에서는 어떻게 사용하는지,

그리고 첨부한 설정 화면은 무엇을 의미하는지까지 한 번에 정리한다.

 

1. RTE(Runtime Environment)란?

 

RTE는 AUTOSAR에서 Software Component(SWC) 와 Basic Software(BSW), 그리고 다른 SWC 사이를 연결해주는 미들웨어 계층이다.

 

쉽게 말하면 다음과 같다.

 

- Application 코드와 ECU 하드웨어 사이의 통역기
- SWC 간 데이터 전달 관리자
- AUTOSAR 구조를 실제 코드로 연결해주는 자동 생성 계층

 

즉, 개발자가 직접 CAN Driver를 호출하거나 다른 모듈의 전역 변수를 직접 접근하지 않아도,

RTE를 통해 표준 방식으로 통신할 수 있게 된다.

 

2. 왜 RTE가 필요한가?

 

기존 임베디드 프로젝트에서는 아래와 같은 방식이 많았다.

 

extern uint8 VehicleSpeed;

extern uint8 IgnitionState;

 

이 방식은 빠르지만 문제가 많다.

 

- 모듈 간 의존성 증가
- 재사용 어려움
- 유지보수 복잡
- 플랫폼 변경 시 전체 수정 필요

 

AUTOSAR는 이를 해결하기 위해 직접 접근 대신 Port 기반 통신 구조를 사용한다.

Rte_Read_P_VehicleSpeed(&speed);
Rte_Write_P_MirrorState(state);

 

이렇게 하면 내부 구현이 바뀌어도 Application 코드는 유지된다.

 

3. RTE의 핵심 역할

 

1) SWC 간 데이터 전달
: 한 컴포넌트가 보낸 데이터를 다른 컴포넌트가 읽을 수 있게 연결한다.


2) Runnable 실행 연결
: SWC 내부 함수(Runnable)가 언제 실행될지 OS Task와 연결한다.

 

3) BSW 서비스 연결

: NvM, DEM, DCM 같은 Basic Software 기능을 Application에서 사용할 수 있게 한다.

 

4) 하드웨어 독립성 제공
: MCU가 바뀌거나 Driver가 변경되어도 SWC 코드는 그대로 유지 가능하다.

 

4. RTE 설정 화면

 

아래 화면은 Mobilgene 에서 Rte 컨테이너 전체 구조를 보여주는 설정 화면이다.

 

위 이미지에서 보이는 주요 항목을 실무 기준으로 설명하면 다음과 같다.

 

먼저 왼쪽 박스에 있는 것 부터 간단하게 설명해 보겠다.


- Bsw Module Instance: BSW 모듈 인스턴스 목록이다. 현재 프로젝트에 41개의 BSW 모듈이 등록되어 있다는 의미다.
(예: Adc, Can, CanIf, Com, Dcm, Dem, NvM, EcuM, Wdg, ...)

 

- Initialization Behavior: 초기화 동작 정의 영역이다. 시스템 부팅 시 어떤 순서로 초기화할지 설정한다.

(RTE_INITALIZATION_STRATEGE_NONE 으로 기본 설정이 되어 있어 수정 불가)

 

- Os Interaction: RTE와 OS 간 연결 설정이다. Runnable이 어떤 Task에서 실행되는지 연결된다.

(예: ASW_Task_10ms, BSW_Task_100ms, ...)

 

- Sw Component Instance: 프로젝트에 생성된 SWC 인스턴스 목록이다.

 

- Sw Component Type: 컴포넌트 타입 정의 개수다. Instance는 실제 객체, Type은 설계도라고 보면 된다.

 

- CommonPublishedInformation: 공통 메타 정보 영역이다. 툴/버전/모듈 정보 등이 포함된다.

 

- RteGeneral: SchM 관련 옵션 컨테이너 영역이다. BSW 모듈들의 Exclusive Area 보호, 스케줄링 보조 역할을 담당하는 모듈인 SchM Version Info API 항목을 true/false 설정이 담아 있다.

 

- RteGeneration: RTE 코드 생성 시 동작 방식, 검출 옵션, 최적화 정책, 메모리 정책, 런타임 보호 기능 등을 설정하는 핵심 컨테이너이다.

- 어떤 방식으로 API 생성할지?
- 오류를 검출할지?
- 속도 최적화할지?
- RAM 배치 방식
- OS 보호 기능 적용 여부
- Exclusive Area 검사 여부

 

 

하단에 To Be Configured 항목의 경우 거의 사용하진 않으나 일단은 간단하게 무엇인지 정도만 확인하자.

 

- Implicit Communication: 데이터를 자동 버퍼 방식으로 전달할지 설정한다.
- Initialization Runnable Batch: 초기화 Runnable들을 묶어서 실행하는 설정이다.
- Post Build Variant Configuration: 차종별 옵션 대응 설정이다. (예: 한국형 차량, 북미형 차량, 고급형 트림)

 

초보자가 자주 헷갈리는 개념

 

1. SWC만 만들면 동작한다?

아니다.
Port 연결 + Runnable Mapping + RTE Generate까지 해야 동작한다.

 

2. RTE 코드는 직접 수정해도 되나?

권장하지 않는다.
Generate 시 덮어쓰기 된다.

수정은 반드시 ARXML / Tool 설정에서 해야 한다.

 

3. RTE가 느린가?

 

직접 함수 호출보다 약간 오버헤드는 있지만, 유지보수성과 확장성이 압도적으로 좋다.

 

정리

 

RTE는 AUTOSAR에서 SWC와 시스템 전체를 연결해주는 핵심 통신 계층이며,
실무에서는 Port 연결, Runnable Mapping, Generate 결과 이해가 가장 중요하다.

즉, 코드만 보는 것이 아니라 RTE 설정 화면을 읽고 각 항목의 의미를 이해할 줄 알아야 실력이 올라간다.

RTE를 이해하면 AUTOSAR 구조가 훨씬 선명하게 보인다.
SWC 코딩, DEM, DCM, NvM, CAN 통신 등 주요 기능들이 결국 RTE를 통해 연결되기 때문이다.

실제 프로젝트에서는 Port 연결 누락, Runnable Mapping 오류, Generate 후 API 이름 변경 같은 이슈가 자주 발생한다.
그래서 개발자는 코드 작성 능력뿐 아니라, 설정 변경이 생성 코드에 어떤 영향을 주는지도 함께 볼 수 있어야 한다.

또한 RTE를 제대로 다루기 위해서는 OS(Task, Event, Priority) 개념 이해가 먼저 필요하다.
Runnable은 RTE가 직접 실행하는 것이 아니라, 결국 OS Task 위에서 동작하기 때문이다.

따라서 다음 글에서는 Ecud_Os.arxml 구조와 Task 설정 이해로 이어가 작성할 예정이다.

반응형