Loading repository data…
Loading repository data…
m-a-h-b-u-b / repository
A Secure Tiny Operating System for ARM Cortex-M IoT Devices based on Rust Programming Language
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
A Rust-based Secure Tiny OS for ARM Cortex-M IoT Devices
SecureIoTOS is a bare-metal operating system for ARM Cortex-M microcontrollers, written in Rust. It demonstrates secure boot, memory protection, process isolation, safe drivers, cryptography, and secure communication for IoT devices.
The repository provides fully modular source code and examples to build, run, and test the OS on both QEMU and real IoT boards like STM32, ESP32, and NRF52.
SecureIoTOS is written in Rust to leverage modern safety, security, and productivity benefits that are harder to achieve in C/C++. Here are the main reasons:
embedded-hal, RTIC, and HAL crates make Rust practical for IoT development.In short, Rust combines the performance of C with the safety of modern languages, making it ideal for security-critical IoT operating systems like SecureIoTOS.
+----------------+
| bootloader/ |
| Secure Boot & |
| Firmware Verify|
+-------+--------+
|
v
+----------------+
| kernel/ |
| Scheduler, |
| Syscalls, MPU |
+-------+--------+
|
+---------------+----------------+
| |
v v
+------------+ +-----------+
| memory/ | | ipc/ |
| Memory Mgmt| | Messaging|
| & Rust-safe| | Channels |
| Abstractions| +-----------+
|
v
+------------+
| hal/ |
| GPIO, UART,|
| SPI, I2C |
+------------+
|
v
+------------+
| drivers/ |
| Device |
| Drivers |
+------------+
|
v
+------------+ +-----------+
| crypto/ | | net/ |
| AES, ECC, | | TLS/DTLS, |
| RNG | | MQTT, CoAP|
+------------+ +-----------+
|
v
+------------+
| examples/ |
| IoT Apps |
+------------+
| Folder | Purpose |
|---|---|
| bootloader | Secure bootloader and firmware verification |
| kernel | Core kernel: scheduler, syscalls, MPU handling |
| memory | Memory management and Rust-safe abstractions |
| ipc | Task communication primitives |
| hal | MCU peripheral abstraction (GPIO, UART, SPI, I2C, timers) |
| drivers | Safe, interrupt-driven device drivers |
| crypto | Cryptography modules (AES, ECC, RNG) |
| net | TLS/DTLS, MQTT, CoAP for secure communication |
| examples | Sample IoT applications |
| tests | Security and unit tests |
| tools | Build, flash, and QEMU scripts |
rustup default nightly)rustup target add thumbv7em-none-eabi
cd bootloader
cargo build --target thumbv7em-none-eabi
qemu-system-arm -M stm32-p103 -kernel target/thumbv7em-none-eabi/debug/bootloader
Use the scripts in /tools to flash binaries to your board:
./tools/flash.sh <board>
examples/hello_world/ → Minimal Rust “Hello World” appexamples/sensor_node/ → Reads sensor data and prints via UARTexamples/telemetry/ → Secure telemetry system sending data over MQTT/DTLS
This project is dual-licensed:
For commercial licensing inquiries or enterprise use, please contact: mahbub.aaman.app@gmail.com
Md Mahbubur Rahman GitHub | Website
We welcome contributions!