All News | Boards | Chips | Devices | Software | Archive | About | Contact | Subscribe
Follow LinuxGizmos:
Twitter Google+ Facebook RSS feed
(get email updates)

ARM tips IoT focused "Mbed OS" for Cortex-M MCUs

Oct 3, 2014 — by Eric Brown — 9,615 views
Tweet about this on TwitterGoogle+Share on FacebookShare on LinkedInShare on Reddit

ARM announced a free Mbed OS for use in IoT devices based on its Cortex-M microcontrollers, plus an Mbed Device Server stack for cloud-based IoT management.

At ARM TechCon in Santa Clara, Calif., ARM announced an Mbed IoT Device Platform based around a new “Mbed OS” operating system for ARM Cortex-M microcontrollers (MCUs). Mbed OS is in turn based on ARM’s Mbed prototyping software for developing Internet of Things applications on the Cortex-M.

ARM’s Mbed IoT ecosystem
(click image to enlarge)

The goal of Mbed OS, says ARM, is to “simplify and speed up the creation and deployment of IoT products” developed on Cortex-M chips. Mbed OS will be available to Mbed partners later this quarter, with the “first production devices” due in 2015, says ARM.

The free, partially open source, Mbed OS competes in the fast-growing ARM MCU market with dozens of proprietary real-time operating systems (RTOSes), such as Blackberry’s QNX and Intel-owned Wind River’s VxWorks, as well as with open source RTOSes like FreeRTOS. To a certain extent, it also overlaps with the stripped-down Linux derivative uClinux, the only kind of Linux that can run on low-end processors lacking MMUs. (See farther below for more about uClinux.)

Mbed OS lacks real-time, deterministic features, so it can’t compete with RTOSes on projects with real-time requirements. However, according to ARM, Mbed OS is better suited for the much faster growing number of MCU-based devices that perform IoT duties such as transmitting sensor data.

We returned to the halls of ARM TechCon to talk to ARM reps and others about how Mbed OS might affect Linux and uClinux in ARM-based IoT. We heard about some intriguing possibilities, including potential hybrid combinations of Linux and Mbed for IoT applications.

What’s Mbed OS?

But first, a few words ARM’s IoT OS announcement. Mbed does not cover all its microcontrollers, such as the more advanced Cortex-R, but only its hugely popular M class. It appears to be primarily aimed at providing standardized connectivity and IoT smarts to the lower end models, especially the Cortex-M0, which are likely to be designed into hundreds of millions — perhaps even billions — of devices.

Mbed OS stack
(click image to enlarge)

Mbed OS comprises standards for security, device management, and connectivity. Mbed OS is also said to target Bluetooth Smart, WiFi, and 2G, 3G, LTE, and CDMA cellular technologies.

The platform supports the 802.15.4/6LoWPAN wireless technology along with the 6LoWPAN-based Thread wireless standard being pushed by Google, ARM, and others as an alternative to ZigBee and Z-Wave. In its testimonial, ARM MCU licensee Atmel mentioned it was working on a Thread-based solution built around Mbed OS. The Mbed OS product page notes support for ZigBee, although this was missing from the otherwise complete list in ARM’s formal Mbed announcement

Mbed OS development roadmap
(click image to enlarge)

Mbed OS is compatible with TLS/DTLS, CoAP, HTTP, MQTT, and Lightweight M2M standards. It also provides automated power management, software asset protection, and secure firmware updates, says ARM. As seen in the roadmap above, the December release will be Alpha 1, with the first Beta due to arrive in Aug. 2015 and the first final release (v3.0) due a year from now.

Mbed Device Server

Mbed OS is the foundation for an Mbed IoT Device Platform that also comprises “Mbed Device Server” — a server-side stack for device management that “provides a bridge between the protocols designed for use on IoT devices and the APIs that are used by web developers,” says ARM. The licensable, open-standards stack integrates data consolidation of millions of devices with cloud services and Big Data analytics.

The role of Mbed Device Server
(click image to enlarge)

Mbed Device Server uses REST APIs, and offers C, Java SE, and Java ME Clients for IoT devices. It offers device and security management, load balancing, distributed clustering, resource discovery, and caching and subscription aggregation support. ARM also boasts of a 10x reduction in bandwidth using Mbed Device Server, although it’s unclear how this is achieved, or what’s being compared.

Mbed Device Server architecture
(click image to enlarge)

Mbed OS and Mbed Device Server appear to be primarily open source, released under the Apache License 2, although some core components may be controlled by ARM or other IP providers. The OS will be supported by the existing community, which is said to comprise some 70,000 developers. The community currently supports 30 “official” boards, and was involved last year in about one million project builds using Mbed, says ARM.

Launch partners for the Mbed IoT Device Platform include Atmel, CSR, Ericsson, Farnell, Freescale, IBM, KDDI, Marvell, MegaChips, MultiTech, Nordic Semiconductor, NXP, Renesas, SeeControl, Semtech, Silicon Labs, Stream Technologies, ST, Telenor Connexion, Telefonica, Thundersoft, u-blox,, and Zebra.

ARM takes on RTOS proliferation

On Cortex-A applications processors and system-on-chips, most embedded developers have standardized around Linux, and increasingly the Linux-based Android. A smaller group use Windows Embedded, and, for those devices requiring real-time support, various more advanced RTOSes. All told, however, Linux and Android now dominate on ARM, and fragmentation has been further smoothed by improved ARM support in mainline Linux and through the efforts of standardization projects such as Yocto and Linaro.

In the microcontroller realm, however, there is no single dominating OS. Wikipedia lists dozens of RTOSes that support Cortex-M chips — mostly M3 and M4 models — and dozens more that support other MCUs.

This complex OS landscape is further complicated by the growing number of sensors and wireless standards. With its Mbed IoT Device Platform, ARM is making the case that the costs of software development are skyrocketing due to the complexities of M2M communications. This is largely caused by the need add compatibility with a proliferating number of communications protocols and hardware interfaces.

At ARM TechCon, LinuxGizmos spoke with ARM’s Krisztian Flautner, general manager, IoT business. Flautner told us that Mbed is not quite an OS yet, but it will be when the final version ships in a year. Although Mbed will not provide high-level OS features along the lines of what’s contained in Linux or Windows, Mbed OS will satisfy the essential OS requirements of being “a collection of software components designed and integrated to work together,” said Flautner.

A role for uClinux?

And what about uClinux, which is now merged into the mainline Linux kernel, and is capable of supporting processors without MMUs, such as the Cortex-M? The problem with uClinux, Flautner noted, is that it requires more RAM to run than is available on M-class cores. It’s really only suitable, he said, for higher-end M-class cores that have built-in memory controllers and can therefore use an external DRAM chip to meet uClinux’s minimum RAM requirements — which increases the cost, size, and power consumption of low end IoT devices that can ill afford it. Flautner added that it could be quite a while before the low-power, low-cost microcontrollers needed for IoT would have enough RAM to suffice for uClinux.

Flautner declined to comment when asked about possible plans to graft Mbed functions onto Linux to form an “Mbed Linux.” However, he did foresee the possibility of hybrid SoCs running the two side-by-side synergistically, somewhat like Freescale’s Vybrid, which combines a Cortex-A5 CPU running Linux along with a Cortex-M4 chip running Freescale’s MQX RTOS. Flautner also said there were no plans to expand Mbed OS beyond ARM chips, saying Mbed was too closely coupled to the hardware layer to be useful for porting to other processor architectures.

For a different perspective, we turned to Kent Meyer, CEO at Emcraft Systems, a software development firm that builds uClinux BSPs (board support packages) for MCU makers. Meyer argues that uClinux is a better fit on higher-end Cortex-M chips than many have been led to believe. He notes that many of ARM’s M3 and M4 class MCUs include controllers for external memory, so that “adding a small amount of memory need for running uClinux is not much of a cost in many applications.” (Emcraft’s uClinux and U-boot ports for ARM’s Cortex-M3 and -M4 cores are hosted on Github.)

According to Meyer, uClinux benefits from the trickle-down effects of the multitude of wireless support being built into Linux in general, and especially from what’s available in Linux’s Android ARM code base. Much of the support developed for USB-interfaced radios and transceivers in Android smartphones and tablets can be harnessed by uClinux developers, he suggests.

Meyer is interested in Mbed OS for its abilities on ARM’s low end M class chips where uClinux can’t reach. “Mbed OS is really about Cortex-M0/M0+,” said Meyer. “I think the idea is to get those tiny cores, which act as the very end-nodes of IOT, to be easily and securely integrated into the IOT framework. If Mbed OS can be slightly customized and dropped in, then there will be some inherent interoperability that comes from everything being based off the same code base.”

If indeed ARM will enable hybrid SoC designs in which Mbed OS on a Cortex-M0 core sits beside Linux on a Cortex-A5 core, or beside uClinux on a Cortex-M4 or -M7 core, you would have a comprehensive IoT SoC. This could be supported by a common Mbed Device Server that manages IoT traffic and communications. Meyer projects that we’ll see more heterogeneous processors such as NXP’s PC4300 series MCUs that combine Cortex-M4 and -M0 cores, allowing tasks to be strategically allocated in a manner that maximizes performance and efficiency.

“If Mbed OS is architected in a way where the underlying device/hardware interface is replaceable, it would allow RTOS vendors or uClinux or others to provide the underlying services, and let the OS vendors use Mbed OS instead of having to separately license and support radio protocol stacks,” said Meyer. “I find it very interesting that ARM is presenting this as an open source play. The question I haven’t been able to get an answer on, is just how much of this is going to be open, and whether the RTOS/uClinux folks are going to be able to leverage the upper layers of this effort.”

Targeting IoT with ARM’s Cortex-R, MIPS’s Prpl, and Intel’s Quark

The Mbed IoT Device Platform is ARM’s clearest statement regarding an IoT software ecosystem for ARM’s low end M-class cores, but it’s only part of the picture. ARM’s Cortex-A5 line, such as found in Atmel’s new SAMA5D4 SoC, makes an able IoT platform at the high end. We imagine ARM will come out with a Linux- and Android-ready Cortex-A successor that will drop power consumption even lower.

ARMv8-R architecture
(click to enlarge)

There are also some interesting developments surrounding its higher-end, but less popular Cortex-R line of MCUs. A year ago, ARM announced an embedded version of its ARMv8 architecture that will add virtualization and lightweight Linux support to the next of generation of Cortex-R processors. However, there does not appear to have been any further news relating to this project at this year’s TechCon. The upcoming ARMv8-R architecture is 32-bit, but borrows features from the 64-bit ARMv8-A such as hardware-based virtualization and a more advanced MPU. This was said to enable safety-critical embedded applications like automotive computers to run RTOSes, bare metal code, and combining Linux and Android on a single processor.

Ingenic Newton
(click to enlarge)

ARM isn’t alone in targeting IoT, of course. Imagination Technologies has been pushing IoT initiatives for MIPS architecture chips with its Prpl open source organization, which is working on a variety of OpenWRT Linux projects. Ingenic has released an IoT focused Newton module for wearables that runs Linux on a MIPS/XBurst processor called the JZ4770. Ineda Systems has developed a line of SoCs called Dhanush Wearable Processing Units that use MIPS MicroAptiv and InterAptiv cores.

Intel Edison
(click to enlarge)

Intel has only recently dipped its toes in IoT waters, with both its Atom E3800 SoCs and lower-end Quark processors. The Quark has been a bit of a mixed message. The processor runs Linux on Intel’s open source Galileo and Galileo Gen 2 SBCs. However, Intel’s first Edison module, which was initially designed to run on a Quark alone, instead runs Linux on an Atom Z3400 (Medfield) core in a “Tangier” SoC, while reserving the Quark processor for unspecified future use under control of a stripped down version of VxWorks called ViperOS. Intel’s Wind River subsidiary, which makes a real-time-infused Wind River Linux OS as well as the VxWorks RTOS, may well be planning to to have ViperOS support ARM’s microcontrollers, in addition to Intel’s Quark — which could setup a face-to-face confrontation with Mbed OS.

Further information

Mbed OS will ship in alpha form later this quarter, heading for a full Mbed IoT Device Platform release in Oct. 2015, says ARM. More information may be found at ARM product pages for Mbed OS and Mbed OS Device Server.

— with additional reporting by Rick Lehrbaum

(advertise here)


Please comment here...