Back in October of last year ARM announced its new operating system that will run on IoT devices, and enable them to connect to the rest of the world. Called ‘mbed OS’, it is a free operating system for ARM’s Cortex-M range of microcontrollers. These processors are less complex versions of the Cortex-A processors that you find in smartphones or tablets. They are ultra-low power, running at around 100MHz (or less), and are perfect for collecting sensor data.
Until now mbed OS has been exclusive to the Cortex-M, which meant that if you want to build an IoT device with mbed OS you had to be using a microcontroller based board. But now ARM has announced a companion to mbed OS called mbed Client, a set of core libraries which will allow mbed OS programs to be ported to Cortex-A based computers and boards running Linux.
In other words, you can develop an IoT or other network aware program using mbed OS on a Cortex-M microcontroller, and then simply (with just a quick recompile) port it to boards like the Raspberry Pi or the ODROID C1.
As long as the code is calling the mbed APIs, it will work on any ARM platform from a Cortex-M microcontroller board right up to a 48 core ThunderX based server.
mbed OS provides a large number of features aimed at accelerating IoT prototyping and development. It has built-in support for important IoT connectivity standards like CoAP and LWM2M, and provides stacks for Bluetooth, 6LoWPAN, and of course IPv4 & IPv6. It also provides some important security features including TLS, which is enabled by default for all application level communications.
The mbed client is a slightly cut-down version of the full mbed OS. “Cut-down” because many of the functions provided by mbed OS, like networking stacks, are already provided by Linux. However all the important application facing components like CoAP, LWM2M, and TLS are includes in the client. This means that the same C++ code can be run on an mbed enabled microcontroller board and on a Raspberry Pi 2, without any need to change the code. As long as the code is calling the mbed APIs, it will work on any ARM platform from a Cortex-M microcontroller board right up to a 48 core ThunderX based server. Now that is true flexibility!
Like mbed OS, the mbed Client software will be released as open source. ARM is on track to release the public beta of mbed OS in August, which is when the mbed Client should also make its first appearance to the public.
Now, here is a challenge for all you Android hackers out there, what we need now is a port of the mbed Client to Android (and/or Android Wear) using the NDK. Any takers?