Welcome to NuttX
NuttX is an Apache (formerly BSD) licensed real-time operating system (RTOS) with an emphasis on standards compliance and small footprint. First released in 2007 it is scalable from 8-bit to 32-bit microcontroller environments with APIs primarily guided by the relevant POSIX and ANSI standards. Additional APIs originate from Unix and other common RTOSes.
It is developed by a group of passionate engineers from around the world, who come together logically on the NuttX mailing list and occasionally physically at events around the world. You can get information and materials from previous activities in the historic posts, and keep one eye here for future events. If you have news or upcoming events you would like reporting here then drop us a note and feel free to subscribe to our RSS feed to be kept updated.
Speakers schedule to the NuttX Online Workshop
Andrei Voinescu - Fitbit
An overview of the in-market Fitbit devices that run on NuttX, with a brief description of how internal components are built on top of the open source version.
Masayuki Ishikawa - Sony
In this talk, I'd like to share how I implemented a usrsock based Wi-Fi driver which uses Telit GS2200M. A Telit GS2200M Wi-Fi module conforms to 802.11b/g/n and has UART/SPI/SDIO interfaces. The module works on Sony Spresense and STM32F4Discovery boards with SPI interface and you can run sample network applications such as DHCP client, NTP client, webserver, telnet daemon and so on. Also, I will show you some demo videos. The driver code and usrsock daemon code are now available at NuttX upstream repository.
Chung-Fan Yang - Fixstars Corporation
We have created an Linux-compatible compounded RTOS (cRTOS) system using NuttX, Linux and the Jailhouse partitioning hypervisor on x86-64 architecture. Using the Jailhouse hypervisor, each OS executed exclusively on processor cores. Linux creates a normal realm for providing rich features, and NuttX creates a real-time realm for hard real-time applications. By using our cRTOS, developers can run existing Linux application binaries directly in NuttX without modifications, recompilation and conversion. NuttX creates a real-time realm that handles the real-time related system calls, e.g. accessing timer and external real-time devices.
Iulian Mateșică - Fitbit
High complexity applications that run on low resources hardware requires special optimizations from the operating system's components, including the file system. To increase reliability on battery-powered devices and achieve lower memory footprint, we added bad block management, boot time checks and partial mapping, a method of mounting a fraction of a partition with seamless transitions between full mounts and partial mounts. With these modifications, SmartFS is able to work for longer periods on the same flash parts, as well as scale RAM footprint considerably with usage, while maintaining high performance.
Petro Karashchenko - Self-employed
Short presentation of what I have faced with during porting NuttX to Beagle Bone Black.
Peter van der Perk - NXP Semiconductors
This year we as NXP contributed the SocketCAN network layer to NuttX. In a presentation I would like to explain the working of this SocketCAN network layer, it's tooling e.g. CAN-utils, the POSIX compatible applications that now can be used thanks to SocketCAN e.g. UAVCAN, CANopen (WIP), SLCAN. And I would like to showcase some demo's from our UCANS32K146 development system (https://www.nxp.com/design/development-boards/automotive-development-platforms/s32k-mcu-platforms/can-fd-development-system-for-drones-rovers-and-mobile-robotics:UCANS32K146) we've used to test & implement SocketCAN.
Alin Jerpelea - Sony
The presentation is about the journey we had to bring our SDK up-to date from an 2 years old NuttX to state of the art mainline I will present the hiccups and the joy that we had with this project during 12 months of collaboration.
Brennan Ashton - None
In this talk I will discuss some exciting developments in the space of open source tooling for FPGAs and how I am working to connect that ecosystem to NuttX through the QuickLogic EOS S3. This will briefly cover the bring up of the EOS S3 including using Renode to start the process through emulation. After that I will quickly introduce the SymbiFlow tools to create a bitstream for the FPGA fabric. Finally I will show how we can use NuttX to dynamically reconfigure the FPGA fabric to meet the needs of changing signal processing.
Andrei Voinescu - Fitbit
Fitbit has released a tracker running a NuttX OS fork with severe memory constraints of under 300KB of RAM. We achieved this through harsh configuration settings, a drive towards dynamic allocations, some use-case specific features and subsequent tools to guard against unbounded memory usage, leaks or corruption. We aim to show in this presentation that such a system is viable in a flat kernel build, as well as the possible side-effects and constraints that will appear.
Yoshinori Sugino - Sony
I ported the Rust standard library (libstd) to NuttX and run a simple web server written in Rust with libstd on a Cortex-M4F. In my presentation, I will share my knowledge on porting Rust's libstd. Development without libstd has limitations that useful functions such as threads, networking and filesystem manipulation operations are not available. Therefore, I tried to use libstd on NuttX that has been used in various products. NuttX has a POSIX-like interface. But libstd does not have POSIX-like RTOS configurations. So I decided to reuse the settings for Linux. In order to use modules such as std::thread, std::net, and std::fs on NuttX, I had to change both libstd and NuttX. I modified some symbol names, added some functions, changed some data structures and fixed network stack bugs. To validate the port of the library, I implemented a simple Web server with these modules, and confirmed that files on NuttX can be accessed using a PC web browser.
Christian Catchpole - Catchpole Robotics
Having successfully built an autonomous marine robot with the Raspberry Pi, I knew it was time to get realtime. In this presentation I will give an overview of the project and demonstrate the progress I have made in porting to the fundamental telemetry, navigation and communication systems to NuttX on the STM32F4. Next stop, Antarctica!
Philippe Coval - Independant community contributor
Matias Nitsche - NuttX PPMC
In this workshop I will talk about my experience designing and building a low-power device based on NuttX, an open-source bicycle-computer with some particular features. I will start by describing the motivation behind the project and the general design of the hardware and firmware. Then, I will describe some particular aspects of the solution, which resulted in different contributions to NuttX, ranging from an alternative power management system (the "power governor") to simple and definitely not simple bugs I encountered while playing with non-standard MCU clock configurations, sleep modes, etc. Finally, I will give a brief overview on my workflow when working with NuttX, which may help newcomers face their NuttX based projects.
Vlad Urziceanu - Fitbit
Running NuttX on activity trackers needs to meet diverse timing requirements of the various tasks running in the system, whether it’s time-critical sensor data processing, consistent graphics rendering, encrypting data to send over the air or all at the same time. We use the round robin policy to increase same-priority scheduling fairness and we introduced some guarantees to this process. We believe this adds predictability and in tests based on our tracker scenarios we eliminated task starvation.
Jari van Ewijk and Cis Van Mierlo - NXP
The NXP Mobile Robotics team has created a new reference design for a battery management system for autonomous drones and rovers. This RDDRONE-BMS772 board features the NXP S32K144 automotive microcontroller and NXP MC33772 battery cell controller, as well as our CAN, NFC and secure authentication products. Most of the basic board features have already been enabled in NuttX, and we have also created a battery management application as an example.
Ivan Ucherdzhiev - Barin Sports
In this presentation a small startup company will be introduced. The company name is Barin Sports and it develops wearable systems for real time tracking of professional athletes condition and performance.
Cosmin Petrișor - Fitbit
NuttX has a lot of primitives that exhibit POSIX-like behaviour for tasks interacting within the system, yet there are corner cases and use cases for fitness trackers that push this system to the limit. Given the time-critical nature of tasks and reliability that is expected of them, we had to make some additions to the system in order for tasks to be scheduled when they need to be and bring some primitives closer to the POSIX standard. We have addressed priority inheritance, scheduling with architecture constraints, signalling groups of tasks, exit sequences and time-slice guarantees for the round robin scheduling policy. While some of the additions are skewed towards fitness tracker applications, we believe most of the changes could be spread towards a greater audience.
Alan C. Assis - Espressif
NuttX added basic support for ESP32 some years ago, but now it evolved to include more features like SPI, I2C, Ethernet, etc. In this talk I will show the current status and what is missing the have a complete support on NuttX.