Lifelog/RC

Moka — Raspberry Pi Zero W용 RC 카 제어 OS

sunshout1 2026. 6. 14. 16:55
반응형

01. 프로젝트 개요

프로젝트명

Moka — Raspberry Pi Zero W용 RC 카 제어 OS

한 줄 요약

SD 카드에서 GPU 펌웨어 체인을 거쳐 자체 Stage 부트로더가 올라가고, 단일 주소 공간 미니멀 OS가 RC 구동·조향·원격 제어를 실시간에 가깝게 수행한다.

배경과 동기

  • 상용 RC 전용 MCU 펌웨어 대신, SoC·OS·통신을 한 보드에서 통합해 프로토타입·실험 속도를 높인다.
  • 교육·연구 목적뿐 아니라, WiFi/BT, 로깅, OTA(후순위) 같은 확장 통신을 OS 레벨에서 일관되게 다룬다.
  • 하드웨어/OS 개발자로서 부트부터 제어 루프까지 스택 전체를 소유한다.

목표 (Goals)

ID목표성공 기준 (초기)

G1 Zero W에서 자체 커널 부팅 UART에 부트 로그, LED/GPIO heartbeat
G2 RC 구동계 제어 전진/후진/정지, 조향 PWM 안정 동작
G3 원격 입력 WiFi UDP 또는 UART RC 수신으로 주행
G4 안전 워치독, 통신 타임아웃 시 모터 차단
G5 개발 가능성 크로스 빌드 한 번으로 SD 이미지 재생성

비목표 (Non-Goals) — v1

  • Linux/Raspbian 포팅
  • 완전한 POSIX 호환 OS
  • Pi 4/5, CM 모듈 지원
  • 상용 ASIL/ISO26262 수준 안전 인증
  • 비디오 스트리밍·SLAM (후속 로드맵만 언급)

설계 원칙

  1. 예측 가능한 지연: RC 제어 루프는 고정 주기(예: 100 Hz ~ 1 kHz)로 설계; 일반 목적 스케줄링은 2차.
  2. 작은 신뢰 경계: 부트로더는 검증·로드만; 드라이버는 커널; 정책(속도 제한 등)은 rc/ 서비스.
  3. 하드웨어 추상화는 얇게: Zero W 전용으로 시작, 나중에 #ifdef보다 보드 테이블 분리.
  4. 디버그 우선: 초기부터 UART 로그, GPIO 트레이스, 부트 단계별 LED 패턴.
  5. 실패 시 안전: 모터 드라이버 enable은 기본 비활성; 소프트웨어 패닉 시 하드웨어 워치독.

용어

용어정의

GPU firmware SD의 bootcode.bin / start.elf — VideoCore가 ARM을 깨우는 1차 체인
Stage 0 GPU가 로드하는 최소 ARM 스텁 (선택: 기존 chain 유지)
Stage 1 Moka 부트로더 — 커널·DTB(선택)·initram 로드, MMU 전 커널 진입 준비
Kernel MMU, IRQ, 타이머, 드라이버, 스케줄러
RC stack 입력 디코딩 → 제어기 → PWM/방향 핀 출력
ATB ARM Trusted Firmware (본 프로젝트 v1 비사용)

이해관계자와 사용 시나리오

  • 개발자(본인): JTAG/UART, 크로스 GDB, Oscilloscope로 PWM 검증
  • 운용: 배터리 장착 → 전원 → 3초 내 heartbeat → 스마트폰/조종기로 주행
  • 실험: PID 게인, 속도 프로파일, 센서 fusion을 커널 모듈 없이 rc/에서 반복

라이선스·저작 (미정)

저장소 루트 LICENSE 확정 전까지 문서만 GPL/MIT 중 선택 예정. BCM2835 문서·Broadcom 바이너리 사용 시 배포 조건을 별도 docs/legal-notes.md에 정리할 것(후속).

728x90
반응형