mbed OS
mbed-os-6.17.0Features
-
Deterministic multithreaded execution via the integrated Keil RTX kernel.
-
Dual-profile support including a Full Profile for RTOS features and a Bare Metal Profile for constrained devices.
-
Native integration of Mbed TLS and Mbed Crypto for secure communication and storage.
-
Comprehensive connectivity support including Wi-Fi, Bluetooth Low Energy (BLE), LoRaWAN, and Cellular (LTE-M, NB-IoT).
-
Support for Wi-SUN mesh networking via the integrated Nanostack.
-
Standardized C++ API for peripheral access including GPIO, ADC, I2C, SPI, PWM, and CAN.
-
Built-in storage management with support for FAT and LittleFS file systems.
-
Cloud management services integration for device provisioning and updates.
-
Advanced power management features including tickless sleep and automated sleep/deep-sleep transitions.
-
Support for Arm TrustZone for hardware-enforced security isolation.
-
Integrated bootloader support and Over-the-Air (OTA) update capabilities.
-
Extensive hardware abstraction layer (HAL) for porting across diverse Cortex-M vendors.
-
Built-in error handling with overridable weak symbols for production-ready failure management.
-
Support for multiple toolchains including Arm Compiler 6, GCC ARM, and IAR.
-
Comprehensive testing framework (Greentea) and unit testing support.
Architecture
Arm Mbed OS follows a layered architectural design optimized for Arm Cortex-M microcontrollers. At its core, the Full Profile utilizes the Keil RTX kernel, a deterministic real-time operating system that provides multithreading, semaphores, mutexes, and other RTOS primitives. For highly constrained devices, Mbed OS offers a Bare Metal Profile which excludes the RTX kernel to minimize memory footprint, focusing on a single-threaded event-loop model.
The architecture is structured into several distinct layers: the Hardware Abstraction Layer (HAL) provides a consistent interface to vendor-specific peripherals; the Core OS layer manages the RTOS kernel and system services; the Middleware layer includes comprehensive stacks for connectivity (IP, BLE, LoRaWAN, Wi-SUN) and security (Mbed TLS); and the Application API layer provides a standardized C++ interface for developers. This modularity allows developers to include only the components necessary for their specific application, optimizing for both performance and power consumption.
Core Components
- RTOS Kernel: Based on CMSIS-RTOS2 (Keil RTX) for thread management and synchronization.
- Connectivity Stacks: Native support for IPv4/IPv6, WiFi, Bluetooth Low Energy, LoRaWAN, and Cellular.
- Security Foundations: Integrated Mbed TLS for cryptography and secure communication, with support for Arm TrustZone.
- Storage & FileSystems: Support for LittleFS (optimized for wear leveling) and FATFileSystem.
- Power Management: Automated sleep management and tickless RTOS mode to maximize battery life.
Use Cases
This RTOS is ideal for:
- Smart Street Lighting: Managing city-wide lighting platforms with industry-standard control nodes and NEMA socket integration.
- Smart City Bike Lights: Utilizing accelerometers and low-power wireless to monitor road conditions and cyclist safety.
- Industrial Asset Monitoring: Deploying multi-sensor devices for air quality, motion, and cellular-based remote monitoring.
- Agricultural IoT: Implementing LoRaWAN-based sensor networks for long-range, low-power soil and climate monitoring.
- Smart Home Appliances: Providing secure, Wi-Fi connected interfaces for domestic devices and energy management systems.
- Wearable Health Monitors: Leveraging BLE and advanced power management for long-lasting, secure medical telemetry.
Getting Started
Developers can begin by choosing between three primary development environments: Keil Studio Cloud for a zero-installation web-based IDE, Mbed Studio for a dedicated desktop experience with integrated debugging, or Mbed CLI for command-line flexibility and automation. The official documentation at os.mbed.com/docs provides comprehensive Doxygen-generated API references, step-by-step tutorials, and detailed porting guides for custom hardware.
Note: Arm has announced an End of Life (EOL) timeline for Mbed OS, with the project and its associated websites scheduled for archiving in July 2026. Developers starting new projects should consider the long-term maintenance implications and review the official announcement on the Mbed blog.
Related Projects (102)
BluePill Board Support for Mbed OS 6
A board support package and library for the STM32F103C8T6 'BluePill' board, specifically designed for Mbed OS 6. It provides custom target definitions, pin mappings, and peripheral configurations to enable seamless development on the popular ARM Cortex-M3 microcontroller.
Edge Computing AI for Cubesats
A research project evaluating AI model deployment on edge computing platforms for cubesat applications. It compares performance, power consumption, and accuracy across NVIDIA Jetson TX1, Intel Movidius, and uTensor on Mbed OS using a TensorFlow-based character recognition model.
Mbed OS 6 Support for WeAct Black Pill (STM32F401CC)
This project provides a custom target definition and hardware abstraction layer for the WeAct Black Pill board based on the STM32F401CCU6 microcontroller. It enables full compatibility with Mbed OS 6, including pin mappings, clock configurations, and peripheral support for the ARM Cortex-M4 platform.
Minimal Mbed OS Template for STM32F030
A lightweight project template designed to run Mbed OS on the resource-constrained STM32F030F4 microcontroller. It includes specific optimizations to fit the framework into 16KB of flash memory, such as a custom printf implementation and disabled standard I/O libraries.
Minimal Mbed OS Template for STM32F103
A lightweight project template for developing applications on the STM32F103C8 microcontroller using Mbed OS and PlatformIO. It features a streamlined configuration using newlib-nano to minimize memory footprint while providing full access to Mbed OS APIs.
Nucleo Experiment Control System for Atom Interferometry
A specialized experiment control library for Atom Interferometry built on the STM32 NUCLEO-F746ZG platform using Mbed OS. It provides a scriptable, high-precision alternative to traditional LabVIEW and FPGA setups for managing complex timing sequences and hardware triggers.
OneWireNg
A comprehensive 1-wire service library for embedded systems, providing an advanced alternative to the classic OneWire library. It supports features like overdrive mode, parasite powering, and search filtering across multiple frameworks including Arduino, ESP-IDF, Pico SDK, and Mbed OS.
Pruning Deep Learning Models for ARM Cortex-M
A framework for optimizing deep learning models through convolutional and fully-connected layer pruning, specifically designed for deployment on ARM Cortex-M microcontrollers. It leverages the CMSIS library and Mbed OS to achieve significant reductions in inference time on hardware like the NuMaker-PFM-M487 board.
PV Curve Tracer
Firmware for a solar array curve tracer built on Mbed OS 6. It manages high-speed voltage sweeps and data acquisition through a three-threaded architecture, coordinating between onboard sensors, CAN-based external sensor boards, and a host PC for real-time PV curve visualization.
Rapid Embedded Systems Design Education Kit
A comprehensive educational resource for teaching Arm-based embedded systems design and rapid prototyping. It features a full syllabus covering Cortex-M4 architecture, the Mbed platform, and RTOS principles using the NUCLEO-F401RE development board.
SerialBridge
A cross-platform C++ library for UART and CAN FD serial communication between PCs and microcontrollers including Arduino, Mbed, and STM32. It provides a flexible packet-based messaging system designed for embedded systems without relying on the C++ Standard Template Library (STL).
Spektrum Receiver Library for Mbed
A C++ library providing Mbed support for Spektrum serial receivers, specifically tested with the SPM9745 DSMX remote receiver. It includes classes for receiver interfacing and binding, along with utility macros for converting raw servo positions to PWM pulse widths.
spirit Motor Driver Library
A C++ library designed for controlling motor drivers via CAN communication between microcontrollers. It supports Arduino and Mbed OS 6 across multiple architectures including ESP32, STM32, and RP2040, featuring a hardware-independent core for easier automated testing.
STM32F103 Low Power Library for Mbed OS
A specialized library for Mbed OS that enables standby mode on STM32F103 microcontrollers to minimize power consumption. It utilizes the hardware Real-Time Clock (RTC) alarm to wake the system from deep sleep, making it suitable for battery-powered IoT applications.
Timezone_Generic Library
A comprehensive Arduino library for handling timezone conversions and automatic Daylight Saving Time (DST) adjustments across a wide range of embedded platforms. It supports numerous microcontrollers including ESP32, ESP8266, STM32, and RP2040, integrating with various storage and networking modules.
uTensor MNIST Handwriting Recognition Demo
A demonstration project showcasing machine learning on embedded devices using uTensor and Mbed OS. It implements a neural network trained on the MNIST dataset to recognize handwritten digits on an STM32F413 Discovery board with a touchscreen.
WIZnetInterface Library
A comprehensive network stack implementation for WIZnet Ethernet controllers like the W5500 and W6100 on Mbed OS. It provides a standard EthInterface and NetworkStack, enabling embedded developers to easily integrate wired networking with TCP, UDP, DHCP, and DNS support.
MOVE-ON Helium Sensors
The sensor subsystem for the MOVE-ON Helium high-altitude balloon mission, built on Mbed OS. It provides data collection and monitoring capabilities for balloon-borne scientific payloads, targeting STM32 microcontrollers. The project includes integration with Grafana for data visualization and supports automated deployment via GitLab CI.
MovingAverageFloat
A lightweight C++ template library for calculating moving averages of floating-point numbers on Arduino and Mbed platforms. It provides an efficient way to smooth sensor data and reduce noise using a circular buffer with double-precision internal accumulation to maintain accuracy.
MQTT Demo for STM32 IoT Discovery Board with Thingsboard
An Mbed OS application for the STM32 B-L475E-IOT01A Discovery Board that transmits environmental data to the Thingsboard IoT platform. It integrates the HTS221 temperature and humidity sensor with the ISM43362 WiFi module using the MQTT protocol.
MultiResetDetector_Generic Library
A cross-platform Arduino library for detecting multiple resets within a configurable timeout period. It supports a vast array of hardware including AVR, STM32, SAMD, nRF52, and RP2040, utilizing various storage backends like EEPROM, FlashStorage, and LittleFS to persist reset counts for triggering configuration modes or special startup routines.
Nano33BLESensor
An Arduino library for the Nano 33 BLE Sense that leverages Mbed OS to automatically place sensor measurements in a ring buffer. It provides a common interface for various onboard sensors, including the accelerometer, gyroscope, magnetometer, and environmental sensors, allowing background data collection without blocking the main loop.
Arm Mbed OS Blue Pill USB Demo
A demonstration project for the STM32F103C8 'Blue Pill' board using the Arm Mbed OS USB stack. It features a custom linker configuration to support the 128KB flash variants commonly found on these boards and provides a foundation for implementing USB communication on low-cost STM32 hardware.
lwIP Bug Finder
A specialized tool for identifying vulnerabilities in the lwIP TCP/IP stack using symbolic execution. Leveraging the angr framework, it analyzes binary executables to detect memory corruption, segmentation faults, and protocol logic errors in embedded networking stacks.
Magic Wand on mbed
A port of the TensorFlow Lite Magic Wand gesture recognition example to the mbed K66F platform. It utilizes mbed OS and TensorFlow Lite for Microcontrollers to perform real-time gesture detection on embedded hardware, covering the full pipeline from data collection to deployment.
Mbed Bootloader
A generic, secure bootloader designed for Mbed OS and the Pelion Device Management Client. It manages firmware updates through a metadata header interface, supporting multi-slot candidate storage on internal flash or external block devices while providing Root of Trust integration.
Mbed OS Client Example
A legacy example application for Mbed OS that demonstrates connecting devices to the Mbed Device Connector service. It provides a reference implementation for using the Mbed Client library to manage LwM2M resources and secure communication across various network interfaces including Ethernet, WiFi, and Mesh.
Mbed OS LoRaWAN TinyShell Application
A LoRaWAN example application for Mbed OS that integrates a command-line interface for real-time configuration. It supports both OTAA and ABP activation, provides NVM storage for provisioning data on MultiTech modules, and is compliant with the LoRaWAN v1.0.2 specification.
Mbed OS UniPG Samples #1
A collection of educational Mbed OS example projects demonstrating core RTOS concepts, GPIO interrupt handling, and event queues. It provides a foundational framework for embedded development with specific configurations for stack management and Ozone debugger integration.
MBED_RP2040_PWM Library
A hardware-based PWM library for RP2040-based boards using the Arduino-mbed core. It provides high-precision, non-blocking PWM signals that remain stable even when the main application loop is performing blocking tasks, making it ideal for mission-critical control applications.
Mbed Tools
A modern command-line interface for Mbed OS development, providing tools for project management, device detection, and build orchestration. It leverages CMake and Ninja to streamline the compilation process for Mbed Enabled devices and supports multiple toolchains including GCC, ARM, and IAR.
mbed-vscode-tools
A command-line utility designed to automate the configuration of Visual Studio Code IntelliSense for Mbed OS projects. It generates and updates the c_cpp_properties.json file by extracting include paths and defines from Mbed build directories. It works in conjunction with the official mbed-tools CLI and supports GCC ARM and ARMCC toolchains.
ModbusMaster for Mbed OS 6
An asynchronous Modbus-RTU library for Mbed OS 6 that provides non-blocking communication using EventQueues. It supports standard Modbus functions for reading and writing coils and registers, with built-in support for RS485 direction control and custom frame handling.
Pelion Device Management Client Example for Mbed OS
A reference implementation of the Pelion Device Management Client for Mbed OS devices. It provides core IoT functionalities including secure developer provisioning, remote firmware updates, and multi-interface connectivity support for Ethernet, Wi-Fi, and Cellular networks.
FS_Nano33BLE
A filesystem wrapper library for Arduino MBED nRF52840-based boards, providing a simplified interface for LittleFS and FATFS on internal flash memory. It supports power-fail safety and high-performance data storage for devices like the Nano 33 BLE and Seeeduino XIAO nRF52840.
Icetea Test Framework
Icetea is an automated testing framework for Mbed development that automates flashing, test execution, and result reporting. It uses a host-side Python driver to control devices under test via a command-line interface, supporting both physical hardware and simulated processes.
Indoor Localization using CellLocate
An embedded application designed for the Ublox C027-LISA-U200 board that implements indoor position estimation using u-blox CellLocate technology. It utilizes mbed-os to provide a hybrid localization solution that combines cellular network data with GPS signals for improved accuracy in challenging environments.
Infrared Remote Control Repeater
An embedded project that implements an IR signal repeater using an STM32F030 microcontroller and Mbed OS. It captures signals from an IR receiver module and reconstructs the 38 kHz carrier frequency to drive an IR LED, effectively extending the range of standard remote controls.
LAL Control for Mbed OS
A control and monitoring system for a pulsed ablation laser developed for the Laboratorio de Sólidos Amorfos at FIUBA. Built on Mbed OS for the NUCLEO-F401RE platform, it manages temperature sensing, motor cooling, and user interaction via LCD, including a comprehensive alarm system for environmental monitoring.
ThingPulse OLED SSD1306 Driver
A comprehensive display driver for SSD1306 and SH1106 OLED displays on ESP8266, ESP32, and Mbed-OS platforms. It supports I2C and SPI interfaces, providing a rich API for drawing shapes, text, and progress bars, alongside a dedicated UI framework for managing frames and transitions.
ant-arduino
A comprehensive Arduino and Mbed-compatible library for interfacing with ANT radios, specifically targeting nRF51 and nRF52 hardware. It provides a structured API for managing ANT channels, network keys, and data transmission/reception using both hardware and software serial interfaces.
AsynchSerial
AsynchSerial is a C++ wrapper for the Mbed OS UARTSerial class that introduces timeout functionality for serial communication. It simplifies asynchronous data handling by providing callback mechanisms for both transmission and reception, making it easier to integrate serial I/O into event-driven Mbed applications.
Bitcraze Crazyflie 2.0/2.1 Mbed OS Firmware
A firmware implementation for the Bitcraze Crazyflie 2.0 and 2.1 nano-quadcopters utilizing the ARM Mbed OS platform. It provides a modular driver architecture for various inertial, pressure, and distance sensors while targeting STM32F4 series microcontrollers.
Blynk_WiFiNINA_WM
A comprehensive WiFi configuration manager and Blynk connection library for a wide range of Arduino-compatible boards using WiFiNINA modules. It enables runtime credential configuration via a web portal, supports multiple WiFi networks, and integrates with storage solutions like LittleFS and EEPROM to eliminate hardcoded credentials.
Cicada - IoT Communications Module for Energy Access
Cicada is a platform-agnostic C++ library providing drivers for 2G, 3G, 4G, and Wi-Fi modems, designed specifically for energy access IoT devices. It features a built-in task scheduler and MQTT support, enabling bi-directional cloud connectivity on platforms ranging from STM32 and Mbed to Linux.
DebounceIn
DebounceIn is a specialized C++ library for Mbed OS designed to provide debounced interrupt handling for digital inputs. It allows developers to attach ISR-safe callbacks to input transitions, ensuring reliable switch and button state detection without the noise of mechanical bouncing.
Docker Embedded Development Toolchains
A collection of multi-stage Docker images designed to provide consistent, reproducible environments for embedded development and CI/CD pipelines. It features specialized containers for Clang-format and the GNU Arm Embedded Toolchain, pre-configured with Mbed CLI, CMake, and Ninja.
DoubleResetDetector_Generic
A comprehensive Arduino library for detecting double reset events across a vast array of hardware architectures including AVR, SAMD, STM32, nRF52, and RP2040. It enables developers to trigger alternative startup modes, such as configuration portals or factory resets, by simply pressing the reset button twice within a configurable timeout.
ECE 2035 RPG Game
A top-down RPG game developed for the Georgia Tech ECE 2035 course, utilizing the mbed platform and an LPC1768 microcontroller. It features a hash table for efficient game object management, accelerometer-based character movement, and a fetch-quest narrative with custom dialogue.
EdgeAI-uTensor: Embedded RTOS for ARM Processors
A project showcasing the deployment of machine learning models on ARM-based embedded systems using the uTensor framework. It facilitates the transition of DNN models from desktop training environments to real-time execution on edge devices for applications like predictive maintenance.
LittleFS_Mbed_RP2040 Library
A LittleFS wrapper designed for RP2040-based microcontrollers running the Arduino-mbed core. It provides a reliable, power-fail-safe filesystem for onboard flash storage, supporting POSIX and Mbed FileSystem APIs on boards like the Raspberry Pi Pico and Arduino Nano RP2040 Connect.