nano RTOS

realtime operating system for time-critical applications


☂︎ Low latency event handling
☂︎ Tickless kernel: wake from sleep with micro-second accuracy
☂︎ Static tasks with infinite synchronisation objects
☂︎ Use with Arduino projects to provide multitasking
☂︎ UART low latency API that never drops data
☂︎ UART, SPI, I2C, I2S, GPIO, sensors, robotics
☂︎ ARM support for Cortex-M microcontrollers
☂︎ Easy to configure and expand
☂︎ Posix compliant printf


Tasks waiting for an event are activated as soon as the condition to continue is met.
The UART API is hybrid blocking, meaning that data is queued to send and the call
returns immediately so long as buffer space is available, but will block when the
buffer is full. Receive calls return as soon as any data is available.


☂︎ Cortex-M3
☂︎ Cortex-M4
☂︎ Cortex-M33

Supported Boards

Nordic Semiconductor

☂︎ demo
☂︎ nRF52840dk nRF52840
☂︎ nRF9160dk nRF52840, nRF9160
☂︎ Thingy91 nRF52840, nRF9160 sensors firmware

ST Microelectronics

☂︎ Blue Pill STM32F103x

Prerequisites UNIX: use a package manager

☂︎ macOS: install brew
☂︎ macOS: brew install make
☂︎ macOS: brew install cask gcc-arm-embedded
☂︎ Linux: apt install make gcc-arm-none-eabi
☂︎ FreeBSD: pkg install gmake arm-none-eabi-gcc

Prerequisites Windows

☂︎ Download and extract the Arm GNU Toolchain to tools/compilers
☂︎ Or specify the path as an environment variable NANO_GCC
☂︎ Tools required make rm saferun, optional clear colour gfc
☂︎ Install in tools or add to path
☂︎ Chocolatey: choco install make coreutils
☂︎ Or download and extract make.exe to the root directory of nano
☂︎ rm is available in git for Windows, during install select:
☂︎ Git and optional Unix tools from the Command Prompt
☂︎ or add %ProgramFiles%\Git\usr\bin to path

Prerequisites Arduino

© 2022-2024 Georgi Valkov