1. 프로젝트 배경
최근 자동차 산업은 단순한 기계 중심 구조에서 벗어나 소프트웨어 중심의 SDV(Software Defined Vehicle) 형태로 빠르게 변화하고 있다.
이러한 변화 속에서 차량 내부의 다양한 ECU(Electronic Control Unit) 간 통신을 담당하는 CAN 통신은 여전히 핵심적인 역할을 수행하고 있다.
본 프로젝트에서는 CAN 통신을 직접 구현하고 분석함으로써, 자동차 소프트웨어의 기초 구조를 이해하는 것을 목표로 한다.
2. 프로젝트 목표
- 개념적 목표 : Controller Area Network(CAN) 통신 구조 및 동작 원리를 이해한다.
- SW 개발 역량 목표 : Linux 기반 환경에서 C++을 활용하여 CAN 데이터를 수신·처리하는 응용 소프트웨어를 구현한다.
- HW 설계 역량 목표 : CAN 통신의 신뢰성을 확보하기 위한 하드웨어 인터페이스 및 주변 회로를 설계한다.
3. 프로젝트 개요
본 프로젝트는 차량 내부 네트워크에서 사용되는 CAN 통신을 기반으로,
차량 데이터를 송수신하고 이를 분석하는 소프트웨어를 구현하는 것을 목표로 한다.
특히 Linux의 SocketCAN 환경을 활용하여 실제 차량 통신 구조와 유사한 환경을 구성하고,
C++ 기반으로 데이터 처리 로직을 설계한다.
4. 전체 시스템 구조
본 프로젝트의 전체 구조는 다음과 같다.
[CAN 데이터 생성기] → [CAN 버스] → [C++ 수신 프로그램] → [데이터 분석 및 출력]
- CAN 데이터 생성기: 차량 속도, RPM 등의 데이터를 생성
- CAN 버스: 데이터 전달 (vcan 기반 가상 환경 사용)
- C++ 수신 프로그램: CAN 메시지 수신 및 파싱
- 데이터 분석: 사람이 이해할 수 있는 형태로 출력
5. 개발 방법론 (V-model 적용)

본 프로젝트는 차량업계에서 많이 사용하는 V-model 기반 개발 프로세스를 참고하여, 요구사항 정의부터 구현 및 검증 단계까지 체계적으로 진행하고자한다.
V-model 구조는 다음과 같이 구성된다. "요구사항 정의 → 시스템 설계 → 상세 설계 → 구현 → 단위 테스트 → 통합 테스트"
이를 본 프로젝트에 적용하면 다음과 같다.
- 요구사항 정의: 차량 내 ECU 간 CAN 통신을 통해 속도 및 엔진 데이터를 실시간으로 송수신하고 이를 안정적으로 처리하는 시스템을 개발한다.
- 시스템 설계: 전체 데이터 흐름 및 구조 설계
- 상세 설계:
- HW 상세설계 : 회로도, 인터페이스 pinmap
- SW 상세설계 : CAN ID 및 데이터 포맷 정의
- 구현: C++ 기반 CAN 수신 프로그램 개발
- 단위 테스트: CAN 메시지 송수신 검증
- 통합 테스트: 전체 시스템 동작 검증
6. 향후 진행 계획
본 프로젝트는 다음과 같은 순서로 진행할 예정이다.
- CAN 통신 이론 정리
- 시스템 아키텍처 설계
- Linux CAN 환경 구축 (SocketCAN)
- C++ 기반 CAN 수신 프로그램 구현
- 프로그램 탑재 환경 설계(PC or MCU, FPGA 등)
- 테스트 및 결과 분석
7. 기대 효과
본 프로젝트를 통해 다음과 같은 역량을 확보할 수 있을 것으로 기대한다.
- 자동차 네트워크(CAN)에 대한 이해
- 임베디드 Linux 환경에서의 개발 경험
- C++ 기반 데이터 처리 및 시스템 설계 능력
- 실제 자동차 소프트웨어 개발 프로세스(V-model)에 대한 이해
📌 마무리
이번 프로젝트는 단순한 통신 구현을 넘어서,
자동차 소프트웨어 개발 흐름을 직접 경험하는 것을 목표로 한다.
다음 글에서는 CAN 통신의 기본 개념과 구조에 대해 정리할 예정이다.