Raspberry Pi is probably the most popular single-board computer of all time. Raspberry Pi Compute Module represents a compact version of Raspberry Pi, designed especially for embedded use. The entire minicomputer is set on a PCB, which is mechanically compatible with SODIMM (notebook) RAM module. Used SoC is the same as the one on Raspberry Pi A, A+ ,B ,B+ or RPi Zero. Compute Module itself doesn’t contain any additional connectors and can be easily integrated into third-party designs.
Raspberry Pi Compute Module is based on a SoC (system on chip) with the model designation Broadcom BCM2835. It conceals one ARM1176JZFS core (ARM11) default clocked at 700MHz. ARM1176JZFS core is based on the ARMv6 architecture and includes hardware FPU and VFP extension (more about ARM extensions at ARMv6 vs ARMv7). SoC also contains VideoCore IV GPU clocked at 250MHz (24 GFLOPS), supporting OpenGL ES 2.0 or hardware encoding/decoding H.264 1080p30. All inputs and outputs are implemented only via contacts on the edge of the SODIMM module (gold fingers). Since there is a 200 of them, it was possible to wire out some buses or interface that were not available on other RPi models. Video output is provided by HDMI 1.3a (supporting audio over HDMI) and by the analog composite output (NTSC/PAL). On the Compute Module, there are two DSI display channels available. Also, MIPI-CSI camera interface is now present in two instances. The gold fingers brought out 45 GPIO channels in total. GPIOs also include 2xI2C, 2xUART (one default used for Linux console), SPI and I2S.
Raspberry Pi Compute Module does not contain any ethernet controller (PHY) or USB hub. The single USB, provided directly by BCM2835 SoC, is just routed to gold fingers of the module. The ethernet interface (if needed) therefore must be placed on the host board. For example, USB or SPI can be easily used to connecting the external ethernet PHY. There is a lot of PHY chips for both busses available (for example ENC28J60 – this one has even Device Tree Overlay prepared on Raspbian system image).
Raspberry Pi Compute Module does not contain regulators providing the necessary power supply. The module must therefore be powered from the host board. Required voltages are 3.3V, 1.8V and 2.5V. The voltage of 2.5V, however, is used only by DAC in BCM2835 SoC and supply input can by connected to 3.3V if the composite video output of the Compute Module is not used. In that case, the Compute Module needs only a pair of supply voltages – 3.3V, 1.8V.
|CPU||single-core ARM1176 at 700MHz|
|I/Os||gold finger contacts comprising HDMI, 2x MIPI-CSI for camera, 2x MIPI-DSI for display, 1x USB2.0 host, 45 GPIOs, composite video out, power + GPIO reference voltage|
|Power||1.8V, 2.5V a 3.3V|
Mechanical layout of the Raspberry Pi Compute Module is compatible with the DDR2 SODIMM module (200pin, 1.8V). When selecting a compatible socket for a host board, important parameter to be considered is the voltage for which the socket is intended. 200pin SODIMM connectors are usually made in versions for 1.8V and 2.4V SODIMM modules, each version has differently positioned a plastic key element. However, sometimes voltage is not mentioned at all in catalogue for particular SODIMM connector. A little clue may be that the 1.8V connectors from TE CONNECTIVITY have usually label in format XXXXXXX-4 while the 2.4V versions in format XXXXXXX-1. However, sometimes RPi Compute Module does not fit into particular socket, although all the above mentioned parameters are respected. How smoothly module fits into a compatible socket also depends on whether you use a Compute module manufactured in the UK or the one manufactured in China.
Verified compatible SODIMM connectors for example:
- TE 1565917-4
- ATTEND 121A-52A00
Compute Module I/O Board
Raspberry Pi Compute Module can also be purchased in a form of the development kit, which besides the Compute Module itself contains the host board for the module. Compute Module I/O Board provides all the required supply voltage via a switching regulators (the same chip as on Raspberry Pi B+). Board also includes pin headers providing access to 45 GPIO lines, two CSI connectors for camera, two DSI connectors for display, full-size HDMI and three USB connectors. On pin header there is also RUN pin, which can be used to a hardware-controlled start of Compute Module. There is also a pin for the analog composite video output. Three USB connectors are consists of one USB A and two microUSBs. One microUSB is used to power the board (standard 5V), the second microUSB serving as USB-OTG (slave) and a USB A serves as a USB host (as on standard Raspberry). USB-OTG and USB host, however, do not work simultaneously (SoC on the Compute Module still has only one USB line) and if one of them is needed it is necessary to switch between them using jumper J4.
With help of the Compute Module I/O Board can be also uploaded content (OS image) to eMMC memory on Raspberry Pi Compute Module. In this case, jumper J4 is switched to “USB slave” (USB-OTG). Subsequently, the Compute Module I/O Board can be connect via microUSB connector to a PC and by using the Rpiboot utility, the image of operating system can be upload to flash memory (eMMC) of the Raspberry Pi Compute module. P>
Raspberry Pi B+ requires an operating system capable of running on ARMv6 architecture with Thumb and VFPv2 extensions. Raspberry Pi Foundation has released a new modified port of Debian operating system for this specific configuration, called Raspbian. Raspbian is specifically based on Debian armhf (which was originally targeted for ARMv7 – Thumb-2 and VFP3D16). Modified system among other things, includes proprietary GPU drivers for the VideoCore IV, many Device tree overlays for controlling various peripherals or utilities for easy configuring of RPi. The system includes a graphical desktop environment LXDE. Raspbian uses its own package repository to ensure compatibility with the custom system build.
For purposes of software development, you can choose from the classic range of programming languages available on Linux. Although Python is sometimes perceived as the preferred language for RPi (Python IDE is pre-installed and Python is recommended by RPi creators), there is no problem to develop natively in C/C++ or use anything else. For example popular IDE Code::Blocks (available in the official repository) works at RPI fairly smoothly. Of course, you can use gcc (g++) directly and compile only via terminal. Compiling on such slow machine, however, is not very comfortable (most likely the reason why interpreted languages scoring on RPi) and it worth considering rather using of cross compiler running on some more powerful machine. Thanks to the wide and productive community there is a lot of libraries for controlling of GPIO ports (Pigpio, WiringPi or RPi.GPIO). Also many “drivers” (overlays or kernel modules) are available for various external circuits. It is also very easy to control various buses (I2C, I2S, SPI, UART) from your software.
There are many other available alternative operating systems, respectively their ports like Ubuntu mate, OSMC, OpenELEC or OpenWrt. Different systems are often dedicated to serve some specific purpose and are intended for use of RPi as embedded device.
working on it…
Raspberry Pi Compute Module makes no secret of its focus on OEM use in third party applications. This represents a tiny step aside of RPi makers from a charity production of mini-PCs for students. The price reaches $30 and is actually bigger than the price of fully equipped RPi boards (based on original BCM2835). RPi Compute Module, however still represents one of the cheapest computer-on-module devices on market with the best community-based hardware and software support. If you’re looking for tiny, low-cost embedded computer, Raspberry Pi Compute Module is definitely worth to be considered.