QEMU raspi4b로 라즈베리파이 4 에뮬레이션하기 — 되는 것과 안 되는 것

라즈베리파이 4용으로 뭔가를 고칠 때마다 보드에 SD 카드를 꽂았다 뺐다 하는 건 번거롭고, 보드가 손에 없으면 아예 막힌다. QEMU는 8.2까지 라즈베리파이 3B(raspi3b)가 최신이었는데 9.0부터 raspi4b 머신이 들어왔다. 다만 Pi 4는…

Continue ReadingQEMU raspi4b로 라즈베리파이 4 에뮬레이션하기 — 되는 것과 안 되는 것

QEMU(arm64)에 라즈베리파이 올리기

라즈베리파이 OS의 설정을 조금 바꿔볼 때마다 SD 카드를 굽고 보드에 꽂고 전원을 넣는 건 느리다. 보드가 아직 손에 없거나, 망가뜨려도 되는 환경이 필요할 때도 있다. QEMU의 raspi3b 머신은 배포된 이미지를…

Continue ReadingQEMU(arm64)에 라즈베리파이 올리기

라즈베리파이 u-boot 올리기

라즈베리파이 펌웨어는 config.txt에 적힌 커널 이미지를 SD 카드에서 읽어 바로 실행한다. 중간에 개입할 지점이 없어서 커널을 여러 개 두고 골라 부팅하거나, TFTP·USB에서 이미지를 받아오거나, 부트 인자를 바꿔가며 시험하려면 그때마다 SD…

Continue Reading라즈베리파이 u-boot 올리기

Multi-Gen LRU(MGLRU) 확인하기 — 세대 히스토그램과 선제적 회수

메모리가 부족해지면 커널은 페이지 캐시나 익명 페이지 중 "안 쓸 것 같은" 것을 골라 내보낸다. 이 판단이 틀리면 방금 내보낸 페이지를 곧바로 다시 읽어들이는 스래싱(thrashing)이 생기고, 저사양 기기나 메모리 상한이…

Continue ReadingMulti-Gen LRU(MGLRU) 확인하기 — 세대 히스토그램과 선제적 회수

라즈베리파이에서 SPI 통신으로 센서/디스플레이 다루기

라즈베리파이에서 ADC나 LED 매트릭스처럼 빠른 응답과 큰 데이터 전송량이 필요한 주변장치를 다룰 때 I2C(배선 2개, 수백 kHz, 슬레이브 주소 기반)는 속도와 주소 충돌 면에서 답답하다. SPI(Serial Peripheral Interface)는 MOSI/MISO를 따로…

Continue Reading라즈베리파이에서 SPI 통신으로 센서/디스플레이 다루기

라즈베리파이에서 I2C 센서 데이터 읽기 — python-smbus2 실전

센서마다 GPIO 핀을 하나씩 배정하는 방식은 핀 개수 제한과 배선 복잡도 때문에 금방 한계에 부딪힌다. I2C는 SDA/SCL 두 핀만으로 여러 센서를 동시에 연결하는 버스 프로토콜이고, BME280 같은 저가형 온습도/기압 센서는…

Continue Reading라즈베리파이에서 I2C 센서 데이터 읽기 — python-smbus2 실전

라즈베리파이 부트로더 빌드 및 업데이트 방법

라즈베리파이 4/5 계열은 부트로더가 보드 위 EEPROM에 저장되어 있고, rpi-eeprom-update로 최신 버전으로 갱신할 수 있다. "부트로더를 빌드한다"는 말 때문에 소스를 내려받아 컴파일하는 과정을 떠올리기 쉬운데, 실제로는 다르다. rpi-eeprom 저장소에는 이미…

Continue Reading라즈베리파이 부트로더 빌드 및 업데이트 방법

라즈베리파이 Device Tree Overlay 원리 — fragment/fixup을 dtc로 직접 확인하기

라즈베리파이에 센서나 디스플레이를 하나 새로 붙일 때마다 base device tree(.dtb) 전체를 다시 컴파일해서 부트 파티션에 올리는 건 번거롭고, 보드마다 다른 base tree를 관리해야 하는 상황과도 잘 안 맞는다. Device Tree…

Continue Reading라즈베리파이 Device Tree Overlay 원리 — fragment/fixup을 dtc로 직접 확인하기

라즈베리파이 PREEMPT_RT 실시간 커널 적용기

라즈베리파이OS 기본 커널은 일반 목적 스케줄러를 쓰기 때문에, 인터럽트가 몰리거나 시스템 부하가 커지면 특정 태스크의 응답 시간이 수 밀리초에서 수십 밀리초까지 튈 수 있다. 로봇 제어, 모터 구동, 오디오 프로세싱처럼…

Continue Reading라즈베리파이 PREEMPT_RT 실시간 커널 적용기

eBPF를 위한 라즈베리파이 커널 빌드 가이드

라즈베리파이 OS에는 이미 최신 커널이 올라가 있고, CONFIG_BPF_SYSCALL과 CONFIG_BPF_JIT도 기본으로 켜져 있어서 단순한 eBPF 프로그램은 커널을 새로 빌드하지 않아도 로드된다. 문제는 그다음부터다. bpftrace나 최신 BCC 도구 상당수는 BTF(BPF Type Format)…

Continue ReadingeBPF를 위한 라즈베리파이 커널 빌드 가이드