그라운드 임베디드 EN 유튜브 구독

노트 / 임베디드 리눅스

사용자 공간 I/O: 앱에서 하드웨어 다루기

드라이버를 직접 만들지 않고 /dev, sysfs, ioctl, libgpiod로 GPIO, I2C, SPI, UART를 다루는 방법.

GROUND EMBEDDED · 정리 노트임베디드 리눅스 06사용자 공간 I/O 1from smbus2 import SMBus 2with SMBus(1) as bus: 3 raw = bus.read_i2c_block_data(0x68,…

장치별 방법

앱/dev 장치 파일i2c-1 · spidev · gpiochip커널의 기본 드라이버하드웨어
드라이버를 만들지 않고 앱에서 바로 다루는 길.
장치 인터페이스 도구 / 라이브러리
GPIO /dev/gpiochipN (문자 장치) libgpiod, gpioset, gpioget
I2C /dev/i2c-N i2cdetect, i2cget, ioctl(I2C_RDWR)
SPI /dev/spidevX.Y spidev ioctl
UART /dev/ttyS, /dev/ttyUSB termios
PWM /sys/class/pwm/ sysfs
ADC /sys/bus/iio/devices/ IIO

예전 /sys/class/gpio 인터페이스는 폐기되는 중이라 새 코드는 libgpiod를 씁니다.

I2C 읽기 예 (Python)

from smbus2 import SMBus
with SMBus(1) as bus:
    raw = bus.read_i2c_block_data(0x68, 0x3B, 6)   # MPU6050 가속도
무료 전자책이 주제를 한 권으로 이어 읽기 (PDF 3권)→

언제 사용자 공간, 언제 드라이버

사용자 공간이 좋을 때 드라이버가 필요할 때
프로토타입, 느린 센서 µs 단위 응답, 높은 인터럽트 빈도
개발 속도가 중요 여러 프로그램이 공유
커널 서브시스템(네트워크, 입력 장치)에 통합

실시간성 주의

리눅스 사용자 프로그램은 스케줄러가 언제든 멈출 수 있어 수 ms 지터가 생깁니다. 정밀한 PWM이나 모터 제어는 MCU에 맡기고 리눅스는 상위 판단과 통신을 맡기는 구성이 흔합니다.

영상으로 이어 보기제품은 어떻게 동작할까 시리즈 8편하늘 위 떠다니는 드론은 어떻게 동작할까? 프로펠러 4개로 뜨고 기우는 원리부터 비행 제어기 · PID · 센서 퓨전까지FREE PDF무료 전자책 3권 받기이 주제를 한 권으로 이어서 읽고 싶다면. BLDC 모터 제어, 직렬통신, 센서를 책 분량으로 묶었습니다. 이메일만 남기면 바로 받습니다.무료로 받기 →