Rapid Development with HW Building Blocks: Raspberry Pi SoM

In recent years there has been a lot of innovation in the System on Module (SoM) market.  The choices are plentiful for processor sub-systems integrated with memory and peripherals and packaged on a small module.   A Google search for “SoM, system on module” returns about 648,000 results!  Scanning through the results reveals a range of options  from 8 bit micro controllers to 32 bit processors capable of running Linux.  In this post I will discuss one of the more innovative developments in the SoM marketplace– the Raspberry Pi.


Raspberry Pi2

Raspberry Pi:  The Darling of the Maker Movement

Somewhere between full Open Source Hardware and traditional Commercial-Off-The-Shelf processing modules sits the Raspberry Pi.  Although some of the design documentation is freely available from the Raspberry Pi foundation Broadcom holds a lot of the key intellectual property because their highly integrated processing chip is the heart of the design.  This credit-card size, low power (~5W), low cost ($35) processing engine has proven to be a real game changer for the Maker community and it is earning serious consideration for several types of embedded systems.

The original Raspberry Pi is based on the Broadcom BCM2835 SoC, which includes a single ARMv6 processing core running at 700 Mhz along with a Graphics Processing Unit (GPU) capable of MPEG-2 and VC-1 encode/decode. The Raspberry Pi B+ announced in February 2015 has a quad core ARMv7 processor, a GPU,  and more RAM.

DRAM on the Pi ranges from 256 Mbytes on original systems up to 1 Gbyte available on the Raspberry Pi2. Note that the GPU shares DRAM memory with the processor.  High definition video decode can eat up significant amounts of shared memory so careful analysis is necessary here.  Nonvolatile memory for boot, OS, and all persistent storage is via Secure Digital (SD) or micro SD sockets depending on model. This makes it easy to upgrade nonvolatile memory capacity but presents problems for security sensitive embedded systems.  SD cards also pose problems for embedded systems that need to survive shock and vibration events.

The PI has a rich mix of peripheral interfaces for many applications: USB, 10/100 Mbps Ethernet, GPIO, I2C, SPI, and an analog audio output. It has a 15 pin CSI connector to allow direct attachment of a camera module and it has both HDMI and composite video outputs.  We have used it for applications as diverse as testing Analog to Digital converters to video monitoring to building cheap storage devices.

Originally intended as a platform for kids to learn about computers the Pi is now receiving interest as an embedded system component.  Responding to this interest, the Raspberry Pi Foundation created a new module in SODIMM format called the Raspberry Pi Compute Module.  The compute module uses the same Broadcom SoC chip as the original Raspberry Pi so it has the single ARMv6 processing core along  with a GPU.


Raspberry Pi Compute Module

Note that the Compute Module does not use a removable SD card, which makes it more suitable for vibration and security sensitive applications.   The Raspberry Pi Compute Module is an interesting option for some embedded systems.  I am not a big fan of SODIMMs though if a system has to survive shock and vibration.

Operating Systems

The Raspberry Pi runs a variety of Linux based operating systems. Arguably the most popular is Raspbian, which is based on a Debian port called Wheezy. There are many others. The Raspberry Pi Community has created an install manager called NOOBS that can load your OS of choice from the SD card on initial boot up.  Note that the original Raspberry Pi cannot run Windows or Ubuntu. The new Raspberry Pi 2 is rumored to be able to run Windows 10 and an Ubuntu distribution called Snappy Core.

The Raspberry Pi has a huge following of devoted users and developers providing support and there are many related products available. You can run a wide variety of open source software on the Pi.  The Pi offers decent performance, multimedia capability, and a mix of useful interfaces at a low price point.   And because of its dedicated community of developers it is very easy to use.  In fact, it is so cheap and easy to use it can be a great tool to speed up embedded system development.  We have several in our lab and keep finding more ways to use them.  That’s a topic for another post I guess!