Note
This project is currently under actively developing and improving, some APIs and interfaces may change as the design continues to mature.
-
MOS is a Real-Time Operating System (RTOS) project built in C++/Rust, which consists of a preemptive kernel and a command-line shell with other applications (e.g., GuiLite and FatFS).
-
Renode is a virtual development tool created by Antmicro for multi-node embedded networks (both wired and wireless) and is intended to enable a scalable workflow for creating effective, tested and secure IoT systems.
-
mos-rust- A "Vibe Coding" Chimera, check here. -
mos-core- The Kernel and the Shell, check here. -
mos-stm32- Running on STM32 series, check here. -
mos-renode- Test on Renode emulation, check here.
๐ฆ v0.5
โ Done๏ผ
- [Experimental] Port to
ESP32-C6(RISC-V), Add BLE support- [Experimental] Rewrite it in Rust
๐ฆ v0.4
โ Done๏ผ
- Add Hardware
FPUsupport- CMake Tools are now available for compiling the project
- Add external library ETL, a C++ template library for embedded applications
- Add
Renodeemulation platform, add stable support forCortex-Mseries- [Experimental] Add scheduler lock
Scheduler::suspend()- [Experimental] Add Asynchronous stackless coroutines
Async::{Executor, Future_t, co_await/yield/return}๐ Planned:
- Shift from
FatFStoLittleFS
๐ฆ v0.3
โ Done:
- Mapping
TidstoBitMap_t- Message queue
IPC::MsgQueue_tTask::createallows generic function signatures asvoid fn(auto argv)with type checker- Add
ESP32-C3as aWiFicomponent- Add
Driver::Device::SD_t,SDcard driver, portingFatFsfile system- Add
Shell::usr_cmdsfor user-registered commands- [Experimental] Atomic types
<stdatomic.h>- [Experimental]
Utils::IrqGuard_t, nested interrupt critical sections- [Experimental] Simple formal verification of
Scheduler + Mutex๐ Planned:
- Inter-Process Communication: pipes/channels
FPUhardware float support- Performance benchmarking
- Error handling with
Result<T, E>,Option<T>DMA_tDMA Driver- Software/hardware timers
Timer- [Experimental] Adding
POSIXsupport- [Experimental] More real-time scheduling algorithms
๐ฆ v0.2
โ Done:
- Synchronization primitives
Sync::{Sema_t, Lock_t, Mutex_t<T>, CondVar_t, Barrier_t}Scheduler::Policy::PreemptPriwithRoundRobinscheduling for same priority levelsTask::terminateimplicitly called upon task exit to reclaim resources- Simple command-line interaction
Shell::{Command, CmdCall, launch}HAL::STM32F4xx::SPI_tandDriver::Device::ST7735S_t, porting theGuiLitegraphics library- Blocking delay with
Kernel::Global::os_ticksandTask::delay- Refactored project organization into
{kernel, arch, drivers}- Support for
GCCcompilation, compatible withSTM32Cube HAL- Real-time calendar
HAL::STM32F4xx::RTC_t,CmdCall::date_cmd,App::CalendaridleusesKernel::Global::zombie_listto reclaim inactive pages- Three basic page allocation policies
Page_t::Policy::{POOL, DYNAMIC, STATIC}
๐ฆ v0.1
โ Done:
- Basic data structures, scheduler, and task control, memory management
๐ Planned:
- Timers, round-robin scheduling
- Inter-Process Communication (IPC), pipes, message queues
- Process synchronization (Sync), semaphores, mutexes
- Design a simple Shell
- Variable page sizes, memory allocator
- SPI driver, porting GuiLite/LVGL graphics libraries
- Porting to other boards/arch, e.g., ESP32-C3 (RISC-V)
- How to build a Real-Time Operating System(RTOS)
- PeriodicScheduler_Semaphore
- STM32F4-LCD_ST7735s
- A printf/sprintf Implementation for Embedded Systems
- GuiLite
- STMViewer
- FatFs
- The Zephyr Project
- Eclipse ThreadX
- Embassy
- Renode
- Embedded Template Library (ETL)
๐ Live Long and Prosper.


