OS Development on the Raspberry Pi
The Raspberry Pi is a computer which is about the size of a deck of playing cards. It might make a useful or interesting target for an OS developer for a number of reasons.
- The memory map and the locations and meanings of device registers are documented.
- It uses an Arm CPU and its architecture is not IBM compatible. As such a PC OS could be ported to it to ensure that the OS design is not overly tied to a single architecture.
- Arm processors are found in many consumer electronics devices such as PDAs and handheld games consoles (according to http://en.wikipedia.org/wiki/ARM_architecture#Features_and_applications).
- The Raspberry Pi is inexpensive.
- A number of devices could be interconnected over a network.
- It consumes relatively little power and needs no fan cooling.
- In addition to the provided standard ports it has a number of direct pin inputs and outputs which could be used for hardware control.
The Raspberry Pi has an unusual mix of features. The small size and low power requirements means it could be used for robotic devices but it is also capable of high definition video output (1080p30) so could be used as a high resolution graphics front end.
The Arm 11 CPU is documented at http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf (5Mbytes)
The system registers and memory map can be found in a document from Broadcom. A number of copies are available on the Internet. One is at http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf. (1.5Mbytes)
User documentation including how to get started with the device can be found at http://elinux.org/RPi_Hub.
There is a guide to beginning OS development on the Raspberry Pi at http://www.cl.cam.ac.uk/freshers/raspberrypi/tutorials/os/. It uses pre-existing boot files and shows how to access device registers including the video memory and display system.
Discussion forum sites:
- Usenet group comp.sys.raspberry-pi which is visible at https://groups.google.com/forum/?hl=en#!forum/comp.sys.raspberry-pi
Manufacturer's web site: http://www.raspberrypi.org/.
The Raspberry Pi boards are not sold as complete computers. To get one working you need to add the following.
- A power supply. Initially a micro USB unit was specified which can supply at least 700mA/3.5W.
- A SD card for the disk image.
- A display. HDMI and composite video out are provided. There is no VGA output.
- USB keyboard and mouse.
- A powered USB hub, if needed, for other USB peripherals.
Further information including the specifications of the models available can be found at http://en.wikipedia.org/wiki/Raspberry_Pi.