티스토리 뷰

개발/그 외 개발관련

AUTOSAR 통신 스택 계층별 모듈 설명

부캐: 개발하는 조대리 2025. 1. 7. 10:04
반응형

AUTOSAR 통신 스택 계층별 모듈 설명

🚗 AUTOSAR (AUTomotive Open System ARchitecture)데이터 통신 계층(Communication Stack)ECU 간 네트워크 통신을 표준화하기 위해 구성됩니다.

AUTOSAR의 통신 스택은 각 계층마다 특정 역할을 담당하는 모듈(Module)로 구성되며, 아래와 같은 계층 구조를 가집니다.

 

1. AUTOSAR 통신 스택 개요

📌 계층별 구조

AUTOSAR 통신 스택 개요

 Application Layer 응용 계층
Runtime Environment (RTE) RTE
Communication Services (COM, PDUR, DCM, SoAd) 통신 서비스 계층
Communication Hardware Abstraction  (CanIf, LinIf, FrIf, EthIf)  통신 서비스 추상화 계층
Microcontroller Abstraction Layer  (CAN Driver, FlexRay Driver, Ethernet Driver) MCAL
 Hardware  (FlexRay, CAN, LIN, Ethernet)    물리 계층

 

2. 각 계층별 모듈 설명

AUTOSAR 통신 스택의 각 계층별 주요 모듈을 설명하겠습니다.

1️⃣ 응용 계층 (Application Layer)

응용 계층 (Application Layer)

  • 차량의 ECU가 수행하는 고유 기능(예: 엔진 제어, 브레이크 제어, ADAS, 인포테인먼트 등)이 포함됨
  • 응용 계층은 네트워크 통신을 직접 수행하지 않음
  • RTE (Runtime Environment)를 통해 데이터를 송수신

모듈

  • 사용자 애플리케이션(User Application): 특정 ECU 기능을 수행하는 애플리케이션 코드
  • Sensor & Actuator Logic: 센서 데이터 처리 및 액추에이터 제어

 

2️⃣ RTE (Runtime Environment)

RTE (Runtime Environment)

  • 응용 계층과 통신 서비스 계층(COM 등) 간 인터페이스 역할
  • 응용 계층이 네트워크 프로토콜(CAN, LIN, Ethernet 등)에 의존하지 않고 메시지를 송수신할 수 있도록 함

모듈

  • RTE (Runtime Environment): ECU 내부에서 애플리케이션 간 데이터 교환 관리
  • AUTOSAR Interface (ARIF): ECU 간 표준 인터페이스 제공

예제: 센서 데이터 전송

cpp
void SendSensorData(uint16_t sensorValue) { Rte_Write_SensorData(sensorValue); // RTE를 통해 데이터 전송 }

 

 

3️⃣ 통신 서비스 계층 (Communication Services Layer)

통신 서비스 계층 (Communication Services Layer)

  • 네트워크 데이터 송수신을 제어하는 핵심 계층
  • 응용 계층이 네트워크 프로토콜에 직접 접근하지 않고도 통신 가능하도록 지원
  • 다양한 네트워크 프로토콜을 사용할 수 있도록 PDU Router와 COM 모듈이 메시지를 변환하여 처리

모듈

모듈명역할

COM (Communication Manager) 응용 계층에서 요청한 데이터를 송수신하고, 네트워크 프로토콜에 맞게 변환
PDUR (PDU Router) 데이터를 적절한 네트워크 프로토콜(CAN, LIN, Ethernet 등)로 라우팅
DCM (Diagnostic Communication Manager) 차량 진단(OBD-II, UDS) 메시지 처리
SoAd (Socket Adapter) TCP/IP, UDP 기반 Ethernet 통신 지원

예제: PDU Router를 통한 CAN 메시지 전송

cpp
PduInfoType pdu;
pdu.SduDataPtr = dataBuffer;
pdu.SduLength = sizeof(dataBuffer);
PduR_CanIfTransmit(PDU_ID_SENSOR_DATA, &pdu); // CAN 메시지 전송

 

 

4️⃣ 통신 하드웨어 추상화 계층 (Communication Hardware Abstraction Layer)

통신 하드웨어 추상화 계층 (Communication Hardware Abstraction Layer)

  • 네트워크 프로토콜별 인터페이스를 제공 (CAN, LIN, FlexRay, Ethernet)
  • 응용 계층이 하드웨어 차이를 신경 쓰지 않고 통신할 수 있도록 지원
  • 상위 계층(PDUR, COM)에서 보낸 데이터를 네트워크 프레임으로 변환하여 하드웨어 드라이버로 전달

모듈

모듈명역할

CanIf (CAN Interface) CAN 메시지 송수신 처리
LinIf (LIN Interface) LIN 메시지 송수신 처리
FrIf (FlexRay Interface) FlexRay 메시지 송수신 처리
EthIf (Ethernet Interface) Ethernet 프레임 송수신 처리

예제: CAN 메시지 수신 처리

cpp
void CanIf_RxIndication(PduIdType PduId, PduInfoType* PduInfoPtr) { printf("CAN 메시지 수신: ID = %d, Data = %s\n", PduId, PduInfoPtr->SduDataPtr); }

 

 

5️⃣ MCAL (Microcontroller Abstraction Layer)

MCAL (Microcontroller Abstraction Layer)

  • 하드웨어 드라이버 레벨에서 네트워크 데이터를 직접 처리
  • 하드웨어별 차이를 숨기고 AUTOSAR 표준 API를 제공
  • 통신 컨트롤러(CAN Controller, FlexRay Controller 등)를 직접 제어

모듈

모듈명역할

CAN Driver CAN 컨트롤러 직접 제어
FlexRay Driver FlexRay 컨트롤러 직접 제어
LIN Driver LIN 컨트롤러 직접 제어
Ethernet Driver Ethernet 컨트롤러 직접 제어

예제: CAN 컨트롤러 초기화

cpp
void Can_Init(void) { Can_ConfigType canConfig; canConfig.baudRate = 500000; // 500 kbps 설정 Can_SetControllerMode(CAN_CONTROLLER_ID, CAN_MODE_START); }

 

 

6️⃣ 물리 계층 (Hardware Layer)

물리 계층 (Hardware Layer)

  • 실제 네트워크 하드웨어(CAN, LIN, FlexRay, Ethernet 등)를 포함
  • 신호를 전기적 신호(Bit)로 변환하여 전송
  • CAN, LIN, FlexRay 등의 물리적인 데이터 링크 및 전송 속도를 결정

모듈

모듈명역할

CAN Bus CAN 데이터 프레임을 실제 전기 신호로 변환하여 전송
LIN Bus LIN 데이터 프레임을 신호로 변환
FlexRay Bus FlexRay 프레임을 고속 데이터로 변환
Ethernet PHY Ethernet 패킷을 물리적 신호로 변환

 

 

3. 정리

계층주요 모듈역할

응용 계층 사용자 애플리케이션 ECU 기능 수행
RTE (Runtime Environment) RTE 응용 계층과 통신 계층 연결
통신 서비스 계층 COM, PDUR, DCM, SoAd 데이터 송수신 제어
통신 하드웨어 추상화 계층 CanIf, LinIf, FrIf, EthIf 네트워크 인터페이스 관리
MCAL (Microcontroller Abstraction Layer) CAN Driver, FlexRay Driver, Ethernet Driver 하드웨어 제어
물리 계층 CAN, LIN, FlexRay, Ethernet 실제 물리적 데이터 전송

 

AUTOSAR 통신 스택을 활용

🚗 AUTOSAR 통신 스택을 활용하면 ECU 간의 통신을 표준화하고, 다양한 네트워크 프로토콜을 손쉽게 지원할 수 있음!

 

 


 

 

개인적으로 학습하면서 정리한 내용입니다.

잘못된 내용이 있을 경우 알려주시면 확인 후 수정 및 반영하도록 하겠습니다.

 

오늘도 감사합니다.(__)>