The Raspberry Pi Board

The Raspberry Pi is an awesome $35 dollar Linux board containing a Broadcom system on chip that integrates a 700MHz ARM11 CPU core, a very powerful GPU capable of running 1080p graphics as well as 512MBs of RAM. The Board provides two USB ports, an Ethernet port, an HDMI port as well as a 2×13 0.1″ header providing access to GPIO/I2C and SPI peripherals! for more on the Raspberry Pi board please visit: http://www.raspberrypi.org/

Figure 1. A Hi-res Image of the Raspberry Pi Board (Rev 2) http://www.raspberrypi.org/archives/1929

Figure 1. A Hi-res Image of the Raspberry Pi Board (Rev 2) http://www.raspberrypi.org/archives/1929

I will be writing a series of tutorials on developing for the Raspberry Pi in C++. In order to follow through with these tutorials you will need to have good familiarity with C/C++ and to also be somewhat familiar with Linux. The tutorial series will include the following topics:

Setup:

Development:

Peripherals:

This section lists blog entries that demonstrates how to use C++ to access the various peripherals e.g. I2C/SPI/GPIO/UART on the Raspberry Pi. I must warn you that this code is not necessarily hardened and may not be ideal for use as a “plug & play” API.  I highly recommend WiringPi for those that simply want an API to call and use in their projects.

The main objective of these examples is to demonstrate how C++ classes can be used in a simple but effective way to control the Pi’s hardware. It is also a diary of sorts for me as it gives me the opportunity to practice, develop and keep track of my “mad” C++ skills and knowledge of the hardware interfaces.

4 Responses to The Raspberry Pi Board

  1. Kyle says:

    Hi!

    How is installment of episode 5 “Remote debugging of your application while its running on the RaspberryPi ” coming along?

    I had great success with setting up my development environment following your directions but it has been and continues to be a struggle to get the remote debugging working. It would be nice if you were working on this installment :)

    Thanks

    • halherta says:

      Kyle,
      Traditionally I was planning to write it up in Early December (Waiting until I get my New 512 MB RPi). But since there’s interest on this topic I will try to have it comppleted by this weekend!

  2. Kyle says:

    This is great news!

    The trouble I have is with properly configuring eclipse to do the remote debugging. Which actual gdb to use within eclipse is a question (I have attempted a few). The connection setup within the debugging configuration also seems obvious as to what is required. However it never seems to work as eclipse complains that the “Program is not a recognized executable.” I can only assume it is referring to gdb, the other possibility could be the HelloWorld but I doubt it. The thing is that it is not clear how to actually see what eclipse is trying to do when it starts the debugging effort – if there was an output console or log to look at at see what actual tool (i.e. gdb) eclipse is trying to utilize would be a help. Maybe if you run into this same problem you could comment about how you were able to diagnose and solve this mystery. I am supplying this information here just as a point of reference for you.

    Thanks for your efforts on your tutorials here they are very nice and well done.

    • halherta says:

      Kyle I’d imagine that you need to get Eclipse to utilize the toolchain’s “arm-linux-gnueabihf-gdb” gdb client (not Kubuntu’s/ Ubuntu’s native GDB Client!!!!) and have that connected to a gdb-server (You’d have to install the gdb-server package on the RPi) running on the Raspberry Pi. The other way that you could go is to integrate the “gdb-multiarch” GDB client in Eclipse. I will test both approaches. Details will be forthcoming

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>