NuttX a POSIX RTOS for IoT Applications
|NuttX a POSIX RTOS for IoT Applications||Alan Carvalho Assis, Embedded System Engineer, Espressif, Brazil|
The Industrial Internet-of-Things (IIoT) requires mission-critical and real time control and communication. NuttX is an Open Source, lightweight, realtime operating system for use in highly resource constrained environments, such as those typically seen in the ‘Internet of Things’. It runs on micro controllers and Systems on Chip (SoCs) from 8 bits to 64 bits, with a particular sweet spot 16 bits and upwards. It is powerful and has an incredibly small footprint. It leverages programmer productivity through the adoption of POSIX interfaces and is founded on five inviolable principles; Strict POSIX Compliance, a modular architecture, a clear, consistent, standardized coding style, an open, unencumbered license and the fundamental belief that all users matter.
NuttX supports a myriad of hardware that are already used in industry and COTS (commercial off-the-shelf) products. Its functionality and capabilities always lead it to be compared with Linux; NuttX addresses different, though complementary, needs. Linux is extraordinarily powerful and flexible and is commonly seen in modern embedded solutions which have a CPU with a Management Management Unit, megabytes of RAM and a few MB of non-volatile storage for the kernel and its applications. In contrast NuttX features an extremely configurable build system which can easily deliver a fully featured application specific application of a hundred kilobytes or less, needing perhaps as little as 16KB of RAM to run. It does not require a MMU and can easily operate in highly cost-constrained environments.
NuttX also offers hard realtime, with latencies and jitter much lower than those generally achievable with Linux, even with the PREEMPT_RT patches. It is fully preemptable, has named message queues, counting semaphores, clocks/timers, signals, pthreads, mutexes, cancellation points, environment variables and all of the other conveniences the modern programmer expects.
NuttX is very mature and had its first release, under a BSD license, in 2007. In 2020 it was transferred to the care of the Apache Foundation and is now Apache 2 licensed. It is seeing increasing adoption in everything from drones to spacecraft, and is definitely an OS alternative worth considering where limited resources, platform maturity and real time performance are important considerations.
The scope of this session is to present in detail NuttX as a tool to be applied in Industrial IoT projects. This session is moderated by great Master Alan and is split into two parts:
- Introduction of the NuttX operating system and case studies
- Demo session showing the operating system running with connectivity on real hardware
Invited Talk #1: Alan Assis, ‘Introduction to the NuttX: A POSIX and Linux-like RTOS’
In this presentation the NuttX RTOS that you can use on microcontrollers and microprocessors (from 8-bit MCUs to 64-bit RISCV64/AMD64 MPUs). NuttX is already used by many companies already the world, and features good realtime performance with APIs based on POSIX. It remains relatively unknown by academia.
Invited Talk #2: Armaghan Ebrahimi,’Sony Spresense – Edge Computing with Low Power Consumption’
An introduction to Spresense, the secrets of low power edge computing and examples of some real world use cases with demos.
Invited Talk #3: Philippe Coval, ‘NuttX is part of my demo toolbox’
NuttX RTOS is one of the complementary OS that targets low end devices. This presentation will showcase some proof of concepts showing NuttX in action. If you’re a GNU/Linux developer, it’ll feel like home.
Demo #1: Flavio Alves, ‘Hands-On Demo: Using NuttX on ESP32 to connect to the Internet over WiFi’
In this demonstration the steps to get NuttX compiled, flashed and running on ESP32-Devkit board and connecting to the WiFi router to communicate to the Internet will be presented.
After getting WiFi working on the ESP32, users can proceed to exploit more advanced protocols, already integrated into NuttX, like MQTT, to submit sensor data directly to the cloud.
Alan Carvalho de Assis, Embedded System Engineer, Espressif, Brazil
Alan Carvalho de Assis graduated in Computer Science and holds a Master’s Degree in Electrical Engineering. Alan started working with embedded systems in 1998 using the Microchip PIC microcontrollers and with embedded Linux (uCLinux) in 2001.
He worked developing Linux embedded systems at Freescale Semiconductor (now NXP) and other local technology companies in Brazil.
In 2010 he discovered NuttX RTOS while reading an article in the Linux Journal and started using NuttX to develop projects for many different companies. Currently he works as Senior Embedded System Engineer at Espressif.
Armaghan Ebrahimi, Sony
Armaghan Ebrahimi is a Partner Solutions Engineer with Sony within the Developer Program. She works with different divisions at Sony to bring innovations to developers and businesses to build scalable solutions. Armaghan has over 20 years of experience in high tech development of solutions in hardware, ASIC, embedded applications and system programming.
Philippe Coval, Mozilla Reps
Philippe Coval is a Software Engineer who has been supporting FLOSS communities since late 1990ies. He has contributed to various projects such as Debian, Meego, Tizen, IoTivity, OE/Yocto and WebThings. He is currently part of “Mozilla Reps” and other FLOSS projects. You can find inspiration from his previous works at https://purl.org/rzr/
Flavio Alves graduated in Electrical Engineering from State University of Campinas, with an Electronic and Communication Systems diplom from Ecole Centrale de Lyon. Since 2003 has been working in embedded systems systems design and embedded software development, working in companies for Telecom, Aerospace, Retail automation industries.
Founded PHI Innovations in 2008 working as senior software engineer and team leader. Worked in projects for medical equipment, defense, industrial automation industries.