![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cU06CG/btsLUD4VJWG/pZiH7ctLgmzLB7x8iafIW1/img.png)
AUTOSAR는 자동차 소프트웨어의 표준화를 위해 개발된 플랫폼으로, Classic Platform과 Adaptive Platform 두 가지로 나뉩니다.각 플랫폼은 자동차 소프트웨어의 다른 요구 사항을 충족하기 위해 설계되었으며, 주요 차이점은 용도와 아키텍처 설계에 있습니다. AUTOSAR 바로가기👆 🔹 1. AUTOSAR Classic Platform✅ 개요기존의 자동차 전자제어 유닛(ECU)에서 사용되는 소프트웨어 표준 플랫폼.실시간 제어, 안전성, 신뢰성이 중요한 시스템에 적합.고정된 작업 흐름(Static Scheduling)을 기반으로 동작. ✅ 주요 특징실시간 제어고정된 주기(Tick) 기반으로 작업을 스케줄링.하드 리얼타임 요구 사항(Strict Real-Time)을 충족.고정..
![](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/EXDoL/btsLP39551R/M5E2jLV3tMmPmYvBk0u6YK/img.png)
Git은 코드 버전 관리를 위한 필수 도구이며, 효율적으로 사용하려면 자주 사용하는 명령어를 익혀야 합니다.아래는 Git에서 자주 사용하는 명령어를 카테고리별로 정리한 목록입니다. 🔹 1. Git 기본 설정Git을 처음 설정할 때 사용되는 명령어들입니다.git config --global user.name "사용자이름" # 사용자 이름 설정git config --global user.email "이메일주소" # 사용자 이메일 설정git config --global core.editor "vim" # 기본 에디터 설정 (vim, nano, code 등)git config --global color.ui auto # Git 명령어 출력 색상 활성화git config --..
![](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/bDb1fG/btsK1RLvQUZ/hHMdrYjItHKAkJsKJcH3f1/img.webp)
SwipeView는 QML에서 여러 페이지를 스와이프 제스처를 통해 좌우로 넘길 수 있는 컨테이너입니다. 스마트폰에서 화면을 손가락으로 왼쪽이나 오른쪽으로 넘기며 페이지를 전환하는 것과 같은 동작을 구현할 수 있습니다. 1. SwipeView 개념 설명SwipeView는 여러 개의 페이지를 하나로 묶어서 사용자가 손가락으로 스와이프하여 쉽게 전환할 수 있도록 만들어 줍니다.각 페이지는 일반적으로 Rectangle, Item 또는 Component와 같은 개별 QML 아이템으로 구성될 수 있습니다.탭 UI나 사진 앨범 뷰어 같은 페이지 전환 인터페이스를 구현할 때 매우 유용합니다. 2. 사용 예시자동차 시스템에서 탑승자가 오디오, 내비게이션, 차량 설정과 같은 다양한 기능을 빠르게 탐색할 수 있..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/c8Q4Wj/btsK07Ap7oc/H6Yn7H5lm6kvYs0wnOUtu0/img.webp)
1. 개념 설명Component는 QML에서 재사용 가능한 UI 요소를 정의할 때 사용하는 도구입니다. 간단히 말해, 여러 곳에서 반복해서 사용해야 하는 UI나 로직을 모아 하나의 블록으로 만들어주는 기능입니다. 일종의 레고 블록처럼, 필요할 때마다 원하는 위치에 가져와 사용할 수 있도록 만들어줍니다. 이렇게 하면 코드가 더 깔끔해지고, 유지보수가 쉬워집니다. 2. 사용 예시자동차의 라디오 버튼이나 에어컨 조절 버튼을 예로 들어볼게요. 이 버튼들은 디자인이 같고 반복해서 사용됩니다. 각 버튼을 일일이 그리는 대신, 한 번만 정의하고 나중에 필요할 때 가져다 쓰면 훨씬 간편하겠죠? Component는 이렇게 반복적인 작업을 줄여줍니다. 3. QML Component의 구조와 예제 코드Compon..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cAzfbB/btsKYYKLpBT/I8TyjI4y41x4wh4q7bJV5K/img.webp)
QString::prepend()는 C++의 QString 클래스에서 문자열의 앞부분에 다른 문자열을 추가할 때 사용하는 메서드입니다. 간단히 말해서, 기존 문자열의 앞에 새로운 문자열을 덧붙이는 역할을 합니다. 1. 개념 설명prepend() 메서드는 기존의 문자열을 수정하여, 새로운 문자열이나 문자, 또는 다른 QString 객체를 앞에 추가합니다. 문자열을 변경할 때 원래 문자열을 바꾸기 때문에 반환값이 필요하지 않습니다.예를 들어, "World"라는 문자열에 "Hello "를 앞에 추가하면 최종 문자열은 "Hello World"가 됩니다. 2. 기본 사용법QString & QString::prepend(const QString &str);매개변수: str - 기존 문자열 앞에 추가할 문..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/yzRaO/btsKWLdnFAI/RKXFKDPZvRRNrRj5fINcz0/img.webp)
QML에서 자주 사용되는 컨트롤들은 UI를 구성하는 주요 요소로, 애플리케이션의 사용자 인터페이스를 효과적으로 구현하는 데 필수적입니다. 각각의 컨트롤은 특정한 목적을 가지며, 사용되는 용도에 따라 적절히 활용할 수 있습니다. 여기에서는 QML에서 자주 사용되는 주요 컨트롤을 용도별로 나누어 설명하고, 각 컨트롤의 예제와 주의 사항을 함께 안내하겠습니다. 1. 레이아웃 및 위치 지정 컨트롤(1) Rectangle: UI 기본 요소로 레이아웃을 만드는 데 자주 사용됩니다.용도: 배경, 컨테이너, 구분선을 만드는 등 기본적인 UI의 틀을 정의할 때 사용됩니다.예시:Rectangle { width: 200 height: 100 color: "lightblue"}이 예제에서는 Rectang..