Introduction
mdepx (also known as MDX or Machdep X) is an operating system for embedded applications.
Key features
- Real-time
- Priority-based time-sliced round-robin scheduling
- Fully preemptible, cooperative scheduling optional
- Tickless operation
- Static/Dynamic memory allocation
- Timed Mutexes, Semaphores
- Symmetric Multiprocessing (SMP)
- BSD libc
- BSD math library (msun)
- Flat address space
ISA supported
- ARM Cortex-M family (ARMv7-M, ARMv8-M)
- CHERI128 Hybrid and Pure ABI capability system models
- MIPS32, MIPS64
- RISC-V machine or supervisor modes, rv32, rv64, SMP
Platforms supported
- STMicroelectronics STM32
- Nordic Semiconductor nRF5, nRF9
- Raspberry Pi Pico
- Microchip PIC32
- SiFive
- Many others...
Emulators support (see emul/)
- qemu/riscv64c128 CHERI Pure Capability Mode
- qemu/riscv64 SMP
- qemu/riscv32 SMP
- qemu/mips64c128 CHERI Hybrid and Pure Capability Modes
- qemu/mips64
Featured applications (external)
- LTE 4G Link with nRF9160
- AI inference with stm32n6
- Neoden YY1 pick and place firmware
- CTSRD-CHERI device-model and device-model-riscv
- Other example apps
Getting started
See documentation.
Contributing
Please submit pull requests on github or send patches to [email protected].
Note that mdepx uses FreeBSD style(9) guide.
License
This project is licensed under two-clause BSD license.