![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/DbXtA/btsLPrRkQvH/8LkjvRdsbaIZlctcf25kE0/img.png)
Google Test(GTest)는 C++ 코드의 단위 테스트(Unit Test)를 작성하고 실행할 수 있도록 도와주는 Google에서 개발한 오픈소스 테스트 프레임워크입니다.✅ C++ 표준 라이브러리를 활용하며, 테스트 자동화, 어설션(assertions), 테스트 픽스처(Test Fixtures) 등의 기능을 제공합니다. 소스 다운로드👆 📌 Google Test의 기본 개념어설션(Assertions) → 기대하는 값과 실제 값이 일치하는지 검사하는 명령어 (EXPECT_EQ, ASSERT_TRUE 등)테스트 케이스(Test Cases) → 특정 기능을 테스트하는 함수 (TEST() 사용)테스트 픽스처(Test Fixtures) → 여러 테스트에서 공통적으로 사용할 초기화/해제 코드를 제공 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b6iCke/btsLGkFZhi0/pZKlNSSUmLjsukXls8Pdp1/img.png)
CAN TP는 ISO 15765-2 표준에 정의된 전송 계층 프로토콜로, 클래식 CAN(CAN 2.0)의 8바이트 데이터 전송 한계를 극복하기 위해 설계되었습니다.CAN TP는 데이터를 여러 개의 CAN 프레임으로 나누어 전송하고, 수신 측에서 이를 조립하여 원래 데이터를 복원하는 역할을 합니다. 1. CAN TP가 필요한 이유클래식 CAN은 한 프레임당 최대 8바이트의 데이터만 전송 가능차량 진단(OBD-II, UDS) 및 ECU 업데이트 등에서 대량의 데이터 전송 필요CAN TP는 데이터를 여러 개의 프레임으로 분할 전송하여 이러한 문제를 해결 2. CAN TP 프레임 형식CAN TP는 데이터 크기에 따라 4가지 유형의 프레임을 사용합니다.1️⃣ Single Frame (SF)데이터 크기가 7바이트 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b7FLIJ/btsLEJMniXQ/yG4Q9Pk0oGGK5Knk3P9fY1/img.png)
🚗 AUTOSAR (AUTomotive Open System ARchitecture)의 데이터 통신 계층(Communication Stack)은 ECU 간 네트워크 통신을 표준화하기 위해 구성됩니다.AUTOSAR의 통신 스택은 각 계층마다 특정 역할을 담당하는 모듈(Module)로 구성되며, 아래와 같은 계층 구조를 가집니다. 1. AUTOSAR 통신 스택 개요📌 계층별 구조 Application Layer응용 계층Runtime Environment (RTE)RTECommunication Services (COM, PDUR, DCM, SoAd)통신 서비스 계층Communication Hardware Abstraction (CanIf, LinIf, FrIf, EthIf) 통신 서비스 추상화 계층Mic..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/2XctV/btsLDKcfZtl/zjKw16PLfKXOncwutb7FjK/img.png)
CMake 가이드1. CMake란 무엇인가?CMake는 빌드 과정을 자동화하기 위한 크로스 플랫폼 도구입니다. CMakeLists.txt라는 설정 파일을 기반으로 플랫폼에 맞는 빌드 파일(예: Makefile 또는 Visual Studio 프로젝트 파일)을 생성합니다. 2. 프로젝트 구조CMake를 사용할 때의 일반적인 프로젝트 구조:project/├── src/│ ├── main.cpp│ └── hello.cpp├── include/│ └── hello.h└── CMakeLists.txt 3. CMakeLists.txt 작성# 최소 CMake 버전cmake_minimum_required(VERSION 3.10)# 프로젝트 이름project(HelloApp)# 헤더 파일 경로 설정inc..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/v4n6O/btsKIRY3A34/pNyI6F4Oo9NTTb3XF00Ij1/img.webp)
syscall(__NR_getpid)와 syscall(__NR_gettid)는 각각 프로세스 ID와 스레드 ID를 얻기 위한 시스템 호출입니다. 이 두 호출의 차이점은 주로 프로세스와 스레드의 ID를 다루는 방식에 있습니다. 안드로이드와 리눅스 같은 유닉스 기반 시스템에서는 이 둘을 구별해서 사용해야 하는 상황이 자주 발생합니다. 아래에서 이 둘의 차이와 각각의 목적에 대해 설명하겠습니다. syscall(__NR_getpid)getpid() 시스템 호출은 현재 실행 중인 프로세스의 ID (Process ID, PID)를 반환합니다.프로세스는 독립된 실행 단위이며, 여러 스레드가 한 프로세스 내에서 실행됩니다.모든 스레드는 동일한 프로세스 ID를 공유합니다. 즉, 한 프로세스 내의 스레드들이 호출한 ..