라즈베리파이에서 SPI 통신으로 센서/디스플레이 다루기
라즈베리파이에서 ADC나 LED 매트릭스처럼 빠른 응답과 큰 데이터 전송량이 필요한 주변장치를 다룰 때 I2C(배선 2개, 수백 kHz, 슬레이브 주소 기반)는 속도와 주소 충돌 면에서 답답하다. SPI(Serial Peripheral Interface)는 MOSI/MISO를 따로…
라즈베리파이에서 ADC나 LED 매트릭스처럼 빠른 응답과 큰 데이터 전송량이 필요한 주변장치를 다룰 때 I2C(배선 2개, 수백 kHz, 슬레이브 주소 기반)는 속도와 주소 충돌 면에서 답답하다. SPI(Serial Peripheral Interface)는 MOSI/MISO를 따로…
센서마다 GPIO 핀을 하나씩 배정하는 방식은 핀 개수 제한과 배선 복잡도 때문에 금방 한계에 부딪힌다. I2C는 SDA/SCL 두 핀만으로 여러 센서를 동시에 연결하는 버스 프로토콜이고, BME280 같은 저가형 온습도/기압 센서는…
라즈베리파이 4/5 계열은 부트로더가 보드 위 EEPROM에 저장되어 있고, rpi-eeprom-update로 최신 버전으로 갱신할 수 있다. "부트로더를 빌드한다"는 말 때문에 소스를 내려받아 컴파일하는 과정을 떠올리기 쉬운데, 실제로는 다르다. rpi-eeprom 저장소에는 이미…
라즈베리파이에 센서나 디스플레이를 하나 새로 붙일 때마다 base device tree(.dtb) 전체를 다시 컴파일해서 부트 파티션에 올리는 건 번거롭고, 보드마다 다른 base tree를 관리해야 하는 상황과도 잘 안 맞는다. Device Tree…
라즈베리파이OS 기본 커널은 일반 목적 스케줄러를 쓰기 때문에, 인터럽트가 몰리거나 시스템 부하가 커지면 특정 태스크의 응답 시간이 수 밀리초에서 수십 밀리초까지 튈 수 있다. 로봇 제어, 모터 구동, 오디오 프로세싱처럼…
라즈베리파이 OS에는 이미 최신 커널이 올라가 있고, CONFIG_BPF_SYSCALL과 CONFIG_BPF_JIT도 기본으로 켜져 있어서 단순한 eBPF 프로그램은 커널을 새로 빌드하지 않아도 로드된다. 문제는 그다음부터다. bpftrace나 최신 BCC 도구 상당수는 BTF(BPF Type Format)…
라즈베리파이 4 이하에서 잘 동작하던 RPi.GPIO 기반 코드를 라즈베리파이 5에 그대로 올리면 GPIO 핀 제어가 먹통이 되는 경우가 많다. Pi 5부터는 GPIO·USB·이더넷·카메라 등 외부 인터페이스를 처리하는 RP1이라는 별도 I/O 칩이…
Linux 커널을 소스에서 빌드하다 보면 tools/objtool을 컴파일하는 단계에서 gelf.h 헤더를 찾지 못해 빌드가 중단되는 경우가 있다. objtool은 커널 빌드 시 오브젝트 파일의 제어 흐름을 분석해 ORC unwinder 테이블 생성, retpoline/livepatch…
라즈베리파이를 원격으로 제어하는 방법은 여러 가지가 있지만, NoMachine은 빠른 화면 전송 성능과 낮은 지연(latency), 쉬운 설정 덕분에 개발자나 시스템 엔지니어에게 좋은 선택이다. 특히 GUI 환경에서 디버깅하거나 IDE를 사용할 때 VNC보다…
라즈베리파이(Raspberry Pi)는 저렴하면서도 강력한 성능을 갖춘 SBC(Single Board Computer)로, 다양한 운영체제를 설치해볼 수 있는 실험용 장비로 인기가 많다. 일반적으로는 라즈비안(Raspberry Pi OS)을 많이 사용하지만, 안드로이드(Android)를 설치하면 모바일 앱 테스트, 키오스크,…