AUTOSAR Communication Stack — AUTOSAR 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 COM | RTE에 signal-oriented 인터페이스 제공, signal ↔ I-PDU packing/unpacking |
| Generic NM Interface | NM 요청/상태를 bus-specific NM으로 분배하는 dispatcher. 게이트웨이 ECU에서는 NM coordinator 기능 포함 (다중 네트워크 동기 wake/sleep) |
| DCM (Diagnostic Communication Manager) | 진단 통신 엔진. UDS 서비스 처리 |
| 버스별 전용 모듈 | 예시 |
|---|---|
<Bus> Transport Protocol | CAN TP(CanTp), FrTp, J1939Tp, LinTp |
<Bus> State Manager | CanSM, FrSM, LinSM, EthSM |
<Bus> NM | CanNm, FrNm, LinNm, UdpNm |
4개 버스 스택
| 버스 | 하위 Interface | Transport Protocol | 특징 |
|---|---|---|---|
| CAN | CAN Interface | CAN TP | CAN 2.0 / CAN FD(HW 지원 시). State Manager(CanSM)가 Start-up·Shutdown 담당 |
| LIN | LinIf | LinTp | ISO 17987 compliant. Schedule Table Manager(Master 측), Wake/Sleep 인터페이스 |
| FlexRay | FrIf | FrTp / FrArTp 택1 | FrTp = FlexRay ISO TP, FrArTp = AUTOSAR R3.x 호환 레이어 |
| Ethernet | SoAd (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 데이터 흐름
| 모듈 | 역할 |
|---|---|
| Com | PDU data를 signal 단위로 read/write하는 인터페이스 제공 |
| PduR | 주기적 PDU 송신, Notification(Time Out / Data Received / Data Send), Routing table에 따른 Source↔Destination PDU 전달 |
| CanIf | CAN Driver 수신 PDU를 상위로 전달, 상위 PDU를 CAN Driver로 전달, CAN Controller·Transceiver 제어, Bus-Off를 CanSM에 전달 |
| Can | CAN Controller 활성/비활성, CAN 인터럽트 핸들러(RX/TX/Bus-off) |
| CanTrcv | CAN 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 |
| DEM | Bus-off 발생 시 해당 진단 Event 저장 (Diagnostic Event Manager) |
Network Management Stack — NM 조정
| 모듈 | 역할 |
|---|---|
| Nm | Network의 normal operation ↔ bus-sleep 전환 조정, 전체 노드 상태 감지, 현재 NW 상태를 ComM에 전달, Network request/release를 OsekNm에 전달, 클러스터 동기 sleep 진입 제어 |
| OsekNm | Nm PDU 송수신으로 NW 상태 감시, 모든 제어기의 동시 bus sleep 진입, NM Interface 모듈에 NW 상태 통지 |
OSI 매핑
CAN 네트워크 플로우의 AUTOSAR 모듈별 OSI 계층:
| OSI Layer | AUTOSAR 위치 | 대표 API (예) |
|---|---|---|
| Application | SW-C | Rte_Send/Write, Rte_Receive/Read (AUTOSAR Interface) |
| — | RTE | (경계) |
| Presentation / Interaction (L6) | Com, PduR | Com_Transmit, Com_RxIndication, PduR_ComTransmit |
| Network (L3) | CanTp | CanTp_Transmit, CanTp_RxIndication |
| Data Link (L2, ECU 측) | CanIf | CanIf_Transmit, CanIf_RxIndication |
| Data Link (L2, MCAL 측) | Can | Can_Write, Can_IReceiveHandler |
| Physical (L1) | CAN HW | CanH / 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 ElementDBC의 개별 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:
- Timing task에서 주기적으로 Runnable 실행
- Runnable에서 RTE API(
Rte_Write_*)로 signal write - COM 송신 Buffer에 signal 저장 → Communication stack 처리로 message 전송
수신 Flow:
- Communication stack이 수신 message를 COM의 signal에 저장
- OS Notification 호출 → RTE buffer로 복사
- Timing task가 주기적으로 Runnable 실행
- Runnable이 RTE API(
Rte_Read_*)로 signal read
Signal-based Event Communication
송신 Flow:
- Event 발행 → 연결된 task 실행
- Task 내 Runnable 실행
- Runnable이 RTE Write API → signal이 PDU 버퍼에 복사
- COM 송신 Buffer 저장 → Communication stack으로 message 전송
수신 Flow:
- Communication stack이 수신 message를 COM의 signal에 저장
- OS Notification → RTE buffer 저장
- Data received event로 Event task 활성화
- Event task의 Runnable이 RTE API로 signal read
Timing vs Event: Timing은 주기 보장이 중요한 제어 신호 (주기 = task period), Event는 상태 변경·불규칙 트리거 (latency 최소화). 실제 시스템은 두 패턴을 혼합 사용.