"MiROS" is a Minimal Real-Time Operating System (RTOS) kernel for ARM Cortex-M. It supports preemptive, priortity-based multithreading, fully compliant with RMA/RMS (Rate-Monotonic Analysis/Scheduling).
NOTE
MiROS is a teaching aid used in the "Modern Embedded Programming" video course on YouTube
The main goal of the MiROS kernel is to illustrate the concepts underlying Real-Time Operating Systems (RTOS). The aim here is simplicity and clear presentation of the concepts, but without dealing with various corner cases, portability, or error handling. For these reasons, the software is generally NOT intended or recommended for use in commercial\applications.
MiROS is available for the following embedded toolchains:
- ARM/KEIL MDK (uVision)
- GNU-ARM (Makefile projects)
- IAR EWARM
Currently, MiROS examples are available for the following embedded boards:
- EK-TM4C123GXL (TivaC LaunchPad, ARM Cortex-M4F)
- STM32 NUCLEO-L152RE (ARM Cortex-M3)
- STM32 NUCLEO-C031C6 (ARM Cortex-M0+)
MiROS/
+---3rd_party/ - third-party software (needed in the examples)
| +---CMSIS/ - ARM CMSIS
| +---ek-tm4c123gxl/ - low-level code to support EK-TM4C123GX board
| +---nucleo-c031c6/ - low-level code to support STM32 NUCLEO LC031C6 board
| +---nucleo-l152re/ - low-level code to support STM32 NUCLEO L152RE board
|
+---examples/
| +---blinky_ek-tm4c123gxl/ - Blinky exammple for EK-TM4C123GX board
| | +---armclang/ - project for ARM/KEIL uVision with ARMCLANG
| | +---gnu/ - project for GNU-ARM with simple Makefile
| | +---iar/ - project for IAR EWARM
| |
| +---blinky_nucleo-c031c6/ - Blinky exammple for STM32 NUCLEO-C031C6
| +---armclang/ - project for ARM/KEIL uVision with ARMCLANG
| +---gnu/ - project for GNU-ARM with simple Makefile
| +---iar/ - project for IAR EWARM
| |
| +---blinky_nucleo-l152re/ - Blinky exammple for STM32 NUCLEO-L152RE
| +---armclang/ - project for ARM/KEIL uVision with ARMCLANG
| +---gnu/ - project for GNU-ARM with simple Makefile
| +---iar/ - project for IAR EWARM
|
+---include/ - include directory
| miros.h - MiROS API
+---src/ - MiROS source code
| +---armclang/
| | miros.c - MiROS implementation for ARMCLANG
| +---gnu/
| | miros.c - MiROS implementation for GNU-ARM
| +---iar/
| | miros.c - MiROS implementation for IAR EWARM
MiROS comes with the "Blinky" examples for the boards listed above.
To build and run the examples, inside the "examples" directory select the "Blinky" version for your board and then, inside that sub-directory select the toolchain (ARMCLANG, GNU-ARM, or IAR). That sub-directory contains the project that you can open with the IDE (uVision or IAR). The GNU-ARM project consists of a simple Makefile, which you can run from the command-line.
MiROS is licensed under the GPLv3 open source license.
If you'd like to discuss MiROS or related subjects, plese use the "Issues" tab.
If you like this project, please give it a star (in the upper-right corner of your browser window):