Programming the Raspberry Pi
Dr Eben Upton Raspberry Pi Foundation
contents
introduction unboxing and setup flashing an SD card logging in for the first time the JOE text editor running the hello world program a (slightly) more complex example an OpenGL ES graphics program in C the configuration file wrap up
introduction
Raspberry Pi is a small, cheap ARM-based PC for education and hobbyists Runs Debian GNU/Linux from an SD card
Standard image available from http://www.element14.com Includes a broad range of tools and examples
Feature CPU GPU Memory Video Audio USB Storage Networking Power
Specification 700MHz ARM1176-JZFS Broadcom VideoCore IV 256MB LPDDR2-800 HDMI, composite HDMI, stereo analog 2 x USB2.0 (model B) SD card 10/100 Ethernet 5V micro USB
General-purpose IO connector allows simple interfacing
unboxing
a quick tour
a quick tour
Power
a quick tour
Power
HDMI
a quick tour
Power
HDMI Ethernet
a quick tour
Power
HDMI Ethernet
USB
a quick tour
Audio Power
HDMI Ethernet
USB
a quick tour
Video Audio Power
HDMI Ethernet
USB
a quick tour
GPIO
Video Audio
Power
HDMI Ethernet
USB
a quick tour
GPIO SD Power
Video Audio
HDMI Ethernet
USB
cables and accessories
putting it all together
putting it all together
flashing an SD card
You may have purchased a preinstalled card Otherwise, you will need to
Download an image and a copy of the tool dd-removable from www.element14.com/raspberrypi Flash the image onto a 2GB SD card from a Windows PC
Insert the card into a card reader At a command prompt, type
dd-removable --list dd-removable bs=1M if=sd.img of= \\?\Device\Harddisk<X>\Partition0 -progress Substituting the appropriate number for <X>
flashing an SD card
flashing an SD card
You may have purchased a preinstalled card Otherwise, you will need to
Download an image and a copy of the tool dd-removable from www.element14.com/raspberrypi Flash the image onto a 2GB SD card from a Windows PC
Insert the card into a card reader At a command prompt, type
dd-removable --list dd-removable bs=1M if=sd.img of= \\?\Device\Harddisk<X>\Partition0 -progress Substituting the appropriate number for <X>
logging in for the first time
Insert a card Apply power to the device Red LED should come on After 5 seconds
Green LED should begin to flicker Text should appear on the screen
At the login prompt
enter the username pi, and password raspberry You may want to set the clock!
logging in for the first time
logging in for the first time
Insert a card Apply power to the device Red LED should come on After 5 seconds
Green LED should begin to flicker Text should appear on the screen
At the login prompt
enter the username pi, and password raspberry You may want to set the clock!
the JOE text editor
Standard image bundles JOE
Simple programmers text editor Syntax highlighting for Python and C
At the command line, type joe helloworld.py When the editor appears, type print hello world Now type Ctrl+K and then X to save and exit More documentation available at http://joe-editor.sourceforce.net
the JOE text editor
the JOE text editor
Standard image bundles JOE
Simple programmers text editor Syntax highlighting for Python and C
At the command line, type joe helloworld.py When the editor appears, type print hello world Now type Ctrl+K and then X to save and exit More documentation available at http://joe-editor.sourceforce.net
running the hello world program
We just wrote our first program! We can run it using the bundled Python interpreter At the command line, type python helloworld.py The text hello world will appear You can also run Python in interactive mode by just typing python A great way to experiment with the language
running the hello world program
running the hello world program
We just wrote our first program! We can run it using the bundled Python interpreter At the command line, type python helloworld.py The text hello world will appear You can also run Python in interactive mode by just typing python A great way to experiment with the language
a (slightly) more complex program
A series of examples, building up to a simple game of Snake, can be downloaded and unpacked by typing wget http://www.raspberrypi.org/game.tar.gz tar xvfz game.tar.gz
a (slightly) more complex program
a (slightly) more complex program
a (slightly) more complex program
A series of examples, building up to a simple game of Snake, can be downloaded and unpacked by typing wget http://www.raspberrypi.org/game.tar.gz tar xvfz game.tar.gz
an OpenGL ES graphics program in C
Raspberry Pi incorporates a powerful graphics accelerator We bundle a simple example
Written in C, using OpenGL ES Source can be found in /opt/vc/src/hello_pi/hello_triangle
To run the example
Change directory using cd Build it using make Run it by typing ./hello_triangle.bin
Try editing the source and the makefile using JOE
an OpenGL ES graphics program in C
an OpenGL ES graphics program in C
Raspberry Pi incorporates a powerful graphics accelerator We bundle a simple example
Written in C, using OpenGL ES Source can be found in /opt/vc/src/hello_pi/hello_triangle
To run the example
Change directory using cd Build it using make Run it by typing ./hello_triangle.bin
Try editing the source and the makefile using JOE
an OpenGL ES graphics program in C
More complicated examples available online, including Quake 3 at https://github.com/raspberrypi/quake3
an OpenGL ES graphics program in C
an OpenGL ES graphics program in C
an OpenGL ES graphics program in C
More complicated examples available online, including Quake 3 at https://github.com/raspberrypi/quake3
the configuration file (advanced users)
At startup, Raspberry Pi reads config.txt from the SD card
Controls display and overclocking Edit from a PC or on device using joe /boot/config.txt
A typical configuration file
# select 16:9 PAL sdtv_mode=2 sdtv_aspect=3 # medium size borders overscan_left=28 overscan_right=28 overscan_top=16 overscan_bottom=16
Common options include
arm_freq gpu_freq sdtv_mode overscan_* set ARM clock speed set GPU clock speed select PAL/NTSC set screen border
hdmi_mode force HDMI resolution
Very easy to break your install
wrap up
Weve seen how to
Set up, boot and configure your Raspberry Pi Create and edit text files using the JOE editor Run a simple Python script Download and unpack more examples Build and run one of the bundled C programs
Remember Raspberry Pi is just a GNU/Linux box
Many books and online tutorials available
Dont be afraid to play around with software
At worst youll have to reflash your SD card