반응형

Embedded System 90

Yocto Project C/C++ 애플리케이션 및 외부 라이브러리 Recipe(bb) 작성 가이드

Yocto Project 커스텀 레이어 C/C++ 빌드 환경 구축 배경과 목적Yocto Project 기반 임베디드 리눅스 시스템 개발 시 사용자 정의 C/C++ 애플리케이션과 외부 오픈소스 라이브러리를 펌웨어 이미지에 통합하는 작업은 필수적입니다. 그러나 BitBake 메커니즘과 S, WORKDIR, autotools/cmake class 활용 및 QA 감시 규칙(INSANE_SKIP 등)을 올바르게 이해하지 못하면 빌드 실패가 빈번하게 발생합니다. 본 가이드는 meta-layer 구조 내에서 C/C++ 프로그램 및 외부 라이브러리 레시피(.bb)를 올바르게 작성하고, IMAGE_INSTALL:append를 활용해 타겟 리눅스 이미지에 정밀하게 패키징하는 실무 표준 절차를 제공합니다.Yocto C/C+..

임베디드 SoC 커스텀 BSP Layer 개발 및 layer.conf 설정 방법

Yocto Project 기반 SoC 커스텀 Layer 구축 배경Yocto Project(Dunfell, Kirkstone, Scarthgap 등)를 활용한 임베디드 리눅스 시스템 개발 시, 타깃 SoC 보드의 기본 BSP(Board Support Package) 레이어만으로는 제품 전용 애플리케이션 및 드라이버 제어 환경을 완벽히 격리하기 어렵습니다.업스트림(Upstream) BSP 레이어 변경 없이 커스텀 파티션 구조, 전용 C/C++ 애플리케이션, 시스템 보정 스크립트를 독립적으로 관리하기 위해서는 전용 커스텀 레이어(Custom Layer) 생성이 필수적입니다. 본 가이드에서는 bitbake-layers 도구를 사용하여 meta-soc-custom 레이어를 신규 생성하고, 정확한 layer.con..

범용 임베디드 SoC Yocto 커스텀 이미지 빌드 가이드: local.conf, bblayers.conf 및 커널 설정

1. Yocto Project 기반 임베디드 SoC 리눅스 이미지 커스터마이징 개요임베디드 리눅스 시스템 개발 환경에서 Yocto Project(Poky)는 타겟 하드웨어에 최적화된 맞춤형 OS 이미지를 생성하는 표준 도구입니다. 본 문서에서는 범용 프로세서(Generic SoC) 기반 보드를 타겟으로 하드웨어 타겟 BSP 레이어를 연동하고, local.conf 및 bblayers.conf 설정을 수정하여 커스텀 리눅스 이미지를 빌드하는 구체적인 절차를 설명합니다.잘못 설정된 빌드 변수나 부적절한 이미지 플래싱 방식은 부트 실패를 유발합니다. 이 포스팅을 통해 범용 SoC 타겟의 U-Boot, Linux Kernel 설정 모듈 관리, BitBake 기반 패키지 제어 및 SD 카드 부팅용 wic 이미지 작..

Yocto BitBake 패키지 빌드 가이드: WORKDIR 구조 및 log.do_compile 디버깅

Yocto 프로젝트 빌드 자동화와 BitBake 태스크 실행 구조의 이해임베디드 리눅스 시스템 개발 환경에서 Yocto 프로젝트는 교차 컴파일(Cross-compilation) 환경과 파일시스템 이미지를 효율적으로 생성하는 강력한 오픈소스 빌드 시스템입니다. Yocto의 핵심 실행 엔진인 BitBake는 레시피(.bb) 파일, 클래스(.bbclass), 환경 설정 파일(.conf)로 구성된 메타데이터를 파싱하여 개별 태스크(Task)의 의존성 그래프를 생성하고 수행합니다.임베디드 임베디드 소프트웨어 엔지니어 및 시스템 아키텍트가 Yocto 빌드 시스템을 다룰 때 발생하는 대표적인 문제는 태스크 간 의존성 오설정, C/C++ 소스 컴파일 실패, 레시피 내부의 변수 스코프 문제 등입니다. 본 가이드에서는 B..

Yocto Project 핵심 개념 정리: BitBake, Poky, BSP Layer 및 Custom Recipe 작성 가이드

Yocto Project 빌드 시스템 이해: BitBake 및 OE-Core 핵심 동작 원리임베디드 리눅스 개발에서 Yocto Project는 맞춤형 배포판을 생성하기 위한 핵심 프레임워크입니다. 그러나 BitBake, Poky, OpenEmbedded-Core(OE-Core) 간의 역할 분담과 .bb 레시피의 동작 방식을 정확히 이해하지 못하면 빌드 오류 대응 및 BSP(Board Support Package) 커스터마이징에 어려움을 겪게 됩니다.본 포스팅에서는 Yocto Project의 핵심 구성 요소를 명확히 구분하고, RK3399 칩셋 기반 BSP Machine Configuration 설정 및 C 언어 기반 Custom Recipe 작성 구조를 최신 Yocto 빌드 표준에 맞춰 상세히 분석합니다..

Yocto Mickledore 기준 core-image-minimal 빌드 및 커스텀 BSP 레이어 bblayers.conf 설정 가이드

1. Yocto Project 기반 임베디드 리눅스 BSP 구축 배경과 핵심 이슈임베디드 리눅스 시스템 개발 시 타깃 하드웨어에 최적화된 커스텀 OS를 제작하기 위해 Yocto Project(Poky)가 광범위하게 활용됩니다. 그러나 Yocto의 특정 브랜치(예: Mickledore)를 사용할 때 필수 메타 레이어 누락, bblayers.conf 내 상대 경로 설정 오류, local.conf 스레드 조절 실패로 인한 CPU 병목현상이 자주 발생합니다.본 가이드는 Poky 환경에서 필수 메타 레이어를 올바르게 통합하고, BitBake 기반의 core-image-minimal 이미지를 성공적으로 교차 컴파일(Cross-Compile)하여 부팅 가능한 WIC 이미지를 생성 및 플래싱하는 디버깅 솔루션을 제공합..

Ubuntu 22.04 LTS 기반 Yocto Project Poky Kirkstone 빌드 환경 구축 및 BitBake 필수 패키지 설정 가이드

Ubuntu 22.04 LTS 기반 Yocto Project 개발 환경 구축 배경Yocto Project는 맞춤형 임베디드 리눅스 배포판을 생성하기 위한 핵심 빌드 시스템입니다. Yocto의 빌드 엔진인 BitBake는 호스트 시스템의 패키지 의존성 및 환경 변수에 매우 민감하게 반응합니다. 호스트 OS 패키지가 누락되거나 로캘(Locale) 환경 변수가 잘못 설정되면 빌드 타임에 oe-build-configuration 단계에서 정지되거나 난해한 C++ 컴파일 에러를 발생시킵니다.본 문서에서는 Ubuntu 22.04 LTS 호스트 환경에서 Yocto Project LTS 버전인 Kirkstone(4.0.x)을 안정적으로 빌드하기 위한 시스템 요건, 필수 패키지 스펙, 올바른 환경 변수 설정 절차를 다룹..

Yocto Project 기초 가이드: BitBake, Recipe 작성 및 Custom Embedded Linux Image 빌드 실전

1. Embedded Linux 개발을 위한 Yocto Project 도입 배경 및 필요성임베디드 리눅스 시스템 개발 환경에서는 타겟 하드웨어(Target Board)의 제약 조건을 충족하는 경량화된 OS 이미지가 필요합니다. 기존의 일반적인 리눅스 배포판(Ubuntu, Debian 등)을 직접 수정하거나 수동으로 Cross-Compile 환경을 구축하는 방식은 다음과 같은 문제점을 야기합니다.재현 불가능한 빌드(Non-reproducible Builds): 호스트 PC의 라이브러리 버전이나 패키지 상태에 따라 빌드 결과물이 달라집니다.의존성 관리의 복잡성: 오픈소스 라이브러리 간의 의존성(Dependency)을 수동으로 해결해야 하여 유지보수 비용이 급증합니다.스케일링 및 파편화 문제: 아키텍처(ARM..

Buildroot 산업용 임베디드 리눅스 시스템 최적화: PREEMPT_RT, Dropbear, SWUpdate A/B OTA 적용

1. Buildroot 기반 산업용 임베디드 리눅스 구축 배경: PREEMPT_RT 및 SWUpdate 필요성공장 자동화, 스마트 팩토리 게이트웨이, 산업용 로봇 등의 분야에서 사용되는 임베디드 리눅스 시스템은 24시간 연속 동작 안정성, 실시간(Real-Time) 결정성, 원격 펌웨어 업데이트(OTA) 보장이 핵심 요구사항입니다. 범용 리눅스 배포판(Debian, Ubuntu 등)은 불필요한 백그라운드 서비스와 런타임 패키지로 인해 시스템 풋프린트가 비대해지고, 전원 즉시 차단 시 파일 시스템 손상 위험이 높으며, 결정적(Deterministic) 실시간 응답성을 제공하지 못합니다.Buildroot를 사용하면 필수 커널 모듈, 드라이버, 최소한의 사용자 공간 라이브러리만 선택하여 20MB 이하의 루트 ..

Buildroot 임베디드 리눅스 구축 및 최적화: ARM Cortex-A7, SWUpdate OTA, SquashFS 적용

1. Buildroot 기반 ARM Cortex-A7 IoT 게이트웨이 구축 배경: 경량화 및 SWUpdate 필요성저전력 ARM Cortex-A7 프로세서 기반 IoT 게이트웨이는 센서 데이터 수집 및 클라우드 통신을 위해 높은 안정성과 빠른 부팅 속도가 요구됩니다. 일반적인 범용 리눅스 배포판은 불필요한 패키지와 서비스가 포함되어 있어 Flash 메모리 용량이 부족해지고 부팅 시간이 지연되는 문제가 발생합니다. Buildroot를 활용하면 필수 커널 모듈, 드라이버, 애플리케이션만 선택하여 16MB 이하의 루트 파일 시스템(RootFS)을 구성할 수 있습니다. 본 가이드에서는 ARM Cortex-A7 플랫폼에서 Dropbear, Mosquitto, SWUpdate, SquashFS를 적용하여 고성능,..

반응형