This page describes a tentative effort to port illumos-gate to the first generation Raspberry Pi hardware platform. Most critically, this platform contains an ARM11 CPU. This port is a community effort, and not presently associated with any particular corporation.
Those involved at time of writing:
- Robert Mustacchi <firstname.lastname@example.org>
- Joshua M. Clulow <email@example.com>
- Eric Sproul <firstname.lastname@example.org>
- Broadcom BCM2835 SOC
- ARM1176JZF-S 32bit CPU with floating point at 700Mhz - ARM11 core (ARMv6 Architecture)
- 512MB RAM (B & B+ models) or 256 RAM (A & A+ models)
- No Realtime Clock
- SMC LAN9512 10/100 Ethernet (B & B+ models)
Start at https://github.com/rmustacc/illumos-gate/blob/arm-gate/README.xbuild, the easy way doesn't really work.
Things We Need To Do
Broadly, we need to be able to cross-compile illumos-gate on an amd64 build machine such that it will run on the ARM CPU in the Pi.
Locate sufficient ARM documentation and arrange it in one place. Need a GCC that cross-compiles. Need a link-editor that supports cross-linking (running on x86) into whatever ARM ABI we decide to use. Investigate boot loaders.
- Hardware Description: http://elinux.org/RPi_Hardware
- ARMv6 Architectural Reference Manual: http://ecee.colorado.edu/ecen3000/labs/lab3/files/DDI0419C_arm_architecture_v6m_reference_manual.pdf
- ARM1176JZF-S Reference Manual: http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf
- Broadcom BCM2835 Technical Datasheet: http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf (and some datasheet errata)
- Serial console information: http://elinux.org/RPi_Serial_Connection
- Known to work: this cable from Adafruit has an embedded USB-to-serial converter and has individual pin connectors for attaching to the GPIO pins on the Pi board (P1)
- Pinout for the above cable (also pictured on Adafruit's product page): Red (pwr) to P1-02, Black (gnd) to P1-06, White (rx) to P1-08, Green (tx) to P1-10
- The MacOS X driver listed by Adafruit didn't work for me on Snow Leopard. I had better luck from Prolific's site: http://prolificusa.com/pl-2303hx-drivers/ using "Mac OS X Universal Binary Driver v1.4.0"
- ARM GCC Inline Assembler Cookbook
- Baking Pi – Operating Systems Development
- Raspberry Pi ARM based bare metal examples
- Raspberry Pi Bare Metal Assembly Programming
- Official Raspberry Pi 'Bare Metal' forum