Raspberry Pi

Raspberry Pi Linux User Mode GPIO in C++ - Part 3

Wednesday, 30 Sep 2015 - 12:33 +0100 by Ralph McArdell Raspberry Pi, Linux, code, C++, GPIO

The previous instalments[1][2] have described creating the rpi-peripherals[3] library to access general purpose input output (GPIO) on a Raspberry Pi running Raspbian Linux in C++ from user space. They covered creating the phymem_ptr class template that utilises RAII (resource acquisition is initialisation[4]) to manage mapped areas of physical memory, setting up the library project and the implementation of support for basic general purpose input and output of single bit Boolean values, clocks and pulse with modulation (PWM).

Continue Reading

Raspberry Pi Linux User Mode GPIO in C++ - Part 2

Wednesday, 29 Jul 2015 - 18:04 +0100 by Ralph McArdell Raspberry Pi, Linux, code, C++, GPIO

Previously[1] I described the initial stage of developing a library called rpi-peripherals[2] to access general purpose input output (GPIO) on a Raspberry Pi running Raspbian Linux in C++ from user land – that is there are no kernel mode parts to the library. The library was built on memory mapping the physical memory locations of the Raspberry Pi’s BCM2835 processor’s peripherals’ control registers using the dev/mem device accessed via a RAII (resource acquisition is initialisation[3]) resource managing class template called phymem_ptr.

Continue Reading

Raspberry Pi Linux User Mode GPIO in C++ - Part 1

Thursday, 26 Mar 2015 - 15:22 +0100 by Ralph McArdell Raspberry Pi, Linux, code, C++, GPIO, mmap

I started experimenting with Raspberry Pi GPIO using Python[1][2]. Then the original Gertboard[3] kit was released so I ordered and built one which enabled me to play with BCM2835 peripheral IO beyond basic GPIO. At the time the Gertboard had test and example C code available[4] that, as with the Python case, I felt could be expressed more cleanly. I thought it would be interesting to see what advantages C++, hopefully C++11, features and idioms might provide.

Continue Reading

Some Clarification on Confusing BCM2835 SPI Master Documentation

Wednesday, 25 Sep 2013 - 18:01 +0100 by Ralph McArdell Raspberry Pi, hardware, spi

I have been adding support for peripheral types to my Raspberry Pi C++ peripherals library[1] and as a result have been reading the BCM2835 ARM Peripherals data sheet document[2] rather closely as well as the document’s errata page on eLinux[3]. I, like others, have been bumping into documentation errors – and even added one to the eLinux list errata. When I came to implement support for the Serial Peripheral Interface master (a.

Continue Reading

Raspberry Pi Linux User Mode GPIO in Python

Saturday, 18 May 2013 - 14:28 +0100 by Ralph McArdell Raspberry Pi, Linux, code, Python, GPIO, sys filesystem

In this article I am going to discuss an alternative approach to using GPIO on a Raspberry Pi in Python to that taken by an early version the RPi.GPIO package[1]. The approach occurred to me in 2012 while making a start at hardware interfacing and programming using a Raspberry Pi with some LEDs, switches and the like that had been collecting dust for 20 to 30 years. To read and write data to the GPIO lines I thought I would start with Python and the RPi.

Continue Reading