반응형

EmbeddedLinux 14

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

임베디드 리눅스 sysfs 드라이버 구현: kobject_create_and_add() 및 sysfs_create_file() 최적화 가이드

시스템 환경에서 Linux Kernel sysfs 인터페이스 구축 배경임베디드 리눅스 시스템(예: Rockchip RK3399 SOC)에서 커널 공간(Kernel Space)과 사용자 공간(User Space) 간의 데이터를 교환하는 것은 매우 중요합니다. sysfs는 Linux 커널 2.6부터 도입된 가상 파일 시스템(Virtual File System)으로, /sys 디렉토리 아래에 kobject 트리를 시각적으로 표현합니다.보드 개발 시, 단순 제어나 상태 모니터링을 위해 ioctl이나 character device를 전체 구현하는 것은 비효율적일 수 있습니다. sysfs 속성(Attribute)을 생성하면 cat 및 echo 명령어만으로 디바이스 제어, GPIO 상태 관리, CPU 주파수 설정 등..

반응형