The 96Board specification was created by Linaro, launched to foster the ARM ecosystem. The 96Board specification is actually a collection of three platforms for Cortex-A and Cortex-M platforms, including the Consumer Edition (CE), Enterprise Edition (EE), and IoT Edition (IE). The latter is only 30 by 60 mm.
All are based around a low speed, 2- by 20-pin mezzanine expansion connector with a 2-mm pitch. The connector supports up to a pair of UARTs, an SPI bus, up to two I2C interfaces, an optional I2S interface, and a dozen GPIOs. There are power and reset connections, as well. A 3.3 V version is defined with a 2 by 15 pin header with a 2.54-mm/0.1-in pitch.
Somewhere along the line the designers forgot about the ARM connection and started delivering boards based on other processor architectures like Intel’s x86 platforms. These tended to be larger chips and suitable for the larger form factors like the EE board. That is until recently.
Enter Intel’s Quark, a 32-bit platform designed for low power applications. The architecture has been used on a number of platforms targeting the Internet of Things (IoT), including Intel’s Curie module. The Curie is built around a 32-MHz Quark SE SoC with 384 Kbytes of flash and 80 Kbytes of SRAM. There is also a 6-axis accelerator/gyroscope and a Bluetooth Low Energy (BLE) wireless interface. There is an ARC-EM4 microcontroller for handling the sensors.
The Curie is also the basis for the Gumstix Radium 96bie (Fig. 1). This IE platform was actually designed using Gumstix’s Geppetto. Geppetto is a web-based board design tool that now includes Curie as an option. The open-source board design can be changed using Geppetto. The upfront cost for a new board design is only $1,999. This is for delivery of completed boards like the Radium 96bie, not just a blank PCB. It is also possible to design 96Board platforms with other modules and processors.
But back to the Radium 96bie.
The board has a pair of USB interfaces: One is a host and the other is for debugging. The header provides the standard 96Board support. There is also a connector for a Bluetooth antenna. Power can be provided by the header or the USB debug port.
The other piece to the Curie puzzle is General Vision’s neural network, which is built in. It has 128 neurons (Fig. 2). It is actually an embedded binarized neural network (eBNN) that can be used for classification. It is significantly more powerful than anything that could be implemented on the CPU, and many-higher performance systems as well. Deep neural networks (DNN) are the hot artificial intelligence (AI) topic these days. The Curie may not be running a self-driving car but its network can do some interesting analysis.
There are a couple of ways to get started with the Radium 96bie board since it is functionally the same as the Arduino 101, another Curie-based board. In fact, you can switch from one to the other using the same toolsets.
The two I worked with include the Arduino development platform and Intel’s Open Developer Kit (ODK). The Arduino approach is more amenable for the casual developer. It concentrates on the Curie as an x86 platform, but it is possible to program the neural network as well. The network can learn, so typically a developer will have two applications for the platform. One will be used for training. The other would be the application to be deployed that would use the training results. Of course, it is possible to have one application that does both.
The CurieNeurons library is used to work with the neural network. It provides services like data acquisition and feature extraction. There is a Knowledge Builder application that can handle offline training. There are a number of examples, including a gesture recognition system that works with the 6-axis accelerometer and gyro.
Video recognition is possible with the Arduino 101 board and an ArduCam Shield. The Gumstix board does not have a camera interface, so I was not able to test this.
The Intel ODK is based on Eclipse and also works with a range of boards, including the Arduino 101 and the Radium 96bie. One advantage of the ODK is support for Zephyr, a compact, real-time operating system (RTOS) that targets lightweight IoT platforms, including those for wearable applications. Zephyr is platform neutral, so the Curie is just one of many platforms that it will work with. The ODK has Zephyr projects in the mix, making it easy to get started.
Zephyr is actually based on Wind River’s VxWorks Microkernel Profile for VxWorks. The open-source platform is designed for commercial applications. It was designed to be modular and secure. I will do more on Zephyr sometime in the future.
For now, the installation of the ODK was straightforward, but more extensive than the Arduino tool install. I installed it on Ubuntu 14.04. because I had a virtual machine handy, but it also works with the latest 16.04 version. Getting started with the same projects was slightly more involved, but not by much. The advantage of Eclipse is significant especially when taking advantage of other plug-ins available.
The other piece to the ODK puzzle is the Arc32 toolchain for the ARC-EM4 microcontroller. It did not work with this portion, but looks to be just another project configuration in Eclipse.
Dealing with the Curie can be a more involved project because of its neural network and sensor microcontroller. It is possible to use these without major programming efforts. The same is true for the Bluetooth stack. Most will use it as is.
The Radium 96bie board is a nice, compact platform. It can be used as is, but it is the 96Board expansion that really makes it interesting. The community is not as vast as those of the Arduino and Raspberry Pi but there are 96Board mezzanine cards available. The advantage is the cards are easy to design and inexpensive to make. Popping a battery on a mezzanine card provides a mobile wireless platform.