Raspberry Pi¶
Hardware Information¶
ARMv6 Architecture
Broadcom BCM2835 (SoC)
Includes ARM1176JZF-S CPU @ 700 MHz
Includes VideoCore IV GPU
SD Card Storage
256 or 512 MB RAM (depending on revision)
Video Outputs
HDMI Video Output
Composite Video Output
Ethernet
Setting up the Haiku SD card¶
The Raspberry Pi SD card generally uses the MBR file system layout below. Partition 1 is all that is required to boot an OS.
partition 1 – FAT32, bootable flag, type ‘c’
partition 2 – BeFS, Haiku filesystem, type ‘eb’
Boot Partition¶
Required Files¶
bootcode.bin : 2nd stage bootloader
start.elf: The GPU binary firmware image
config.txt: A configuration file read by the Pi to start u-boot.bin
u-boot.bin: u-boot loader for the Pi 2
bcm2835-rpi-b.dtb: FDT binary for the Raspberry Pi 2
haiku_loader_linux.ub: Haiku Loader
haiku-floppyboot.tgz.ub: Compressed initial ram image with Haiku kernel
Optional Files¶
vlls directory: Additional GPU code, e.g. extra codecs.
uEnv.txt: u-boot configuration script to automate boot.
Compiling¶
Create your ARM work directory
mkdir generated.arm; cd generated.arm
Build an ARM toolchain using
../configure --build-cross-tools arm ../../buildtools --target-board=rpi1
Build our loader using
jam -q haiku_loader_linux.ub
Build our initial ram disk using
jam -q haiku-floppyboot.tgz.ub
Booting¶
SOC finds bootcode.bin
bootcode.bin runs start.elf
start.elf reads config.txt and start u-boot
u-boot.bin starts the Haiku loader
Haiku loader boots Haiku kernel
config.txt Options¶
kernel=u-boot.bin
u-boot startup¶
These will be condensed and automated long-term via uEnv.txt :-)
fatload mmc 0 ${fdt_addr_r} bcm2835-rpi-b.dtb
fdt addr ${fdt_addr_r}
fatload mmc 0 ${ramdisk_addr_r} haiku-floppyboot.tgz.ub
fatload mmc 0 ${kernel_addr_r} haiku_loader_linux.ub
bootm ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}