Today the semiconductor industry along with electronics industry is looking up to capitalize from massive expansion foreseen in IoT (Internet of Things) domain. In simple terms we can consider IoT as connectivity between machines which can communicate with each other and work as programmed. In localized applications such as factory automation which may require one-way communication with dedicated private network, the machine-to-machine connectivity can be easier with lesser complexity. But what happens when in the real world of IoT the devices are exposed to public network and are needed to make intelligent decisions while maintaining proper security? How can a patient in India be monitored from a specialized medical institute in USA under adequate privacy? The simple machine-to-machine model is no more adequate. Integrated software platforms are required which can enable development and integration of code from various heterogeneous sources to build intelligent devices which can have secure connections through autonomous network insertion and are capable of making decisions with bi-directional communication. And the platforms must be extensible to accommodate upcoming protocols of connectivity, security and other needs as the world of IoT is in expansion mode. Also, an efficient power management is needed for devices as many of them are placed in remote areas and they operate on battery.
The software to maintain connectivity, security and power, if considered in true sense of IoT can be very complex. In IoT world, devices can be dynamically added or removed from the network; the resource discovery and service announcements are done autonomously. The zero configuration networking protocols such as mDNS (multicast Domain Name System) and DNS-SD (DNS-based Service Directory) support such services without needing any central server, thus enabling scalability in the IoT networks. The architectures such as REST (Representational State Transfer) should be leveraged to maintain separation between client and server that ease in network scalability and improve performance and security.
As IoT devices support bi-directional data and can be connected on dispersed public networks through a horde of connectivity options such as Bluetooth, Wi-Fi, ZigBee and so on, they are highly susceptible to unscrupulous attacks. In order to protect the IoT system and devices, all kinds of security threats (active and passive) must be detected, neutralized and corrected. Various checkpoints such as encryption, authentication, and source of data before its transmission must be employed. The protocol OCSP (Online Certificate Status Protocol) streamlines the client side resources required for x.509 certificate verification. The TLS (Transport Layer Security) which uses AES-256 (Advanced Encryption Standard) and 3DES can be used to provide high level of encryption required for IoT devices. Also MAC (Message Authentication Code) is used to ensure integrity of the message without any alteration during transmission.
Power management is another issue for IoT devices which must consider all avenues of power saving. Fortunately, there are several methods (e.g. DVFS, sleep and idle modes, clock gating, hibernate etc.) and low power technologies available to optimize power; however the underlying software must be designed to gain full advantages of these techniques.
So, coming to the core question, what must be the essence of an IoT design which can keep it running by fulfilling all the above needs amid several complexities? It’s the real-time operating system and software on top of it which works behind the scene and enables the IoT devices to work flawlessly and intelligently as desired under various networking and security protocols without any security breach. I like the Nucleus RTOS provided by Mentor Graphics which is an ideal full-featured underlying RTOS framework for an integrated IoT solution.
Nucleus is a widely deployed and scalable 3KB microkernel based RTOS designed for today’s IoT world. It supports an array of networking and security protocols with high performance connectivity and integrated power management system. It fits nicely into a memory constrained MCU-based device, and yet provides the functionality required for IoT systems.
The connectivity options include widely available Wi-Fi, Bluetooth, BLE (Bluetooth low energy), USB 2.0/3.0 for IPv4/IPv6 based networks and so on. The architecture is extensible to include additional software protocols as required. A full featured IPv4/IPv6 stack with over 50 protocols and support for zero-configuration networking that includes mDNS and DNS-SD is available for networking.
The security is provided for data in storage as well as in transmission. While in storage, the data can be encrypted and password protected. The security during transmission includes TLS/SSL with encryption options including AES-256, 3DES, DES, RC4 and many others. OCSP authentication and Hash functions are available to ensure message integrity without any alteration.
An extensive Power Management Framework available in Nucleus lets the IoT devices operate under various low-power modes through intuitive API calls. A complex device can be transitioned into hibernate or standby mode by safely turning off peripherals, moving code into non-volatile memory and changing the operating point of the device.
A complete underlying RTOS like Nucleus can offer software developers and design architects a versatile framework for developing IoT devices and systems that can work unabated with their full potential in public network and real life situations. Andrew Caples, Senior Product Marketing Manager at Mentor has described in great detail about the requirements of IoT and Nucleus in his whitepaper posted at Mentor’s website. It’s a nice read.