AUTOSAR Communication StackAUTOSAR Classic Platform BSW의 차량 네트워크 통신 전담 모듈군. Application 측 signal ↔ 네트워크 측 frame 변환을 담당하는 수직 스택으로, 4개 버스 시스템(CAN/LIN/FlexRay/Ethernet)에 공통 구조를 갖는다. 계층적으로는 Services Layer(Communication Services) → ECU Abstraction Layer(Communication HW Abstraction) → MCAL(Communication Drivers) 3단에 걸쳐 있으며, RTE 밑에서 μC·ECU HW·버스 종류를 모두 숨기는 것이 존재 목적이다.

Services Layer 내 위치

Communication Services는 Services Layer의 한 구역이며, 같은 계층의 System/Memory/Crypto/Off-board Communication Services와 대등하다. 구현은 μC·ECU HW 독립이며 일부만 bus 종류에 의존한다.

역할 4가지:

  • 통신 드라이버와 통신 HW 추상화 모듈에 대한 상위 통합 인터페이스 제공
  • 차량 네트워크에 대한 균일한 통신 인터페이스 제공
  • 네트워크 관리(NM)의 균일한 서비스 제공
  • 진단 통신의 균일한 인터페이스 제공
  • Application에서 protocol·message 속성을 은닉

Communication Services General

버스 종류와 무관한 공통 모듈(ECU당 1 인스턴스)과 버스별 전용 모듈의 조합이다.

공통 모듈(버스 무관)역할
AUTOSAR COMRTE에 signal-oriented 인터페이스 제공, signal ↔ I-PDU packing/unpacking
Generic NM InterfaceNM 요청/상태를 bus-specific NM으로 분배하는 dispatcher. 게이트웨이 ECU에서는 NM coordinator 기능 포함 (다중 네트워크 동기 wake/sleep)
DCM (Diagnostic Communication Manager)진단 통신 엔진. UDS 서비스 처리
버스별 전용 모듈예시
<Bus> Transport ProtocolCAN TP(CanTp), FrTp, J1939Tp, LinTp
<Bus> State ManagerCanSM, FrSM, LinSM, EthSM
<Bus> NMCanNm, FrNm, LinNm, UdpNm

4개 버스 스택

버스하위 InterfaceTransport Protocol특징
CANCAN InterfaceCAN TPCAN 2.0 / CAN FD(HW 지원 시). State Manager(CanSM)가 Start-up·Shutdown 담당
LINLinIfLinTpISO 17987 compliant. Schedule Table Manager(Master 측), Wake/Sleep 인터페이스
FlexRayFrIfFrTp / FrArTp 택1FrTp = FlexRay ISO TP, FrArTp = AUTOSAR R3.x 호환 레이어
EthernetSoAd (Socket Adaptor)TCP/UDP (TcpIp)TCP·UDP·IPv4·IPv6·ARP·ICMP·DHCP. SoAd가 TcpIp의 유일한 상위 모듈. Message ↔ UDP/TCP stream 변환

구현은 μC·ECU HW 독립이며 partial하게 bus-dependent.

CAN 통신 스택 3-sub-stack

AUTOSAR CAN Communication은 기능별로 세 서브 스택으로 구분된다.

Communication Stack — I-PDU 데이터 흐름

모듈역할
ComPDU data를 signal 단위로 read/write하는 인터페이스 제공
PduR주기적 PDU 송신, Notification(Time Out / Data Received / Data Send), Routing table에 따른 Source↔Destination PDU 전달
CanIfCAN Driver 수신 PDU를 상위로 전달, 상위 PDU를 CAN Driver로 전달, CAN Controller·Transceiver 제어, Bus-Off를 CanSM에 전달
CanCAN Controller 활성/비활성, CAN 인터럽트 핸들러(RX/TX/Bus-off)
CanTrcvCAN Transceiver HW 상태 제어 (Normal / Sleep / Standby) — CAN Driver 내 소섹션

Status Stack — 상태 제어·진단 연동

모듈역할
BswM통신 상태별 Rule-based Action 제어 (Basic Software Mode Manager)
ComM통신 제어 요청 인터페이스, CanSM에 명령 전송, Nm에 Network Request/Release 전송
CanSM각 CAN Bus에 대한 control flow 구현, 현재 상태를 ComM에 전달, CAN 통신 enable/disable 요청을 CanIf에 전달, Bus-off recovery
DEMBus-off 발생 시 해당 진단 Event 저장 (Diagnostic Event Manager)

Network Management Stack — NM 조정

모듈역할
NmNetwork의 normal operation ↔ bus-sleep 전환 조정, 전체 노드 상태 감지, 현재 NW 상태를 ComM에 전달, Network request/release를 OsekNm에 전달, 클러스터 동기 sleep 진입 제어
OsekNmNm PDU 송수신으로 NW 상태 감시, 모든 제어기의 동시 bus sleep 진입, NM Interface 모듈에 NW 상태 통지

OSI 매핑

CAN 네트워크 플로우의 AUTOSAR 모듈별 OSI 계층:

OSI LayerAUTOSAR 위치대표 API (예)
ApplicationSW-CRte_Send/Write, Rte_Receive/Read (AUTOSAR Interface)
RTE(경계)
Presentation / Interaction (L6)Com, PduRCom_Transmit, Com_RxIndication, PduR_ComTransmit
Network (L3)CanTpCanTp_Transmit, CanTp_RxIndication
Data Link (L2, ECU 측)CanIfCanIf_Transmit, CanIf_RxIndication
Data Link (L2, MCAL 측)CanCan_Write, Can_IReceiveHandler
Physical (L1)CAN HWCanH / CanL

CAN TP가 OSI L4(Transport) 가 아닌 L3(Network) 에 매핑되는 것에 주목 — ISO 15765-2가 네트워크 계층 프로토콜로 정의되어서다. CAN 자체는 L2까지만 사용한다.

DBC 파일 → AUTOSAR 매핑

CAN 네트워크 정의 파일(DBC, Vector 툴 포맷)은 AUTOSAR SW 설계에 매핑되어야 한다.

DBC의 구성:

  • Networks / ECUs / Environment variables / Network nodes / Messages / Signals
  • Message 정의: ID / Format / DLC / Tx Method / Cycle Time
  • Signal 정의: Name / Length / Byte Order / Initial Value / Send Type

Frame → Interface 매핑 체인

CAN Frame  ↔  AUTOSAR Frame  ↔  AUTOSAR PDU  ↔  AUTOSAR Interface
(DBC Message)                                    (Sender-Receiver)

CAN Message 하나가 AUTOSAR의 Sender-Receiver Port Interface로 표현된다.

Signal → Data Element 매핑 체인

CAN Signal (DBC)  ↔  AUTOSAR ISignal  ↔  AUTOSAR System Signal  ↔  Data Element

DBC의 개별 signal이 AUTOSAR Interface 내부의 Data Element로 전달된다. 즉 SW-C 작성자는 signal 이름만 보고 Rte_Write/Read를 호출하면 되고, DBC 매핑은 툴체인이 ARXML로 변환해 처리한다.

Signal-based 통신 플로우

AUTOSAR에서 SW-C가 signal을 송수신할 때, Timing task(주기적) 또는 Event task(이벤트 발생 시) 중 하나로 구동된다.

Signal-based Timing Communication

송신 Flow:

  1. Timing task에서 주기적으로 Runnable 실행
  2. Runnable에서 RTE API(Rte_Write_*)로 signal write
  3. COM 송신 Buffer에 signal 저장 → Communication stack 처리로 message 전송

수신 Flow:

  1. Communication stack이 수신 message를 COM의 signal에 저장
  2. OS Notification 호출 → RTE buffer로 복사
  3. Timing task가 주기적으로 Runnable 실행
  4. Runnable이 RTE API(Rte_Read_*)로 signal read

Signal-based Event Communication

송신 Flow:

  1. Event 발행 → 연결된 task 실행
  2. Task 내 Runnable 실행
  3. Runnable이 RTE Write API → signal이 PDU 버퍼에 복사
  4. COM 송신 Buffer 저장 → Communication stack으로 message 전송

수신 Flow:

  1. Communication stack이 수신 message를 COM의 signal에 저장
  2. OS Notification → RTE buffer 저장
  3. Data received event로 Event task 활성화
  4. Event task의 Runnable이 RTE API로 signal read

Timing vs Event: Timing은 주기 보장이 중요한 제어 신호 (주기 = task period), Event는 상태 변경·불규칙 트리거 (latency 최소화). 실제 시스템은 두 패턴을 혼합 사용.

같이 보기