18a8edbf0e
* There is now a 'busses' folder, and the extant USB/SDHCI/Bluetooth/etc. docs now live in it, instead of various other places. * kernel/ports is now kernel/arch, like it is in src/system. SPARC documentation is now in there, too. * VM files (these are rather outdated) are now in kernel/vm. * SCSI ASC info removed, this is easily available online and it doesn't seem to be very relevant.
2.1 KiB
2.1 KiB
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}