Miosix is an OS kernel designed to run on 32bit microcontrollers, in active development since 2008.
The kernel is royalty-free and licensed under the GPL license with an exception that allows it to be linked with propietary application code.
Features
- Fluid kernel architecture, blending an unikernel and a monolithic kernel.
- Supports the abstraction of processes with an ELF file loader and memory protection on MMU-less architectures.
- Multicore microcontroller support, multicore scheduler and OpenMP support for application parallelization.
- Focus on POSIX compliance and thread-safe support for the C and C++ standard libraries.
- Architecture-dependent code is separated from the kernel, making it easily portable to any 32bit microcontroller.
- Currently supports the STM32, EFM32, RP2040, Nordic nRF, ATSAM and LPC2000 micrcontrollers.
- An API separates the scheduler from the kernel, allowing to have more than one scheduler in the same codebase, and compile-time scheduler selection.
- Virtual filesystem with arbitrary mountpoints supporting FAT32, LittleFS, RomFS, DevFS. Filesystem implementation, integrated with POSIX and the C/C++ libraries.
- mxgui: a GUI library integrated with the kernel. Provides threadsafe drawing primitives optimized for devices with too little RAM to allow double-buffering. GUI simulator allows to test the GUI part of an application on a computer, simplifying the process of designing an embedded user interface.
- Supports multiple USB stacks, such as TinyUSB and mxusb: an USB device library integrated with the kernel (e.g. allows to have threads waiting for data on endpoints). USB peripheral autoconfiguration, based on USB descriptors.
- Source code continuously tested by means of a testsuite distributed along with the kernel.
- Code size down to ~8KB of FLASH memory (with ARM Cortex CPUs).
Getting started
Miosix Wiki, the staring point for the kernel documentationGithub mirror of the kernel source code.
privacy policy