NuttX is an open source, deterministic and free real-time embedded operating system (RTOS), designed from the offset to be usable in deeply embedded, resource constrained environments. It has a small footprint that is usable in micro-controller environments, and it’s fully scalable from tiny (8-bit) to moderate embedded (32-bit) systems.
It also aims to be fully compliant to standards, to be fully real time, and to be totally open. NuttX has a rich feature OS set, a modular design, it is highly scalable and configurable, as well as standards compliant. It is distributed with a non-restrictive BSD license. It is often dubbed by its developers as "Tiny Linux."
Features at a glance
Key features include core task management, BSD socket interface, memory allocators (shared memory, standard heap memory allocation, protected build with MPU, flat embedded build, per-process heaps, granule allocator and dynamically sized), memory configurations, porting guide, fully preemptible, tickless operation, on-demand paging and system logging.
In addition, the project comes with extensions to manage pre-emption, per-thread, built-in CPU load measurements, comprehensive documentation, optional tasks that contain address environments, ANSI-like and POSIX-like task controls, clocks, pthreads, environment variables, signals, named message queues, timers, filesystem and counting semaphores.
Among other features, we can mention round-robin scheduling, FIFO, support for priority inheritance, support for the SoC architecture, support for board architectures, support for new processor architectures, watchdog timers, VxWorks-like task management, I/O redirection and transmitted “controlling terminals.”
NuttX supports a wide variety of hardware platforms, among which we can mention numerous ARM processors, including ARM Cortex-M3, ARM926EJS, ARM7TDMI, ARM Cortex-M4, ARM Cortex-M0, ARM920T and ARM Cortex-A5, as well as the Atmel 8-bit AVR, Freescale M68HCS12, AVR32 Atmel AVR platforms.
Additionally, it also supports various Intel platforms, such as MicroChip PIC32MX (MIPS), 80c52 and 80×86, Zilog platforms, including Zilog Z80, Zilog Z16F, Zilog Z8Encore! and Zilog eZ80 Acclaim!, and the Renesas/Hitachi SuperH and Renesas M16C/26 platforms.