AUTOSAR 기반 프로젝트를 진행하다 보면 가장 자주 등장하는 용어가 있다.
- Port
- Interface
- Sender Receiver interface
- Client Server interface
- Rte_Read
- Rte_Write
- Rte_Call
처음 접하면 모두 비슷하게 느껴질 수 있다.
하지만 이 개념을 정확히 이해하지 못하면 SWC 연결이 꼬이거나, Generate 오류가 발생하거나, 구조 설계 자체가 잘못될 수 있다.
특히 Mobilgene에서는 Interface 설정이 전체 아키텍처의 시작점이기 때문에 반드시 이해하고 넘어가야 한다.
이번 글에서는 Interface의 개념, SR / CS 차이점, 그리고 실무에서 자주 볼 수 있는 예제 코드까지 정리해보겠다.
1. Interface란 무엇인가?
Interface는 SWC(Software Component) 간 통신 규칙이다.
쉽게 말하면 서로 다른 소프트웨어 컴포넌트가 데이터를 주고받기 위해 미리 정의한 약속이다.
예를 들어 아래와 같은 내용을 정의한다.
- 어떤 데이터를 전달할 것인가?
- 데이터 타입은 무엇인가?
- 값을 읽는 구조인가?
- 기능을 호출하는 구조인가?
- API 이름은 어떻게 생성될 것인가?
즉, Interface가 없으면 두 SWC는 연결될 수 없다.

2. Port와 Interface의 차이
이 부분은 AUTOSAR 입문자가 가장 많이 헷갈린다.
Port
SWC 외부와 연결되는 통신 창구이다.
데이터가 들어오거나 나가는 실제 연결 지점이다.
Interface
그 Port가 어떤 방식으로 통신할지를 정의하는 규칙이다.
쉽게 비유하면
Port = USB 포트
Interface = USB 통신 규격
포트만 있다고 동작하지 않는다.
규격이 맞아야 통신이 가능하다.
3. Sender Receiver Interface (SR)
Sender Receiver는 데이터를 전달하는 방식이다.
한쪽 컴포넌트가 값을 보내고(Sender), 다른 컴포넌트가 그 값을 읽는다(Receiver).
즉, 지속적으로 변하는 데이터를 공유할 때 사용한다.
대표 사용 예시
- 실내 온도 값
- 배터리 전압
- 와이퍼 상태
- 헤드램프 상태
- 기어 위치
- 브레이크 스위치 상태
SR 실무 예제
차량 내 센서가 측정한 실내 온도를 공조 모듈(HVAC)이 읽어서 팬 속도를 제어한다고 가정해보자.
송신 측 SWC
void Sensor_100msRunnable(void)
{
sint16 CabinTemp;
CabinTemp = Adc_CabinTempValue;
Rte_Write_PpCabinTemp_Temperature(CabinTemp);
}
코드 설명:
온도 센서 값을 읽는다.
RTE API를 통해 다른 컴포넌트에 전달한다.
Provide Port를 통해 데이터 제공 역할을 수행한다.
수신 측 SWC
void HVAC_100msRunnable(void)
{
sint16 Temp;
Rte_Read_RpCabinTemp_Temperature(&Temp);
if (Temp > 28)
{
Fan_SetHigh();
}
else
{
Fan_SetLow();
}
}
코드 설명:
센서 SWC가 보낸 온도 값을 읽는다.
온도가 높으면 팬 속도를 높인다.
Require Port를 통해 데이터를 받는다.
4. Client Server Interface (CS)
Client Server는 기능 요청 방식이다.
한 컴포넌트가 다른 컴포넌트에게 특정 기능 실행을 요청하고 결과를 반환받는다.
일반적인 함수 호출 구조와 가장 유사하다.
대표 사용 예시
- DTC 저장 요청
- EEPROM Write 요청
- 진단 서비스 실행
- CRC 계산 요청
- 시스템 초기화 요청
CS 실무 예제
오류가 발생했을 때 Application SWC가 Diagnostic SWC에게 고장 코드를 저장해달라고 요청하는 구조이다.
Client 측 코드
void MotorMonitor_Runnable(void)
{
Std_ReturnType ret;
if (Motor_Current > 50U)
{
ret = Rte_Call_RpDiag_SetDTC(MOTOR_OVERCURRENT_DTC);
if (ret == E_OK)
{
WarningLamp_On();
}
}
}
모터 과전류 발생 여부를 확인하고, 진단 모듈에 DTC 저장 요청. 성공 시 경고등 점등
Server 측 코드
Std_ReturnType Diag_SetDTC(uint16 dtcCode)
{
Dem_SetEventStatus(dtcCode, DEM_EVENT_STATUS_FAILED);
return E_OK;
}
전달받은 DTC 코드를 DEM에 저장하고, 처리 결과를 반환
SR vs CS 차이점 정리
| 항목 | Sender Receiver | Client Server |
| 목적 | 데이터 전달 | 기능 요청 |
| 구조 | 값 공유 | 함수 호출 |
| API | Rte_Read / Write | Rte_Call |
| 응답값 | 없음 | 있음 |
| 대표 예시 | 온도, 상태값, 전압 | 진단, 저장, 계산 |
초보자가 자주 하는 실수
Port만 만들고 Interface 미연결
→ Generate 오류 발생
SR인데 Rte_Call 사용 시도
→ API 구조가 다르다.
CS인데 Return 값 무시
→ 오류 처리 누락 가능성 있음
데이터 타입 불일치
→ uint8 / uint16 mismatch 자주 발생
정리
AUTOSAR에서 Interface는 단순 설정 항목이 아니다.
전체 시스템 구조를 연결하는 핵심 설계 요소이다.
- 데이터를 공유하면 SR
- 기능을 요청하면 CS
- Port는 연결 지점
- Interface는 통신 규칙
이 개념을 이해하면 Mobilgene 작업 속도와 코드 이해도가 크게 올라간다.
'mobilgene' 카테고리의 다른 글
| [RTE] RTE란 무엇인가? (실제 RTE 설정 화면) (0) | 2026.04.14 |
|---|---|
| Mobilgene 전체 구조 한방 정리 (입문 → 실무 연결) (0) | 2026.04.11 |
| 기본 동작 8. RTE Generate 및 코드 확인 (3) | 2026.04.11 |
| 기본 동작 7. Harmonize (하모나이즈) (0) | 2026.04.10 |
| 기본 동작 6. Runnable 생성 및 동작 추가 (0) | 2026.04.10 |