This blog is part of a continuing series on GPIO programming. If you missed earlier installments, find them here.
In this post we'll look at a representative embedded board, one that we use for our embedded training classes and that we have used on a number of customer projects.
Toradex  is a vendor of embedded computing hardware, and offers a number of computer modules. A typical offering is the Colibri iMX6  series of SoM (System on a Module). They are offered in a SODIMM footprint, the same used by Small Outline Dual In-line Memory Modules.
They offer two versions with differing performance and price points: the Colibri Dual Lite 512MB and Colibri iMX6 Solo 256MB.
The basic features are the following:
- a 1 or 2 core ARM Cortex-A9 CPU with hardware FPU
- 256MB or 512MB of RAM
- 4GB of eMMC flash storage
- 2 USB 2.0 ports
- 10/100 MBit Ethernet
- Peripheral interfaces include I2C, SPI, UART, IrDA, PWM, GPIO, analog inputs, and CAN bus
- SDIO/SD/MMC memory slots
- A Vivante GC880 GPU with 2D and 3D acceleration and HDMI and RGB output
- touchscreen and camera interfaces
- Analog audio in and out
The boards cost under US$100, depending on quantity. They also offer a higher end iMX7 series of boards.
As it is in the form of a module with a single edge connector, it needs to be mounted on a board. Toradex offers the Aster carrier board  which is compatible and turns the SOM into a single board computer with suitable connections for power and peripherals.
Available on the carrier board are the following:
- Ethernet (1X 10/100 Mbit)
- USB 2.0 (1X Host, 1X Host/Client)
- SDIO/SD/MMC (1X 4 Bit)
- CAN base (up-to 2x, TX/RX)
- VGA (1X, Shared with RGB)
- RGB (1X)
- Resistive Touch (1X)
- Capacitive Touch (1X)
- USB-to-Serial Transceiver (1X)
- UART (2X TTL, 1X USB)
- I2C (1X)
- SPI (1X)
- PWM (4X)
- GPIO (up to 39 pins)
- Analog Input (4X)
- Analog Audio: Line in (1X), Mic in (1X), Headphone out (1X)
The Aster Carrier Board has GPIO headers compatible with Arduino Uno and Raspberry Pi boards, allowing it to work with third party modules/add-on boards for Arduino and Raspberry Pi.
The board is supported by a number of operating systems including Embedded Linux (Yocto), Windows Embedded Compact, Android, and QNX.
For our training classes we use the Toradex boards with a Waveshare  touchscreen. The screen uses HDMI video so we use a small Toradex Colibri HDMI adaptor board to drive it. The touchscreen supports multitouch and uses USB. All of the hardware mounts on a plexiglas frame.
Overall, we're quite pleased with this hardware. One drawback of this setup is that the touchscreen takes more power that can be delivered by the USB port, so it needs an external power adaptor in addition to the one that powers the Toradex carrier board. We use Yocto Linux with Qt for our training classes, and have Qt Creator set up to cross-compile using the Yocto SDK and deploy to the target system over Ethernet.
The Toradex Colibri iMX is a popular SoM suitable for use in commercial products. It is available in industrial temperature ranges and with guarantees of product lifetime. A carrier board like the Toradex Aster is often used for initial prototyping, after which the manufacturer designs a customer carrier board that has the footprint and interfaces that are needed for the specific device or application.
In part 8 of our series we'll look at programming GPIO using the libsoc library, which is supported on both the Raspberry Pi and Toradex platforms.