Rpi Software

Overview
The Rpi is a full fledged ARM computer, so it should be able to run about everything compiled for ARM (within system requirements). The boards do not have any on board storage, so everything is on the SD card. If you just want a working system, buy a preformatted SD card from the Foundation, or give PiCard a try, a GUI SD preparation tool made by Liam Frazer.

BootRom
The boards do not include NAND or NOR storage - everything is on the SD card, which has a FAT32 partition with GPU firmware and a kernel image, and an EXT2 partition with the rootfs.

We're not currently using a bootloader - we actually boot via the GPU, which contains a proprietary RISC core (wacky architecture ;). The GPU mounts the SD card, loads GPU firmware and brings up display/video/3d, loads a kernel image, resets the SD card host and starts the ARM.

You could replace the kernel image with a bootloader image, and that would work fine.

Distributions
Source code and binaries for Raspberry Pi will be available at various places from launch, including pre-built Linux distributions.

Ubuntu is currently listed as the default distribution on the Raspberry Pi website, but the Ubuntu developers have now stated they will not be supporting the ARMv6 architecture, so Ubuntu is likely to be dropped.

Eben says (regarding default distribution): "Either Ubuntu or Fedora; the main point in Fedora’s favour is their ongoing support for ARMv6 architectures."

Main page: RaspberryPiBoardDistributions

Development environments
Instead of just using compiler + editor, you can use "development tool chains" which integrate compiler, build system, packaging tools etc. in one tool chain.

Compiler
The Broadcom processor on Raspberry Pi contains an ARM v6 general purpose processor and a Broadcom VideoCore IV GPU. No data is currently available on other cores (if any) available in the BCM2835.

ARM
There is broad compiler support including gcc - please see ARM Compilers

The ARM is capable of around 500 BOGOMIPS, 5400 LINPACK KFLOPS with software floating point and 22000 KFLOPS with softfp hardware floating point.

GPU
The GPU provides APIs for Open GL ES 2.0, hardware-accelerated OpenVG, and 1080p30 H.264 high-profile decode.

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.

The GPU blob is an 18MB as an elf file, plus libraries. It does an awful lot.

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).

Flash
From Eben: "We'll have to take a look. We support hardware-accelerated OpenVG, and have had Flash Lite running incredibly fast. Personally, I'd like to get the official hardware-accelerated Flash 10 going on there, running against OpenGL ES 2.0, but that's something to think about after the launch."

Software hints
This section collects hints, tips & tricks for various software components.

Performance
Performance Page

Programming
Raspberry Pi plans to support Python and C as primary teaching languages, but expect to have some sort of BASIC on there too. Perhaps even BBC BASIC or SuperBASIC depending on copyright issues.

Languages tested on Alpha board

 * Interp
 * Scala
 * Clojure
 * OCaml
 * gcc
 * g++
 * Python
 * Perl
 * Ruby 1.9.2 (KidsRuby)

Expected to work

 * Java
 * Eclipse
 * Tcl/Tk
 * Lazarus
 * (maybe) BoaConstructor
 * Anjuta for C/C++
 * Dev-C++
 * CodeBlocks
 * Lua
 * BBC BASIC
 * mdfs.net
 * ROOL wiki, forum threads: 1, 2, 3, 4, 5
 * Small Basic
 * Squeak implementation of Smalltalk
 * Processing
 * Other BASIC variants common to Debian/Ubuntu/Fedora etc. are all likely to work fine, including:
 * basic256 - educational BASIC programming environment for children
 * bwbasic - Bywater BASIC Interpreter
 * sdlbasic - BASIC interpreter for game development
 * yabasic - Yet Another BASIC interpreter

"See also: RaspberryPiBoard/EducationalLinks for education-friendly languages."

Graphical Programming

 * Gambas - possibly a good choice; easy like old visual basic
 * Scratch
 * Alice
 * Android App Inventor
 * Kodu
 * Star Logo
 * PrimerLabs CodeHero

Robotics

 * Lego Mindstorms
 * KTurtle and other Logo/turtle graphics (The IO board supports motor drive outputs)

Uncategorised

 * Sugar Learning Platform: An alternative to the Desktop metaphor of the GUI
 * Frink
 * GAViewer
 * GeoGebra
 * codecademy.com

See also Category:Education