Prior to 19th October 2012, there was previously also a third stage bootloader (loader.bin) but this is no longer required. <ref>https://github.com/raspberrypi/firmware/commit/c57ea9dd367f12bf4fb41b7b86806a2dc6281176</ref>

Prior to 19th October 2012, there was previously also a third stage bootloader (loader.bin) but this is no longer required. <ref>https://github.com/raspberrypi/firmware/commit/c57ea9dd367f12bf4fb41b7b86806a2dc6281176</ref>

−

Raspbian Linux image (others?) available on the foundation's website ([http://www.raspberrypi.org/downloads]) also contains cut-down versions of the above files (fixup_cd.dat, start_cd.elf). These are used when GPU memory is set to 16 MB, which in result disables some GPU features. More info [http://www.raspberrypi.org/phpBB3/viewtopic.php?p=198420#p198420 here].

+

Raspbian Linux image (others?) available on the foundation's website ([http://www.raspberrypi.org/downloads]) also contains cut-down versions of the above files (fixup_cd.dat, start_cd.elf). These are used when GPU memory is set to 16 MB, which in result disables some GPU features. More info [http://www.raspberrypi.org/phpBB3/viewtopic.php?p=198420#p198420 here]. In addition, there are also testing versions of the above files (fixup_x.dat, start_x.elf), which enable potentially unstable/not-fully-tested/hacky functionality - currently, using these files instead of the usual fixup.dat/start.elf will cause extra video codecs to become available.

Because of this boot process, use of an SD card to boot the RPi is mandatory. This does however mean that you cannot 'brick' the device.

Because of this boot process, use of an SD card to boot the RPi is mandatory. This does however mean that you cannot 'brick' the device.

Programming - programming languages that might be used on the Raspberry Pi.

Overview

If you just want a working system, all that is required is a correctly formatted SD card. For details on how to create or get one, please see the Hardware Basic Setup page.

In order to understand the software compoonents in the RPi, you should first understand how it boots up. At power-up, the CPU is offline, and a small RISC core on the GPU is responsible for booting the SoC, therefore most of the boot components are actually run on the GPU code, not the CPU.

The boot order and components are as follows:

First stage bootloader - This is used to mount the FAT32 boot partition on the SD card so that the second stage bootloader can be accessed. It is programmed into the SoC itself during manufacture of the RPi and cannot be reprogrammed by a user.

Second stage bootloader (bootcode.bin) - This is used to retrieve the GPU firmware from the SD card, program the firmware, then start the GPU.

GPU firmware (start.elf) - Once loaded, this allows the GPU to start up the CPU. An additional file, fixup.dat, is used to configure the SDRAM partition between the GPU and the CPU. At this point, the CPU is release from reset and execution is transferred over.

User code - This can be one of any number of binaries. By default, it is the Linux kernel (usually named kernel.img), but it can also be another bootloader (e.g. U-Boot), or a bare-bones application.

Prior to 19th October 2012, there was previously also a third stage bootloader (loader.bin) but this is no longer required. [1]

Raspbian Linux image (others?) available on the foundation's website ([1]) also contains cut-down versions of the above files (fixup_cd.dat, start_cd.elf). These are used when GPU memory is set to 16 MB, which in result disables some GPU features. More info here. In addition, there are also testing versions of the above files (fixup_x.dat, start_x.elf), which enable potentially unstable/not-fully-tested/hacky functionality - currently, using these files instead of the usual fixup.dat/start.elf will cause extra video codecs to become available.

Because of this boot process, use of an SD card to boot the RPi is mandatory. This does however mean that you cannot 'brick' the device.

GPU bootloaders

Currently all of the GPU software and firmware is supplied in binary format. For Raspbian the latest stable release is included in the image and can be updated with apt-get (see the adding software page). The latest bleeding edge version can be downloaded from the RPI firmware section on GitHub. At this time, the source code is not available.

rpi-update is also available as an easier way of updating the firmware and kernel. Please note, as this firmware is bleeding edge, it really should only be used by advanced users and could potentially still have bugs and be incompatible with existing images.

Distributions

SD card images of a number of pre-built distributions including Raspbian (the RPi official distribution based on Debian), Arch Linux ARM, and RISC OS are available from the Raspberry Pi foundation website. Pre-loaded SD cards are also available from The Pi Hut.

GPU

The GPU is capable of 1Gpixel/s, 1.5Gtexel/s or 24 GFLOPs of general purpose compute and features a bunch of texture filtering and DMA infrastructure - the Raspberry Pi team are looking at how they can make this available to application programmers. For the documentation on some Broadcom APIs exposed to control the GPU, see RPi VideoCore APIs.

The GPU blob is an 18MB elf file, including libraries. It does an awful lot. [2]

DSP

There is a DSP, but there isn't currently a public API (Liz thinks the BC team are keen to make one available at some point).