The economic constraints of the IoT market dictate that those devices deployed on the Internet run on smaller, cheaper, and power-saving hardware platforms such as low-cost microcontrollers (MCUs). At the same time, these devices are expected to deliver smartphone-like, app-driven usage and business models, connecting and interacting with Cloud-based infrastructure and services.
Embedded systems rely on various commercial, open-source or in-house real-time operating system (RTOS), libraries and compiler/linker tools. All combinations of these software elements need to run on a large variety of 32-bit instruction-set architectures (ISAs) based on the underlying MCU. This vertical integration approach requires porting every application to each combination of ISA, RTOS, libraries and compiler/linker. Such an approach limits the availability of developers, uses enormous resources and requires significant effort and expense in middleware development and integration.
Each device on the Internet uses standard frameworks and agents to inter-communicate and to connect to Cloud services for software content and operations management. In addition, the IoT frameworks need to support the emergence of a strong and large community of developers by enabling all applications to target the same platform across various devices.
A horizontal-integration approach enabled by a Java platform leverages a virtualization layer that makes applications portable across all ISA/RTOS/compiler combinations. This approach significantly reduces middleware integration work and taps into a large community of application developers. Most Cloud and IoT frameworks are implemented in Java, with standard libraries and APIs for accessing elements that are used in enterprise applications. Using the same language on the Cloud and edge sides of the IoT devices eases development, debugging and deployment of distributed IoT end-to-end applications and ecosystems.
To achieve large-scale deployment of profitable IoT devices and services, things that are connected to the Internet need to leverage the power and efficiencies offered by IT-world solutions while still meeting the cost constraints and resource limitations of the embedded. This requires a specific software platform that successfully adapts and applies mainstream software technologies and practices used in the Cloud and mobile to the embedded world.
Operating systems (OS) are essential foundations for enabling IoT devices. PCs and mobile devices were built on a couple of dominant operating systems, Windows/Linux and Android/iOS, respectively. While these operating systems provide standardized software platforms, they cannot successfully function within the economic constraints that drive the IoT space. The “things” in the IoT are expected to be deployed in billions of devices, with much lower capital and operational expenditures than PCs and smartphones.
An operating system tuned for IoT devices needs to deliver scalability, portability, connectivity, security, usability and multi-app execution. MicroEJ OS offers the best of both worlds by providing the scalability of embedded RTOS solutions while enabling access to a large community of mobile and PC developers for efficient software application development.
MicroEJ OS enables the delivery of app-driven experiences and services to devices that cannot afford to run mobile platforms. It can run on low-power, low-cost megahertz MCUs in the range of kilobytes of memory and storage. Compared to devices on mobile operating systems, MicroEJ OS allows manufactures to save up to 60 percent on bill of materials and to increase up to 80 percent in battery life.
The hardware virtualization layer in MicroEJ OS isolates application software from ISA/RTOS/BSP/compilers, allowing for binary code reuse across a range of different products. It provides a full set of software foundation blocks through high-level API and stacks for both application software development and RTOS/libraries/BSP integration. MircroEJ OS can focus on just the components required for supporting available hardware functions and delivering needed software services. It helps optimize total software footprint and reduce the size of expensive RAM and flash. It provides build and runtime checks for safe software programming and execution, as well as a multi-application framework for built-time configuration and run-time add-ons.
Designing IoT devices requires a lot of push and pull. Application software can influence the hardware implementation, which in turn can influence the physical design. As designs become more compact and even wearable, the mechanical design can constrain the hardware -- and hence the software -- capabilities of the device. Design engineers need an OS that can operate on constrained hardware while still delivering the app-driven experiences and services expected of IoT devices. MicroEJ OS bridges the gap between embedded world constraints and IT-world techniques by offering the best of both worlds–the scalability of embedded RTOS for firmware bring-up and a large community of mobile and PC developers for efficient applications development. With MicroEJ OS, designers can make more informed decisions on the size, speed, and cost of the IoT devices early in the process.
For additional information, see http://www.microej.com/portfolio-item/microej-operating-system-iot-devices/
Based on a presentation at IoT DevCon 2016 by Vincent Perrier, Chief Products Officer, MicroEJ