The History of Comput(e)ing
If you have been following the hardware development of the Raspberry Pi since its initial release, you will know that it has gone through several iterations ( see: How To Identify Which Model Of The Raspberry Pi You Have ), you may have even built your own project (Raspberry Pi Projects ) with a Raspberry Pi and an add-on accessory (The specified item was not found. ), however I have quickly found (such as with my The specified item was not found. build) that it becomes big, bulky and has to progress from the prototyping stage into a project which is efficiently engineered in its design.
Two years ago, the Raspberry Pi Compute module was introduced, creating the ability for the 'brains' behind the Raspberry Pi to be used as a modular unit, in a SODIMM form factor, that can be plugged into an embedded hardware design. No longer did you have to accommodate the entirety of the Raspberry Pi with the placement of its General Purpose Input/Output (GPIO) pins, USB sockets and network port, etc. Now you can create your own printed circuit board for it to plug into, (perhaps with EAGLE), with only the parts, ports and connections that you require, from all of them, to only a few of them. This likely raised a whole bunch of questions, including the ultimate 'if an upgraded version of the Compute module is released, can it be used as a drop in replacement?'
The day when that question can be answered has finally arrived, the Raspberry Pi Compute Module has an upgrade, after the release of the The specified item was not found. , Eben Upton confirmed that a 'Compute Module 3' was in the works, it is now available in two versions, with an updated IO board.
{gallery} Raspberry Pi 3 Compute Module |
---|
Compute Module: CM3, CM3 Lite & IO Board |
Compute Module: CM3 with onboard eMMC |
Compute Module: CM3 Lite without onboard eMMC |
Compute Module: IO Board and CM3 modules |
Datasheets and Schematics
You can find all of the documentation that has been released by Raspberry Pi Trading / Raspberry Pi Foundation on their website. The documentation gives a full breakdown of the IO Board, Compute Module(s) along with guides on using the Raspberry Pi Cameras and attaching the Official Display along with software guidance on flashing the eMMC. I have also attached version one of the datasheet to this document, you can find the link at the bottom.
Compatibility and Differences Between CM1, CM3 and CM3 Lite
If you have already produced a design based on the CM1 (Compute Module based on Raspberry Pi 1) then you're in luck, the CM3 (Compute Module base on Raspberry Pi 3) is practically a drop-in replacement so long as you have the appropriate software updated onto the on board storage (eMMC). You also need to take into consideration the new power and thermal requirements, failing to do so will mean that the speed of the CM3 module will be throttled. There is a minor size difference as the CM3 is 1mm higher/longer, this change and other alterations are laid out in the documentation available on the Raspberry Pi Foundation website.
There are few design differences between the modules. The CM1 and CM3 have been made with the intention of using the onboard eMMC (embedded MultiMedia Controller) storage. Between the CM1 and CM3 there has been a practical change in how the HDMI_HPD_N_1V8 (hot plug detection) is accessed, and also EMMC_EN_N_1V8 (which I'm not entirely sure what this is, I'm assuming it's an 'enable' voltage) and these are now via an IO Expander before hitting the SoC. This doesn't make a great deal of a difference to the typical application.
The main difference between the CM3 and CM3 Lite is that the eMMC storage is not populated at all. The layout is still on the PCB, however the pin out of the compute module has changed so that the relevant SD/SDX pins are now broken out onto the 200 pin connector. This allows use of an external microSD/SDCard connector (or potentially an external eMMC storage) such as the one on the IO Board. Going by the documentation, you will need to connect SDX_VDD to a voltage between 1.8v - 5% and 3.3v + 5% at 50mA.
Compute Module 1 | Compute Module 3 | Compute Module 3 Lite |
---|---|---|
- BCM2835 System on Chip (SoC) processor - Single Core 32bit, 700Mhz - ARM11 with ARMv6 Instruction Set - 512MByte LPDDR2 RAM - 4GBytes eMMC | - BCM2837 System on Chip (SoC) processor - Quad Core 64bit, 1.2Ghz - 512KByte L2 Cache - ARM Cortex A53 with ARMv7 Instruction Set - 1GByte LPDDR2 RAM - 4GBytes eMMC | - BCM2837 System on Chip (SoC) processor - Quad Core 64bit, 1.2Ghz - 512KByte L2 Cache - ARM Cortex A53 with ARMv7 Instruction Set - 1GByte LPDDR2 RAM - SD/eMMC pins exposed |
Due to the CM3 using the BCM2837, this means that consideration needs to be made for power consumption and heat dissipation. According to the documentation, VBAT will require more power to the processor when it is under heavy load. For the CM3 module, and CM3 Lite, there are six power supply rails to the module which have to be accommodated for (excluding consideration for SDX_VDD).
- VBAT which feeds SMPS and generates core voltage o Min 2.5v o Max 5v + 5% o 2000mW for CM1, 3500mW for CM3/3L | - 3v3 for processor, i/o and eMMC o Min 3.3v - 5% o Max 3.3v + 5% o 250mA | - 1v8 for processor, i/o and SDRAM o Min 1.8v - 5% o Max 1.8v + 5% o 250mA |
- VDAC for TV-Out DAC o 2.5v - 5% o 2.8v (if DAC used) o 3.3v + 5% (if DAC not used) o 25mA | - GPIO0-27_VREF for GPIO 0-27 o 1.8v - 5% o 3.3v + 5% o 50mA | - GPIO28.45_VREF for GPIO 28-45 o 1.8v - 5% o 3.3v + 5% o 50mA |
This means that although the CM3 is a drop-in replacement for the CM1, the design ideally needs to be able to supplement the processor with 3500mW. For the benefit of clarity, here are the requirements for if an external eMMC/SDCard/microSD is connected for the CM3 Lite:
- SDX_VDD which powers the SDCard pins o 1.8v - 5% o 3.3v + 5% o 50mA |
Also interesting, is that the VDAC, which handles the composite TV-Out, requires a connection of 3.3v if it is not to be used for video output.
Changes to the IO Board
The are only two main changes to the IO Board to be used for prototyping with the Compute Module. The first is that the programming JTAG header is no longer accommodating for a through-hole socket to be soldered to it, and is instead a ribbon connector. Secondly, you can now plug in a microSD card onboard. This is for the purpose of communicating with the CM3 Lite.
The new IOBoard is backward compatible with the Compute Module 1, however it should be noted CM1 does not have the necessary pinout to utilise the onboard microSD slot.
Other connectors on the board remain the same, you have access to all of the GPIO pins as per usual, along with the breakout for each of the CSI aka Camera ports, and also the dual DSI / Display ports. Upon further investigation into the DSI connectors, as I was interested in whether or not it is currently possible to prototype on the Compute Module with the Official Raspberry Pi touchscreens and use two of them, or use one of them in conjunction with HDMI. I discovered that at present the functionality requires further development, and any companies, along with Engineers whom are looking into this solution are advised to get in touch with element14's Raspberry Pi Customization Service. However, it is possible to use either the HDMI or DSI display connectors in conjunction with an SPI based display.
Operating System and Booting Support
The compute modules have support from the official version of Linux designed for the Raspberry Pi which is called Raspbian. This is currently 32bit based and is a version of the linux distribution, Debian.
Over the course of the past year, support for the BCM2837 chip has managed to make its way into the mainline linux kernel, allowing support for the processor to be compiled for any linux distribution. Though there is still reliance on the proprietary binary blobs for the VideoCore chip required to let the CM3 boot. There are currently efforts under way to write an open source firmware which will remove reliance on these blobs, and there is already an open source OpenGL driver being developed. Mainline linux kernel support also means that a 64bit version of Linux for the Compute modules can be built, and they have, at the time of writing SUSE has a version which works with the Raspberry Pi 3, and it is (may be) also possible with Arch Linux and Gentoo.
There are also an array of methods to start Linux on the module which helps to reduce the reliance on the eMMC/SDCard, such as Network or USB booting. Allowing the module to truly be used as an Internet of Things device, or used in a scenario where the activity intelligence of the module needs to be dynamic.
What Could the Compute Module be used for?
In October 2016, you likely heard about NEC using a modified version of the Compute Module 3 in their screens. Embedding what is effectively a 'thin client' that has the ability to network boot into a display can be very powerful. Depending on the configuration of the screen you can then have dynamic updates for presentation (from public transport departures to University timetable information) or, if the inputs were broken out to the screen, a 'thin client' that can be setup to remotely control a desktop environment for typical Information Technology computer work, infrastructure permitting.
I also mentioned that it could be used as an Internet of Things solution, and the perfect example of that would be this Case Study | How Premier Farnell helped Future Home to develop their Smart Technology idea for the global market where element14 as a company aided a start-up maker company move into production.
What would I make with it? I'm personally interested in computer games, and you may have seen many a Raspberry Pi Gameboy, well it seems to me that the Compute Module 3 is the perfect size to be able to have a dual-screen setup inside a suitable case for a portable gaming console, either for emulation or otherwise, without the need for it to be 'hacked' but instead suitable for an efficient platform for its own games (thanks to the open source OpenGL efforts and so on). Two could even be used in conjunction with one another (did you know the Wii U tablet uses two together? One handles the processing and the other handles the H264 video rendering).
I'll leave that idea in your mind.
What Will You Make?
Check out spannerspencer's blog to share Your Thoughts on the Raspberry Pi Compute Module 3
Top Comments