Startsite/content/build.md

How to build

Build on macOS or Linux. Kernel-side work runs in a Debian container (Buildroot needs Linux); the harness runs natively.

Requirements #

  • openocd, ffmpeg, cmake, arm-none-eabi-gcc, picotool
  • Python 3 with pyserial
  • Pico SDK
  • Docker (for the Buildroot container)

Written for bash 3.2 (what macOS ships).

One-time setup #

git clone https://github.com/rh1tech/frank-linux.git
cd frank-linux
make hooks          # attribution-safe commit hooks
make image          # build the Debian/Buildroot container

Main targets #

TargetWhat it does
make slaveBuild ARM Linux for the FRANK slave half (Phase 4)
make slave-flash-usbFlash bootloader + kernel + DTB over USB BOOTSEL (~52 s)
make slave-flashSame flash over SWD (~15 min)
make appsBuild programs that live on the SD card
make installPut everything on an empty board and card, no SWD
make qemu-armARM NOMMU + FDPIC kernel for QEMU (no hardware)
make qemu-arm-runBoot that image under qemu-system-arm
make checkFull Phase 0 harness gate (needs the bench)
make slave
make apps
make slave-flash-usb
# or, empty board + empty card:
make install

Layout #

firmware/afboot-rp2350/     slave bootloader
firmware/master-ioserver/   master: terminal, HDMI, USB HID, microSD, link
br-external/                Buildroot tree, kernel patches, DTS
tcc-thumb2/                 Thumb-2 backend for tcc
tools/                      test harness and gates
docs/                       measurements and deep dives

Faster loop without the board #

make qemu-arm
make qemu-arm-run
make tcc-qemu          # run the on-target C compiler under QEMU

make help lists every target. See the repository README (opens in a new tab) for architecture and known limits.