NXDART: Distributed Automated Build and Runtime Test Environment for Apache NuttX RTOS

This time we share our latest technical publication from the world of embedded systems and electronics, authored by Tomasz Cedro (1,2,5,6), Gregory Nutt (1), Lup Yuen Lee (1), Grzegorz Południewski (2,6), Szymon Wilk (2,4), and Wojciech Glinkowski (2,3), from the (1) Apache NuttX RTOS; (2) Polish Telemedicine and e-Health Society; (3) Warsaw Medical University, Poland; (4) Poznan University of Technology, Poland; (5) CeDeROM, Poland, (6) IQCREDO, Poland.

Paper was published in the International Journal of Electronics and Telecommunications, Vol. 72 No. 3 (2026) and is available online in open-access at IJET and NuttX websites.

Abstract

This paper presents the concept and initial implementation of a distributed automated build and runtime test environment for NuttX, called NXDART. NuttX is Apache 2.0 licensed Free and Open-Source (FOSS) Real-Time Operating System (RTOS), created by Gregory Nutt and released to the public in 2007, with strong focus on portability, small footprint, scalability, and compatibility with POSIX, ANSI, and other stan dards commonly used by Unix and other RTOSes (e.g. VxWorks).

NuttX community consists of volunteering hobbyists, academia, and small/medium/large enterprise professionals from around the world. NuttX supports over 15 different 8..64-bit CPU architectures (RISC-V, ARM, ARM64, AVR, CEVA, HC, MIPS, Misoc, OpenRISC, Renesas, SPARC, TriCore, x86, AMD64, Xtensa, Z16, Z80, FPGA) on over 340 unique hardware boards with over 1600 example target firmware configurations. Project development intensity is measured in thousands of files changed every month with hundreds thousands of code lines modifications.

In order to assure self-compatibility and long term maintenance for supported platform all new source code contributions are always processed manually by independent reviewers and automated Continuous Integration (CI) software tools. Unfortunately, not all breaking changes can be detected that way. Code may build for various architectures and even run correctly on emulators but it may still not work as expected on real world hardware. Therefore, comprehensive runtime tests are required.

Hardware testing of hundreds of different devices in one place turned out impossible for our free and community driven project. To address this problem we have invented distributed hardware-in-the-loop (HIL) test environment that is easy to set up and maintain as it reuses hardware components already owned by hundreds of users around the world. This approach assures maximum coverage of possible boards and build environments, independence and uninterrupted redundant availability of build and runtime test automation, with feedback logs reporting directly to the project upstream, at virtually zero cost.