자동차 소프트웨어 분야를 공부하거나 실무 프로젝트를 시작하면 가장 먼저 접하게 되는 개념 중 하나가 AUTOSAR이다.
그리고 AUTOSAR를 제대로 이해하려면 단순히 이름만 아는 것이 아니라
전체 구조가 왜 그렇게 설계되었는지, 각 계층이 어떤 역할을 하는지를 이해해야 한다.
처음 AUTOSAR 구조도를 보면 Layer가 여러 개로 나뉘어 있어서 어렵게 느껴질 수 있다.
하지만 실제로는 복잡한 자동차 소프트웨어를 체계적으로 관리하기 위해 역할을 구분해 놓은 것이다.
이번 글에서는 AUTOSAR 구조를 처음 보는 사람도 이해할 수 있도록,
각 계층의 의미와 실무에서 어떤 식으로 사용되는지 자세히 설명해보겠다.
AUTOSAR 구조란 무엇인가?
AUTOSAR 구조는 자동차 ECU 소프트웨어를 하나의 프로그램으로 섞어서 개발하지 않고,
기능별로 나누어 계층화한 표준 아키텍처다.
예전 방식에서는 하나의 코드 안에 아래 내용들이 모두 섞여 있는 경우가 많았다.
- 기능 제어 로직
- CAN 통신 처리
- 센서 입력 처리
- 모터 출력 제어
- 진단 기능
- 메모리 저장 기능
이렇게 개발하면 처음에는 빠르게 만들 수 있어도, 기능이 늘어나고 프로젝트가 커질수록 유지보수가 매우 어려워진다.
하드웨어가 변경되면 여러 파일을 수정해야 하고, 다른 차종에 기능을 재사용하기도 힘들어진다.
AUTOSAR는 이런 문제를 해결하기 위해 만들어진 구조다.
기능은 기능끼리, 하드웨어 제어는 하드웨어 제어끼리, 공통 서비스는 공통 서비스끼리 분리해서 개발하도록 만든 것이다.
AUTOSAR 전체 구조
AUTOSAR Classic Platform 기준으로 보면 전체 구조는 아래와 같이 나뉜다.

각 계층은 위아래 계층과 연결되며, 자신이 맡은 역할만 수행한다.
이제 각 Layer를 하나씩 자세히 살펴보자.
1. Application Layer
Application Layer는 실제 차량 기능이 구현되는 가장 상위 계층이다.
운전자가 직접 사용하는 기능, 차량 동작과 관련된 제어 로직 대부분이 여기에 들어간다.
예를 들어 아래와 같은 기능들이 있다.
- 사이드미러 접기 / 펴기
- 파워 윈도우 열기 / 닫기
- 실내등 점등 제어
- 시트 위치 이동
- 공조 시스템 온도 제어
- 와이퍼 속도 제어
이 계층의 핵심은 무엇을 할지 결정하는 로직 이라는 점이다.
예를 들어 운전자가 스위치를 눌렀을 때 미러를 접을지, 창문을 내릴지, 램프를 켤지, 일정 시간 후 자동 정지할지...
이런 판단 로직은 모두 Application Layer에서 처리된다.
실무에서는 이 기능들을 보통 SWC(Software Component) 단위로 나눈다.
즉, 기능별 모듈로 나누어 관리한다.
2. RTE (Runtime Environment)
RTE는 AUTOSAR 구조에서 가장 중요한 연결 계층이다.
Application Layer와 하위 시스템 사이에서 데이터를 전달하고,
서로 다른 모듈들이 통신할 수 있도록 중간에서 연결해주는 역할을 한다.
쉽게 말하면 RTE는 배선 작업을 자동으로 해주는 계층 이다.
예를 들어 미러 제어 기능에서 스위치 값을 읽고 모터 명령을 내린다고 가정해보자.
개발자는 다음과 같이 사용할 수 있다.
Rte_Read_MirrorSwitch(&sw);
Rte_Write_MotorCommand(cmd);
개발자는 단순히 읽고 쓰는 API만 사용하면 된다.
실제로 그 데이터가 어디서 오는지, 어떤 모듈로 가는지, CAN을 통해 오는지, 다른 SWC가 만든 값인지 직접 알 필요가 없다.
RTE가 내부적으로 연결을 처리하기 때문이다.
즉, RTE의 장점은 다음과 같다.
- 기능 코드가 단순해진다
- 모듈 간 결합도가 낮아진다
- 재사용성이 좋아진다
- 하위 구조가 바뀌어도 상위 로직 수정이 적다
실무에서 RTE 코드를 직접 작성하는 경우는 드물고, 설정 툴을 통해 Generate하여 사용한다.
3. Basic Software (BSW)
BSW는 AUTOSAR의 공통 시스템 기능이 들어 있는 계층이다.
Application이 차량 기능이라면, BSW는 시스템이 동작하기 위해 필요한 기반 기능이라고 보면 된다.
이 영역에는 통신, 진단, 저장, 운영체제, 드라이버 등 매우 중요한 기능들이 포함된다.
BSW는 다시 여러 Layer로 나뉜다.


3-1. Service Layer
Service Layer는 ECU 전체가 공통으로 사용하는 서비스를 제공하는 계층이다.
대표적으로 OS, ECU State Manager, Watchdog Manager, DCM, DEM, NvM, COM 과 같은 모듈들이 있다.
자세한 내용은 다음 페이지에서 설명하도록 하고, 이 글에서는 간단하게 생각하고 넘어가자.
Service Layer는 차량 기능이 아닌 시스템 운영에 필요한 공통 서비스 집합 이다.
3-2. ECU Abstraction Layer
이 계층은 하드웨어 차이를 숨겨주는 역할을 한다.
예를 들어 어떤 프로젝트에서는 A사 EEPROM을 쓰고, 다른 프로젝트에서는 B사 EEPROM을 사용할 수 있다.
하드웨어가 바뀌면 원래는 상위 코드도 바뀔 가능성이 높다.
하지만 ECU Abstraction Layer가 있으면 상위 코드는 동일한 방식으로 접근할 수 있다.
즉, 센서 종류가 바뀌어도, 외부 IC가 바뀌어도, 저장장치가 바뀌어도 상위 로직은 큰 수정 없이 유지할 수 있다.
이 계층은 실무에서 프로젝트 이식성과 재사용성에 큰 도움이 된다.
3-3. MCAL (Microcontroller Abstraction Layer)
MCAL은 MCU와 가장 가까운 저수준 드라이버 계층이다.
실제 하드웨어 레지스터를 제어하는 코드가 이곳에 존재한다.
대표 드라이버는 다음과 같다.
예: Dio Driver, Port Driver, Adc Driver, Pwm Driver, Spi Driver, Can Driver, Lin Driver, Wdg Driver 등등...
예를 들어 GPIO 핀을 High로 출력한다면 아래와 같은 API가 사용될 수 있다.
Dio_WriteChannel(LED_PIN, STD_HIGH);
ADC 값을 읽거나 PWM Duty를 변경하는 작업도 MCAL에서 처리된다.
Application 개발자는 MCU 레지스터 주소를 직접 다루지 않고, 표준 API를 통해 기능을 사용하게 된다.
4. Hardware Layer
가장 아래에는 실제 물리 하드웨어가 존재한다.
예: MCU, CAN Controller, LIN Transceiver, EEPROM, Motor Driver IC, Sensor IC
AUTOSAR는 상위 로직이 이 하드웨어를 직접 만지지 않도록 Layer 구조를 둔다.
그래서 하드웨어 변경에도 소프트웨어 영향이 줄어든다.
실제 동작 흐름 예시
운전자가 사이드 미러를 접기 버튼을 눌렀다고 가정해보자.
1. 운전자가 스위치를 누르면 ECU 입력 핀으로 신호가 들어온다.
2. MCAL이 GPIO 상태를 읽어 현재 버튼이 눌렸는지 확인한다.
3. 읽은 입력값은 AUTOSAR 내부 계층을 거쳐 RTE를 통해 Application SWC로 전달된다.
4. Application 로직은 입력값을 확인한 뒤 “사이드 미러 접기 동작 실행” 여부를 판단한다.
5. 접기 동작이 필요하다고 판단되면 모터 제어 명령을 RTE를 통해 하위 계층으로 전달한다.
6. 하위 드라이버는 PWM, SPI, GPIO 등의 제어를 수행하여 실제 모터 드라이버 IC를 동작시킨다.
7. 최종적으로 사이드 미러 모터가 구동되며 사이드 미러가 접히게 된다.
이 과정을 통해 단순한 버튼 입력 하나도 구조적으로 처리된다.
정리
AUTOSAR 구조는 단순히 Layer를 나눈 것이 아니다.
복잡한 자동차 소프트웨어를 안전하고 재사용 가능하게 만들기 위한 체계적인 설계 방식이다.
처음에는 용어가 많아 어렵게 느껴질 수 있다.
하지만 각 계층이 담당하는 역할만 이해하면 실무 코드, 설정 툴, 오류 분석까지 훨씬 쉽게 접근할 수 있다.
핵심만 기억하면 된다.
- 기능 판단은 Application
- 연결은 RTE
- 공통 시스템 기능은 BSW
- 실제 제어는 MCAL / Hardware
이 구조가 이해되면 AUTOSAR 공부의 절반은 끝난 것이다.
'AUTOSAR' 카테고리의 다른 글
| ISO26262 에서 ASIL 등급이란 무엇인가? A/B/C/D 차이 완전 정리 (3) | 2026.04.17 |
|---|---|
| ISO 26262란 무엇인가? 자동차 기능 안전 완전 정리 (1) | 2026.04.17 |
| AUTOSAR ARXML 파일이란? 실무자가 반드시 알아야 할 핵심 개념 (1) | 2026.04.17 |
| AUTOSAR란 무엇인가? (0) | 2026.04.13 |
| RTE 동작 원리 이해 (Rte_Read / Rte_Write 포함) (0) | 2026.04.11 |