SlideShare a Scribd company logo
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• 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
Feature Specification
CPU 700MHz ARM1176-JZFS
GPU Broadcom VideoCore IV
Memory 256MB LPDDR2-800
Video HDMI, composite
Audio HDMI, stereo analog
– Standard image available from
http://www.element14.com
– Includes a broad range of tools and
examples
• General-purpose IO connector
allows simple interfacing
Audio HDMI, stereo analog
USB 2 x USB2.0 (model B)
Storage SD card
Networking 10/100 Ethernet
Power 5V micro USB
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
Audio
Video
Power
HDMI
Ethernet
USB
a quick tour
Audio
Video
Power
GPIO
HDMI
Ethernet
USB
a quick tour
Audio
Video
Power
GPIO
SD
HDMI
Ethernet
USB
cables and accessories
putting it all together
putting it all together
flashing an SD card
• You may have purchased a pre-
installed 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= ?DeviceHarddisk<X>Partition0 -progress
– Substituting the appropriate number for <X>
flashing an SD card
flashing an SD card
• You may have purchased a pre-
installed 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= ?DeviceHarddisk<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– 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– 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 programmer’s text editor
– Syntax highlighting for Python and C
• At the command line, type
joe helloworld.py
• When the editor appears, type• 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 programmer’s text editor
– Syntax highlighting for Python and C
• At the command line, type
joe helloworld.py
• When the editor appears, type• 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• 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• 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/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/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
• Common options include
• A typical configuration file
# select 16:9 PAL
sdtv_mode=2
sdtv_aspect=3
• Common options include
– arm_freq set ARM clock speed
– gpu_freq set GPU clock speed
– sdtv_mode select PAL/NTSC
– hdmi_mode force HDMI resolution
– overscan_* set screen border
• Very easy to break your install
# medium size borders
overscan_left=28
overscan_right=28
overscan_top=16
overscan_bottom=16
wrap up
• We’ve 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– Build and run one of the bundled C programs
• Remember Raspberry Pi is just a GNU/Linux box
– Many books and online tutorials available
• Don’t be afraid to play around with software
– At worst you’ll have to reflash your SD card

More Related Content

Programming the Raspberry Pi element14

  • 1. Programming the Raspberry Pi Dr Eben Upton Raspberry Pi Foundation
  • 2. contents • introduction • unboxing and setup • flashing an SD card • logging in for the first time • the JOE text editor • running the “hello world” program• running the “hello world” program • a (slightly) more complex example • an OpenGL ES graphics program in C • the configuration file • wrap up
  • 3. 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 Feature Specification CPU 700MHz ARM1176-JZFS GPU Broadcom VideoCore IV Memory 256MB LPDDR2-800 Video HDMI, composite Audio HDMI, stereo analog – Standard image available from http://www.element14.com – Includes a broad range of tools and examples • General-purpose IO connector allows simple interfacing Audio HDMI, stereo analog USB 2 x USB2.0 (model B) Storage SD card Networking 10/100 Ethernet Power 5V micro USB
  • 15. putting it all together
  • 16. putting it all together
  • 17. flashing an SD card • You may have purchased a pre- installed 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= ?DeviceHarddisk<X>Partition0 -progress – Substituting the appropriate number for <X>
  • 19. flashing an SD card • You may have purchased a pre- installed 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= ?DeviceHarddisk<X>Partition0 -progress – Substituting the appropriate number for <X>
  • 20. 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– Text should appear on the screen • At the login prompt enter the username pi, and password raspberry • You may want to set the clock!
  • 21. logging in for the first time
  • 22. 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– Text should appear on the screen • At the login prompt enter the username pi, and password raspberry • You may want to set the clock!
  • 23. the JOE text editor • Standard image bundles JOE – Simple programmer’s text editor – Syntax highlighting for Python and C • At the command line, type joe helloworld.py • When the editor appears, type• 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
  • 24. the JOE text editor
  • 25. the JOE text editor • Standard image bundles JOE – Simple programmer’s text editor – Syntax highlighting for Python and C • At the command line, type joe helloworld.py • When the editor appears, type• 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
  • 26. 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• 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
  • 27. running the “hello world” program
  • 28. 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• 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
  • 29. 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
  • 30. a (slightly) more complex program
  • 31. a (slightly) more complex program
  • 32. 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
  • 33. 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/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
  • 34. an OpenGL ES graphics program in C
  • 35. 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/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
  • 36. an OpenGL ES graphics program in C • More complicated examples available online, including Quake 3 at https://github.com/raspberrypi/quake3
  • 37. an OpenGL ES graphics program in C
  • 38. an OpenGL ES graphics program in C
  • 39. an OpenGL ES graphics program in C • More complicated examples available online, including Quake 3 at https://github.com/raspberrypi/quake3
  • 40. 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 • Common options include • A typical configuration file # select 16:9 PAL sdtv_mode=2 sdtv_aspect=3 • Common options include – arm_freq set ARM clock speed – gpu_freq set GPU clock speed – sdtv_mode select PAL/NTSC – hdmi_mode force HDMI resolution – overscan_* set screen border • Very easy to break your install # medium size borders overscan_left=28 overscan_right=28 overscan_top=16 overscan_bottom=16
  • 41. wrap up • We’ve 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– Build and run one of the bundled C programs • Remember Raspberry Pi is just a GNU/Linux box – Many books and online tutorials available • Don’t be afraid to play around with software – At worst you’ll have to reflash your SD card