반응형

Embedded System/Embedded Linux Build System Yocto 16

Yocto SWUpdate 및 U-Boot A/B 파티션 기반 OTA 업데이트 시스템 구축과 CVE_CHECK 보안 관리

1. Yocto meta-swupdate 기반 임베디드 리눅스 OTA 업데이트 도입 배경 및 무결성 검증의 중요성임베디드 리눅스 시스템 배포 후 원격 필드 장비의 OS 및 애플리케이션을 안전하게 갱신하는 OTA(Over-The-Air) 파이프라인 구축은 필수적입니다. 단순히 바이너리를 덮어쓰는 방식은 업데이트 도중 전원 차단이나 네트워크 단절 시 시스템이 벽돌(Bricked) 상태가 되는 리스크를 동반합니다.본 가이드에서는 Yocto Project에서 제공하는 meta-swupdate 레이어와 U-Boot 듀얼 파티션(A/B) 스위칭 구조를 연동하여 atomic 업데이트 및 자동 롤백 기능을 구현합니다. 또한 OpenSSL 비대칭 키 기반 패키지 서명 검증과 cve-check 클래스를 활용한 자동화된 보..

Yocto WIC 이미지를 SD 카드 및 eMMC에 플래싱하는 방법 (U-Boot bootcmd 설정 포함)

1. Yocto Project 기반 타겟 이미지 배포 및 U-Boot 부팅 환경 구축 배경 Embedded Linux 시스템 개발 시 Yocto Project 기반으로 생성된 빌드 아티팩트를 타겟 스토리지에 안정적으로 배포하는 프로세스는 필수적입니다. 특히 온보드 시스템 환경에서는 BootROM의 부팅 순서, 파티션 테이블 레이아웃, U-Boot bootcmd 메모리 주소 매핑 오류로 인해 부팅 실패 현상이 빈번하게 발생합니다.본 문서에서는 Yocto에서 생성된 .wic 아티팩트를 SD 카드 및 eMMC 스토리지에 정확히 플래싱하는 세부 프로세스를 설명합니다. 또한, 일반적인 임베디드 보드의 U-Boot 환경 변수(bootargs, bootcmd) 설정 시 발생하기 쉬운 실수를 바로잡고, 시리얼 콘솔 기..

Yocto 임베디드 리눅스에서 GStreamer H.264 RTSP 스트리밍 및 Mosquitto MQTT/HTTP IoT 통합 구현 가이드

1. Yocto 임베디드 리눅스 환경의 멀티미디어 및 IoT 프로토콜 통합 필요성 임베디드 리눅스 시스템 개발 시 비디오 스트리밍과 IoT 센서 데이터 전송은 핵심 요구사항입니다. Yocto Project는 이러한 멀티미디어 프레임워크와 네트워킹 스택을 단일 커스텀 OS 이미지로 패키징할 수 있는 환경을 제공합니다.본 문서에서는 Yocto local.conf 설정을 통한 패키지 의존성 관리, gst-launch-1.0을 사용한 H.264 UDP/RTSP 스트리밍 파이프라인 구성, mosquitto-clients 및 Python paho-mqtt를 활용한 MQTT/HTTP REST API 데이터 파이프라인 통합 방법을 다룹니다.2. Yocto GStreamer 및 MQTT 패키지 빌드 핵심 요약 Yocto..

Yocto Project 기반 Embedded Linux Peripheral Control & Web Application 개발 가이드

1. Yocto Project 기반 임베디드 애플리케이션 개발 배경 및 문제 정의Yocto Project 기반으로 임베디드 리눅스 시스템을 구축할 때 주변 장치(Peripherals) 제어 인터페이스 구현 과정에서 다양한 디버깅 및 안정성 문제가 발생할 수 있습니다.기존 레거시 방식인 sysfs GPIO 제어 방식은 버그 및 리소스 누수(Resource Leak) 위험이 높으며, 최신 리눅스 커널(v4.8 이상 및 v5.x/v6.x) 환경에서는 Deprecated 상태입니다.기존 소스코드의 sizeof(value) 오류(포인터 크기 반환 문제) , termios 플래그 미설정으로 인한 UART 통신 블로킹 이슈 , I2C ioctl 예외 처리 미흡 문제를 교정하고 libgpiod API 기반 최신 제어 ..

고급 개발 기법: 커널 커스터마이징 및 Device Tree 수정

고급 개발 기법: 커널 커스터마이징 및 Device Tree 수정1. 개요이 포스팅에서는 Yocto 기반의 RK3399 보드에서 커널을 커스터마이징하고 Device Tree를 수정하는 방법을 설명합니다. 커널 커스터마이징은 특정 하드웨어 기능을 활성화하거나 불필요한 기능을 제거하는 과정이며, Device Tree 수정은 보드에 연결된 하드웨어 정보를 커널에 전달하는 역할을 합니다.RK3399 보드를 기준으로 Yocto 환경에서 직접 커널 설정을 변경하고, Device Tree를 수정하는 과정까지 상세히 설명하겠습니다.2. Yocto에서 커널 커스터마이징Yocto 환경에서 커널을 커스터마이징하는 과정은 다음과 같이 진행됩니다.2.1 커널 레시피 위치 확인먼저, RK3399 보드용 커널 레시피가 위치한 경로..

Yocto SDK 생성 및 ARM64 크로스 컴파일 환경 구축 가이드 (populate_sdk 사용법)

Yocto SDK 생성 및 크로스 컴파일 환경 구축 배경임베디드 Linux 시스템 개발 시 타겟 보드용 애플리케이션을 호스트 PC(x86_64)에서 개발하기 위해서는 툴체인(Toolchain)과 시스템 루트(Sysroot)가 포함된 개발 환경 구축이 필수적입니다. Yocto Project에서 제공하는 SDK(Software Development Kit)는 이러한 크로스 컴파일(Cross-Compilation) 및 디버깅 환경을 격리된 상태로 손쉽게 구축할 수 있도록 지원합니다.본 포스팅에서는 Yocto SDK를 빌드 및 설치하고, 환경 변수 설정, 예제 C 프로그램 빌드, BitBake 레시피 작성, opkg 기반의 필드 업데이트 과정까지 실무 수준의 정확한 가이드를 제공합니다.Yocto SDK 가이드 ..

Yocto 빌드 오류 디버깅 및 성능 최적화 가이드: bitbake devshell과 sstate-cache 완벽 활용법

Yocto Project 빌드 디버깅과 시스템 성능 최적화의 중요성임베디드 리눅스 시스템 개발에서 Yocto Project(Poky)는 강력한 빌드 시스템을 제공하지만, 복잡한 레이어 구조와 메타데이터 연동 방식으로 인해 컴파일 에러 발생 시 원인 파악이 어렵습니다. 본 가이드에서는 bitbake -c devshell을 활용한 소스 코드 수준의 실시간 디버깅, log.do_compile 및 log.do_install 로그 파일 분석법, 그리고 local.conf 설정을 통한 빌드 및 런타임 성능 최적화 방법을 상세히 설명합니다.Yocto 디버깅 및 성능 튜닝 핵심 요약실시간 소스 디버깅: bitbake -c devshell 명령어로 크로스 컴파일 환경 변수가 로드된 전용 쉘 진입로그 분석 경로: ${W..

Yocto Project 기반 커스텀 리눅스 이미지 작성 및 systemd 네트워크 최적화 가이드

Yocto 커스텀 빌드 환경 구축 배경과 시스템 최적화 목적 임베디드 리눅스 시스템 개발 시 타겟 보드에 최적화된 커스텀 펌웨어 이미지를 구성하는 작업은 필수적입니다. 기본 제공되는 core-image-minimal 레시피만으로는 상용 제품 개발 시 필요한 데몬 서비스 제어, 정적 IP 기반 네트워크 설정, 사용자 정의 애플리케이션 자동 실행 조건을 충족할 수 없습니다.본 문서에서는 Yocto Project BitBake 빌드 환경에서 커스텀 레이어(meta-mycustom) 및 이미지 레시피(custom-image.bb)를 정의하는 방법을 설명합니다. sysvinit 대신 systemd 기반 Init Manager 전환, systemd-networkd를 통한 static IP 및 Wi-Fi 지정, 커스..

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..

반응형