Miosix is an OS kernel designed to run on 32bit microcontrollers, in active development since 2008.
It supports both a single process, multiple threads application model where applications are statically linked with the kernel, and an experimental multiprocess environment with memory protection that allows loading applications at runtime.
The kernel is royalty-free and licensed under the GPL license with an exception that allows it to be linked with propietary application code.
Getting startedFor the documentation of the latest kernel have a look at the Miosix Wiki. To download the Miosix kernel, go to the gitorious page.
- Focus on C++ support, not just C.
- Support for the full C and C++ standard libraries, including the STL (using the newlib and libstdc++ libraries).
- Support for the standard POSIX thread API (currently threads, mutexes and condition variables).
- Effort on providing thread safe standard libraries and language features, such as C++ exception handling.
- Architecture-dependent code is separated from the kernel, making it easily portable to any 32bit microcontroller.
- Currently supports the STM32 and LPC2000 micrcontroller families.
- An API separates the scheduler from the kernel, allowing to have more than one scheduler in the same codebase, and compile-time scheduler selection.
- Currently supports a priority-based scheduler, an innovative scheduler based on control theory which is the subject of academic research, and the EDF scheduler.
- FAT32 filesystem implementation, integrated with the C/C++ libraries (e.g. files can be opened with the standard fopen()).
- mxusb: an USB device
library integrated with the kernel (e.g. allows to have threads waiting
for data on endpoints). Provides an innovative USB peripheral
autoconfiguration, based on USB descriptors.
Currently supporting STM32 microcontrollers.
a GUI library integrated with the kernel. Provides threadsafe drawing
primitives optimized for devices with too little RAM to allow double-buffering.
Allows multiple threads to render different parts of the screen simultaneously.
A pixel perfect simulator allows to test the GUI part of an application on a (Linux) PC, simplifying the process of designing an embedded user interface.
- Source code is well documented using Doxygen, and continuously tested by means of a testsuite distributed along with the kernel.
- Code size down to ~10KB of FLASH memory (on Cortex M3).