반응형

Linux/Kernel Driver 26

USART Driver 작성 및 Linux Kernel에서의 USART 인터페이스 사용 방법

USART Driver 작성 및 Linux Kernel에서의 USART 인터페이스 사용 방법개요USART(Universal Synchronous/Asynchronous Receiver-Transmitter)는 임베디드 시스템에서 중요한 직렬 통신 인터페이스입니다. 이번 포스팅에서는 Rockchip RK3399 플랫폼을 기준으로, Linux Kernel에서 USART 드라이버를 작성하고, 이를 통해 데이터를 읽고 쓰는 방법을 알아보겠습니다.USART란?USART는 직렬 통신을 지원하는 하드웨어 모듈로, 동기 및 비동기 통신을 모두 지원합니다. 동기 통신은 별도의 클럭 신호를 사용하며, 비동기 통신은 스타트와 스톱 비트를 활용합니다. USART는 주로 센서, 디버깅, 데이터 로깅 등의 목적으로 사용됩니다.주..

Linux/Kernel Driver 2025.03.22

Embedded Linux에서 SPI Driver 작성하기 (Rockchip RK3399 기준)

Embedded Linux에서 SPI Driver 작성하기 (Rockchip RK3399 기준)SPI Driver란?SPI(Serial Peripheral Interface)는 임베디드 시스템에서 주변 장치와 통신하기 위해 널리 사용되는 동기식 직렬 통신 프로토콜입니다. 이번 포스팅에서는 Rockchip RK3399를 기준으로 SPI Flash를 읽고 쓰는 방법을 포함하여 Linux Kernel에서 SPI 인터페이스를 사용하는 방법을 단계별로 설명합니다.1. SPI 인터페이스 개요SPI는 Master-Slave 구조를 기반으로 동작합니다. 주요 신호선은 아래와 같습니다:MOSI (Master Out Slave In): Master에서 Slave로 데이터 전송.MISO (Master In Slave Out..

Linux/Kernel Driver 2025.03.21

Embedded Linux Kernel: I2C 드라이버 작성 및 사용법

Embedded Linux Kernel: I2C 드라이버 작성 및 사용법안녕하세요, 오늘은 Rockchip RK3399을 기준으로 Linux Kernel에서 I2C 인터페이스를 사용하는 방법과 I2C 드라이버를 작성하는 방법에 대해 알아보겠습니다. I2C는 많은 임베디드 시스템에서 사용되는 직렬 통신 프로토콜로, 다양한 센서 및 주변 장치와의 통신에 유용합니다. 이번 포스팅에서는 I2C의 기본 개념부터 드라이버 작성 및 예제 구현까지 설명하겠습니다.1. I2C 기본 개념I2C(Inter-Integrated Circuit)는 두 개의 신호 선(SCL, SDA)을 통해 마스터-슬레이브 방식으로 통신하는 프로토콜입니다.주요 특징SCL: 클록 신호SDA: 데이터 신호다중 슬레이브 장치를 하나의 I2C 버스에서 ..

Linux/Kernel Driver 2025.03.20

Embedded Linux Kernel: Platform Driver 작성하기

Embedded Linux Kernel: Platform Driver 작성하기임베디드 시스템에서 Linux Kernel을 활용하려면 특정 하드웨어와 연동하기 위한 드라이버 작성이 필수적입니다. 이번 포스팅에서는 Platform Driver 작성, Platform Device와 Driver의 이해, 그리고 Device Tree와 Platform Driver 연동 방법을 Rockchip RK3399 시스템을 예제로 설명하겠습니다.Platform Driver란?Platform Driver는 일반적으로 SoC(System on Chip) 기반 시스템에서 특정 하드웨어를 제어하기 위한 커널 드라이버입니다. Platform Driver는 Platform Device와 매칭되어 동작하며, 이 매칭은 Device Tr..

Linux/Kernel Driver 2025.03.19

Device Driver에서 Sysfs 등록

Device Driver에서 Sysfs 등록Sysfs란?sysfs는 Linux 커널에서 제공하는 가상 파일 시스템으로, 커널 객체의 속성과 정보를 사용자 공간에 노출하기 위해 사용됩니다. 이를 통해 디바이스 드라이버와 사용자 간의 인터페이스를 단순하고 효율적으로 제공할 수 있습니다./sys 디렉토리 아래에 구성된 sysfs는 트리 구조로 이루어져 있으며, 각 노드에 해당하는 디바이스나 커널 객체의 정보를 표현합니다. 디바이스 드라이버 개발자는 sysfs를 통해 사용자 정의 속성을 추가하거나 시스템 속성을 관리할 수 있습니다.Sysfs 등록의 장점가독성: 트리 구조로 조직화되어 있어 정보 접근이 용이합니다.표준화: 통일된 인터페이스로 사용자가 디바이스 상태를 확인하거나 설정을 변경할 수 있습니다.유연성: ..

Linux/Kernel Driver 2025.03.18

Embedded Linux: Character Device Driver 작성

Embedded Linux: Character Device Driver 작성Embedded Linux에서 Character Device Driver는 장치와 사용자 공간 간의 데이터 교환을 처리하는 중요한 구성 요소입니다. 이번 포스팅에서는 Character Device Driver가 무엇인지 알아보고, Rockchip RK3399 시스템에서 간단한 Char Driver를 작성하고 테스트하는 방법을 설명하겠습니다.Character Device Driver란 무엇인가?Character Device Driver(문자 장치 드라이버)는 바이트 단위로 데이터를 처리하는 드라이버로, 키보드, 시리얼 포트, 터미널 등과 같은 장치를 제어하는 데 사용됩니다. 특징:순차적으로 데이터를 읽고 쓸 수 있습니다.파일 인터페..

Linux/Kernel Driver 2025.03.17

Linux Kernel 모듈 기본

Linux Kernel 모듈 기본Kernel 모듈이란 무엇인가?리눅스 커널은 기본적으로 운영 체제의 핵심 기능을 담당합니다. 커널 모듈(Kernel Module)은 커널의 기능을 확장하거나 추가 기능을 제공하기 위해 동적으로 로드되거나 언로드될 수 있는 독립적인 프로그램입니다. 커널 모듈의 가장 큰 장점은 시스템을 재부팅하지 않고도 새로운 기능을 추가하거나 수정할 수 있다는 점입니다.커널 모듈은 주로 다음과 같은 목적으로 사용됩니다:새로운 하드웨어 장치를 지원하기 위해 드라이버를 추가할 때시스템의 특정 동작을 제어하거나 확장할 때커널 기능을 디버깅하거나 테스트할 때간단한 Hello World 모듈 작성 및 로딩이제 Rockchip RK3399 시스템을 기준으로 간단한 "Hello World" 커널 모듈을..

Linux/Kernel Driver 2025.03.16

Embedded Linux에서 Root Filesystem 생성하기

Embedded Linux에서 Root Filesystem 생성하기임베디드 시스템에서 Linux Kernel을 구동하려면 Root Filesystem(이하 Rootfs)이 반드시 필요합니다. Rootfs는 커널이 부팅한 후 시스템 동작에 필요한 기본 파일, 라이브러리, 그리고 실행 파일 등을 포함합니다. 이 글에서는 Rootfs 생성 방법과 최적화, 커스터마이징 방법을 Rockchip RK3399 플랫폼을 기준으로 설명합니다.1. Root Filesystem의 개념Rootfs는 다음과 같은 요소들로 구성됩니다:기본 디렉토리 구조: /bin, /lib, /etc, /dev, /usr, /var 등.필수 파일 및 라이브러리: init 파일, C 표준 라이브러리 등.필수 디바이스 파일: /dev 디렉토리 내의..

Linux/Kernel Driver 2025.03.15

Embedded Linux Kernel 설정 - Kernel Configuration

Embedded Linux Kernel 설정: Kernel ConfigurationEmbedded Linux를 개발할 때 가장 중요한 작업 중 하나는 Kernel Configuration입니다. 이 과정은 시스템의 요구사항에 맞는 기능과 드라이버를 선택하여 Kernel 설정 파일(.config)을 작성하고 조정하는 작업을 포함합니다. 이번 포스팅에서는 Rockchip RK3399 플랫폼을 예제로, Embedded 환경에 적합한 Kernel 설정 과정을 설명합니다.Kernel Configuration 기본 개념Kernel Configuration은 Linux 커널이 특정 시스템에 최적화되도록 설정을 조정하는 단계입니다. .config 파일은 이러한 설정의 결과물로, 컴파일 시 커널이 어떤 기능을 포함할지를..

Linux/Kernel Driver 2025.03.14

Embedded Linux Kernel: Bootloader 설정 및 커스터마이징

Embedded Linux Kernel: Bootloader 설정 및 커스터마이징임베디드 시스템 개발에서 부트로더(Bootloader)는 시스템의 초기화를 담당하며, 커널과 사용자 애플리케이션으로의 전이를 관리하는 중요한 역할을 합니다. 이번 포스팅에서는 Rockchip RK3399 플랫폼을 기준으로 부트로더인 U-Boot을 포팅하고, 설정 및 환경 변수를 조정하는 방법을 알아보겠습니다.1. Bootloader란 무엇인가?Bootloader는 하드웨어 초기화와 운영체제 로딩을 위한 프로그램입니다. 부트로더는 주로 다음과 같은 단계로 동작합니다:1단계 부트로더: CPU 및 메모리 초기화.2단계 부트로더: 운영체제 커널 로드.U-Boot은 임베디드 시스템에서 가장 널리 사용되는 오픈소스 부트로더 중 하나입니..

Linux/Kernel Driver 2025.03.13
반응형