반응형

DeviceTree 7

Linux remoteproc 서브시스템 분석: 이기종 멀티코어 부팅을 위한 커널 드라이버 매핑 및 Device Tree 가이드

Linux remoteproc 서브시스템 도입 배경: 이기종 멀티코어 시스템 아키텍처의 리모트 코어 제어 필요성모던 시스템 온 칩(SoC) 환경에서는 고성능 애플리케이션 프로세서인 ARM Cortex-A 코어와 실시간성을 보장하는 리모트 코어인 ARM Cortex-M 코어가 공존합니다. Linux 커널은 메인으로 동작하며 독립적인 운영체제(RTOS 또는 Bare-metal)를 실행하는 리모트 코어의 실행 상태를 관리해야 합니다. 과거에는 리모트 코어를 부팅하기 위해 하드웨어 의존적인 독자 드라이버를 각각 구현했습니다. 이러한 파편화 문제를 해결하기 위해 Linux 커널은 remoteproc(Remote Processor) 서브시스템을 표준 프레임워크로 제공합니다. remoteproc 프레임워크를 사용하면..

임베디드 리눅스 커널 빌드 및 패치 생성 완벽 가이드

임베디드 리눅스 커널 빌드 및 패치 작성 필요성임베디드 리눅스 기반 제품 개발 시 보드 지원 패키지(BSP) 커스터마이징은 필수 작업입니다. 타겟 하드웨어 사양에 맞춰 커널을 최적화하려면 소스 코드 수정, patch 파일 생성, 디바이스 트리(Device Tree) 및 커널 이미지 빌드 프로세스를 완벽히 이해해야 합니다. 본 포스팅에서는 타겟 아키텍처 크로스 컴파일러 설정 오류를 바로잡고, git diff 기반의 올바른 패치 관리 방법 및 dd 명령어 사용 시 발생할 수 있는 블록 디바이스 덮어쓰기 위험성을 예방하는 실무 가이드를 제공합니다.임베디드 리눅스 커널 빌드 핵심 요약타겟 ARM64 Architecture 커널 컴파일에는 32bit Toolchain(arm-linux-gnueabihf)이 아닌 ..

Linux Power Management: Runtime PM 및 dev_pm_ops 드라이버 구현 가이드

Linux Power Management 개요 및 작성 배경임베디드 리눅스 시스템 개발에서 효율적인 전력 관리는 시스템 안정성 확보 및 발열 제어, 배터리 수명 극대화를 위해 필수적인 요소입니다. 듀얼 코어 Cortex-A72와 쿼드 코어 Cortex-A53을 탑재한 big.LITTLE 아키텍처 기반 SoC는 작업 부하에 따른 정교한 전력 상태 제어가 요구됩니다.본 포스팅에서는 Linux 커널의 Power Management(PM) 프레임워크 구조를 분석하고, dev_pm_ops 및 pm_runtime API를 활용하여 디바이스 드라이버 레벨에서 dynamic power management를 올바르게 구현하는 방법을 상세히 다룹니다.Linux Kernel Power Management 핵심 요약Syste..

임베디드 리눅스 커널 GPIO IRQ 드라이버 구현 및 Interrupt Handling 최적화 가이드

임베디드 리눅스 시스템 환경에서 GPIO Interrupt Handling 구현 배경 및 목적임베디드 리눅스(Embedded Linux) 시스템에서 하드웨어 이벤트를 실시간으로 처리하기 위해 GPIO 인터럽트 드라이버 구현은 필수적입니다. 주기적인 하드웨어 상태 확인을 위해 폴링(Polling) 방식을 사용하는 것은 CPU 자원 소모를 극대화하고 응답 지연(Latency)을 유발합니다.본 기술 포스팅에서는 ARM GIC(Generic Interrupt Controller) 아키텍처 환경에서 SoC의 GPIO 컨텍스트 인터럽트를 제어하는 커널 드라이버 구조를 설명합니다. 기존 구형 레거시 API(gpio_request, request_irq) 방식의 오류를 바로잡고, 최신 커널 Standard인 gpiod..

Linux TTY Serial Driver 구현: DesignWare 8250 UART 레지스터 제어 및 FIFO/LSR 디버깅

Linux Kernel Serial Driver 개발 배경 및 tty_port/serial_core의 중요성임베디드 리눅스 시스템에서 UART/USART(Universal Synchronous/Asynchronous Receiver-Transmitter)는 시리얼 통신, 디버깅 로그 출력 및 외부 센서 제어에 필수적인 하드웨어 인터페이스입니다. 임베디드 SoC 기반 시스템 개발 과정에서 표준 Linux 8250 시리얼 드라이버 또는 커스텀 serial_core 기반 드라이버를 올바르게 작성하지 않으면, 커널 입출력 병목 현상이나 데이터 유실(Overrun Error)이 발생할 수 있습니다.본 포스팅에서는 Device Tree Source(DTS) 설정부터 platform_driver 및 uart_driv..

Linux SPI Driver 개발 및 NOR Flash Control 가이드 (Device Tree & spi_sync)

Linux SPI Driver 개발 및 NOR Flash Control의 중요성임베디드 리눅스 시스템에서 SPI(Serial Peripheral Interface)는 NOR Flash, OLED Display, 센서 등과의 고속 동기식 통신을 위해 가장 광범위하게 활용되는 프로토콜입니다. 특히 AP 기반의 보드 설계에서는 부팅 펌웨어(U-Boot) 및 중요 시스템 설정을 저장하기 위해 SPI NOR Flash 장치를 빈번하게 사용합니다.그러나 실제 개발 현장에서는 SPI 모드 설정 불일치(SPI Mode Mismatch), DMA 버퍼 정렬 문제, Write Enable(0x06) 명령 누락으로 인한 쓰기 실패 등 다양한 디버깅 난관에 직면하게 됩니다. 본 포스팅에서는 Linux Kernel SPI Su..

Linux Kernel Platform Driver 및 Device Tree (gpio-leds) 완전 가이드(Rockchip RK3399)

Rockchip RK3399 Linux Kernel Platform Driver 개발 배경 및 필요성SoC(System on Chip) 환경에서 하드웨어 제어를 구현할 때 Linux Kernel의 platform_driver 및 Device Tree 구조 이해는 필수적입니다. 본 가이드에서는 Rockchip RK3399 칩셋을 기준으로 gpio-leds 기반의 Device Tree 노드 작성과 platform_driver 구조체를 사용한 Kernel Driver 구현 프로세스를 다룹니다. 기존 코드의 devm_gpiod_get 레이블 매칭 오류를 수정하고, GPIO Subsystem과의 정상적인 연동 방식을 명확히 제시합니다.RK3399 Platform Driver 핵심 구현 요약Device Tree c..

반응형