Raspberry Pi 2¶
Hardware Information¶
ARMv7 Architecture
Broadcom BCM2836 (SoC)
Includes Quad ARM Cortex-A7 CPU @ 900 MHz
Includes VideoCore IV GPU
SD Card Storage
1 GB RAM
Video Outputs
HDMI Video Output
Composite Video Output
Ethernet 10/100 Mbit/s
4x USB 2.0
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
fixup.dat: Additional code for the GPU
bcm2709-rpi-2-b.dtb: FDT binary for the Raspberry Pi 2B
bcm2710-rpi-2-b.dtb: FDT binary for the Raspberry Pi 2B rev 1.2
config.txt: A configuration file read by the Pi to start u-boot.bin
u-boot.bin: u-boot loader for the 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=rpi2
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} bcm2836-rpi-2-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}