embOS-MPU
embOS-Classic-MPU and embOS-Ultra-MPU
The high-precision, impressively energy-efficient RTOS
embOS-MPU offers memory protection on top of the proven RTOS (Real-Time Operating System). It significantly enhances both stability and safety for embedded applications, simplifying any certification process.
1. Overview
2. Key features
3. Use cases
4. How embOS-MPU works
5. Supported cores and compilers
6. embOS-MPU packages
7. Licensing

Overview
SEGGER's tried-and-tested real-time operating systems embOS-Classic and embOS-Ultra are also available with memory protection. Essential for embedded-system stability, safety, and security, memory protection ensures that bugs in a task do not corrupt an entire system. It also enhances fault tolerance and enables safer execution of critical functions.

Key features
Memory-protection technology uses a processor's memory protection unit (MPU) to isolate individual tasks from both one another and the operating system. Errors in a task are prevented from affecting an entire system, ensuring that safety-critical functions are executed reliably.
As a result, embedded systems are more stable, as unprivileged tasks have only controlled access to memory, peripherals, and operating-system objects.



Memory Protection
High Reliability
Impressive Flexibility
embOS-MPU ensures that unprivileged tasks operate within strictly defined boundaries for memory and resources, preventing these tasks from affecting other tasks or an operating system. All tasks are fully sandboxed.
Through the strict separation of privileged and unprivileged tasks, a system remains stable even in the event of failure. Critical functions can continue running independently.
Unprivileged tasks can be granted controlled access to memory regions, peripherals, and RTOS objects. This allows developers to define permissions precisely, ensuring both security and efficient resource utilization.
Use Cases
From battery-powered single-chip products to systems that demand ultra-fast responses, flexibility, and the ability to schedule multiple tasks, embOS-MPU provides a robust foundation for system security and efficiency. The range of potential application areas is diverse, and includes medical equipment, automation, avionics, and any other application area where safety is critical.



Reliability in Safety-Critical Systems
Data Integrity in Embedded Applications
Stability in Consumer Electronics
In safety-critical systems, such as those found in medical devices, automotive control units, and industrial automation, reliability is paramount. embOS-MPU enhances system integrity, ensuring that faults in one task do not compromise an entire system. This guarantees continued operation even in the presence of software errors.
IoT and connected devices, security is a top priority. embOS-MPU enforces strict memory access rules, protecting sensitive data and preventing unauthorized code execution. The result? Significantly reduced risk of a security breach.
Consumer Electronics, such as smart home devices, wearables, and infotainment systems, embOS-MPU enhances reliability by preventing faults in one task from affecting an entire system. This ensures smooth and uninterrupted device operation, even if individual tasks encounter issues.
How embOS-MPU Works
Memory protection is a mechanism for controlling memory-access rights. It is part of most modern processor architectures and operating systems, and it prevents possible bugs or even malware contained in a task from affecting an entire system. For memory protection to work, certain application tasks must be restricted from accessing key system components like memory, special function registers, and the operating system's control structures, which could affect other tasks or the operating system itself.

To enhance security, embOS-MPU applications consist of two parts: a privileged section, responsible for system initialization and driver management, and an unprivileged section, responsible for the main application. This division of labor minimizes the need for extensive verification. If can unprivileged task violates access restrictions or triggers a fault, embOS-MPU detects the violation; automatically terminates it; and, if needed, executes a call back function to handle the event.
Memory-protection technology is available for embOS-Classic and embOS-Ultra.


embOS-Classic-MPU
embOS-Ultra-MPU
embOS-Classic enhanced with embOS-MPU technology combines proven real-time performance with robust memory protection. MPU technology allows embOS-Classic to maintain its efficient, priority-based task scheduling while also offering an extra layer of safety.
embOS-Ultra with embOS-MPU technology delivers high-precision real-time performance, while memory-protection technology ensures system stability and safety. Furthermore, Cycle-Resolution Timing enables precise task execution with minimal latency.
Note: Where functional-safety certification is required, SEGGER offers embOS-Safe.
Supported Cores and Compilers
embOS-MPU is available for the core and compiler combinations listed in the complete overview of embOS ports.
Complete overview of embOS ports
| Chip Vendor | Core | Compiler / IDE | embOS | Part# |
|---|---|---|---|---|
| Simulation | x86 / x86_64 | Linux | embOS-Classic Sim Linux | 1.40.x.35 |
| Microsoft VisualStudio | embOS-Classic Sim VisualStudio | 1.40.x.29 | ||
| MinGW / GCC | embOS-Classic Sim MinGW | 1.40.x.30 | ||
| Linux | embOS-Classic MPU Sim Linux | 1.23.x.35 | ||
| ARM | ARM7 / ARM9 | ARM ADS 1.2 toolkit | embOS-Classic ARM ADS12 | 1.08.x.13 |
| ARM RVDS 3.0 | embOS-Classic ARM RVDS30 | 1.08.x.16 | ||
| GCC | embOS-Classic ARM GCC | 1.08.x.25 | ||
| IAR EWARM | embOS-Classic ARM IAR | 1.08.x.01 | ||
| Keil MDK | embOS-Classic ARM Keil MDK | 1.08.x.08 | ||
| Rowley CrossWorks | embOS-Classic ARM Rowley | 1.08.x.14 | ||
| SEGGER Embedded Studio | embOS-Ultra ARM ES embOS-Classic ARM ES | 15.08.x.28 1.08.x.28 | ||
| Cortex-A / Cortex-R | GCC | embOS-Classic ARM GCC embOS-Classic ARM64 GCC | 1.08.x.25 1.45.x.25 | |
| IAR EWARM | embOS-Classic ARM IAR | 1.08.x.01 | ||
| Keil MDK | embOS-Classic ARM Keil MDK | 1.08.x.08 | ||
| Rowley CrossWorks | embOS-Classic ARM Rowley | 1.08.x.14 | ||
| SEGGER Embedded Studio | embOS-Ultra ARM ES embOS-Classic ARM ES | 15.08.x.28 1.08.x.28 | ||
| Cortex-M | ARM DS-5 | embOS-Classic Cortex-M DS5 | 1.23.x.27 | |
| GCC | embOS-Ultra Cortex-M GCC embOS-Classic Cortex-M GCC embOS-Classic-MPU Cortex-M GCC | 15.23.x.25 1.23.x.25 1.73.x.25 | ||
| IAR EWARM | embOS-Ultra Cortex-M IAR embOS-Classic Cortex-M IAR embOS-Classic-MPU Cortex-M IAR | 15.23.x.01 1.23.x.01 1.73.x.01 | ||
| Keil MDK | embOS-Classic Cortex-M Keil MDK | 1.23.x.08 | ||
| Rowley CrossWorks | embOS-Classic Cortex-M Rowley | 1.23.x.14 | ||
| SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-Classic-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 | ||
| TI Code Composer | embOS-Classic Cortex-M TICC | 1.23.x.22 | ||
| Allwinner | Cortex-A / Cortex-R | SEGGER Embedded Studio | embOS-Ultra ARM ES | 15.08.x.28 |
| Ambiq Micro | Cortex-M | SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-Classic-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 |
| Cypress Semiconductor | Cortex-M | SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-Classic-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 |
| F2MC-16LX/FX | Softune | embOS-Classic F2MC-16LX/FX Softune | 1.07.x.05 | |
| FR30/50/70 | Softune | embOS-Classic FR30/50/70 Softune | 1.14.x.05 | |
| GigaDevice | Cortex-M | SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-Classic-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 |
| RISC-V | SEGGER Embedded Studio | embOS-Ultra RISC-V ES embOS-Classic RISC-V ES | 15.55.x.28 1.55.x.28 | |
| GCC | embOS-Classic RISC-V GCC | 1.55.x.25 | ||
| IAR | embOS-Classic RISC-V GCC | 1.55.x.01 | ||
| IDT | Cortex-M | SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-Classic-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 |
| Infineon | C16x | Keil MDK | embOS-Classic C16x Keil MDK | 1.11.x.08 |
| Tasking | embOS-Classic C16x Tasking | 1.11.x.02 | ||
| Cortex-M | SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-Classic-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 | |
| Intel FPGA (Altera) | Cortex-A / Cortex-R | SEGGER Embedded Studio | embOS-Ultra ARM ES embOS-Classic ARM ES | 15.08.x.28 1.08.x.28 |
| NIOS2 | Altera GCC | embOS-Classic NIOS2 GNU | 1.16.x.11 | |
| Maxim Integrated | ARM7 / ARM9 | SEGGER Embedded Studio | embOS-Ultra ARM ES embOS-Classic ARM ES | 15.08.x.28 1.08.x.28 |
| Cortex-M | SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 | |
| Microchip | AVR ATMega / ATXMega | IAR | embOS-Classic AVR IAR | 1.10.x.01 |
| AVR32 | GNU | embOS-Classic AVR32AP GNU | 1.28.x.11 | |
| GNU | embOS-Classic AVR32UC GNU | 1.28.x.11 | ||
| IAR | embOS-Classic AVR32UC IAR | 1.28.x.01 | ||
| Cortex-A / Cortex-R | SEGGER Embedded Studio | embOS-Ultra ARM ES embOS-Classic ARM ES | 15.08.x.28 1.08.x.28 | |
| Cortex-M | SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-Classic-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 | |
| PIC18 | Microchip XC18 | embOS-Classic PIC18 MPLAB C18 | 1.29.x.18 | |
| PIC24/PIC30/dsPIC33 | Microchip XC16 | embOS-Classic PIC24 XC16 | 1.22.x.18 | |
| PIC32 | Microchip XC32 | embOS-Classic PIC32 XC32 | 1.25.x.18 |
| Nordic Semiconductor | Cortex-M | SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-Classic-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 |
| Nuvoton | Cortex-M | SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-Classic-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 |
| NXP | ColdFire | CodeWarrior | embOS-Classic ColdFire CodeWarrior | 1.21.x.1.7 |
| CodeWarrior MCU | embOS-Classic ColdFire CodeWarrior MCU | 1.21.x.33 | ||
| CodeWarrior | embOS-Classic ColdFireV1 CodeWarrior | 1.31.x.17 | ||
| IAR | embOS-Classic ColdFire IAR | 1.21.x.01 | ||
| Cortex-A / Cortex-R | SEGGER Embedded Studio | embOS-Ultra ARM ES embOS-Classic ARM ES | 15.08.x.28 1.08.x.28 | |
| Cortex-M | SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-Classic-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 | |
| HCS12 | CodeWarrior | embOS-Classic HCS12 CodeWarrior | 1.37.x.17 | |
| PowerPC | CodeWarrior | embOS-Classic PowerPC CodeWarrior | 1.38.x.17 | |
| S12Z | S12lisa | embOS-Classic S12Z S12lisa | 1.44.x.31 | |
| SO8 | CodeWarrior | embOS-Classic SO8 CodeWarrior | 1.33.x.1.7 | |
| OKI Semiconductor | ARM7 / ARM9 | SEGGER Embedded Studio | embOS-Ultra ARM ES embOS-Classic ARM ES | 15.08.x.28 1.08.x.28 |
| Renesas | 78K0 | IAR | embOS-Classic 78K0/K0S/K0R IAR | 1.02.x.01 |
| 78K4 | IAR | embOS-Classic 78K4 IAR | 1.02.x.01 | |
| Cortex-A / Cortex-R | SEGGER Embedded Studio | embOS-Ultra ARM ES embOS-Classic ARM ES | 15.08.x.28 1.08.x.28 | |
| Cortex-M | SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-Classic-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 | |
| H8/H8S/H8SX | IAR | embOS-Classic H8/H8S IAR | 1.18.x.01 | |
| HEW | embOS-Classic H8/H8S/H8SX HEW | 1.18.x.07 | ||
| M16C/R8C | HEW | embOS-Classic R8C HEW | 1.20.x.07 | |
| GNU | embOS-Classic M16C GNU | 1.05.x.11 | ||
| NC30 | embOS-Classic M16C NC3 | 1.05.x.04 | ||
| IAR | embOS-Classic M16C/R8C IAR | 1.05.x.01 | ||
| Tasking | embOS-Classic M16C/R8C Tasking | 1.05.x.02 | ||
| M32C/M16C80 | NC308 | embOS-Classic M32C/M16C80 NC308 | 1.06.x.04 | |
| IAR | embOS-Classic M32C/M16C80 IAR | 1.06.x.01 | ||
| RA | SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-Classic-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 | |
| RE01 | SEGGER Embedded Studio | embOS-Classic Cortex-M ES embOS-Ultra Cortex-M ES | 1.23.x.28 15.23.x.28 | |
| RH850 | IAR | embOS-Classic RH850 IAR | 1.42.x.01 | |
| RL78 | CCRL | embOS-Classic RL78 CCRL | 1.36.x.07 | |
| IAR | embOS-Classic RL78 IAR | 1.36.x.01 | ||
| RX | IAR | embOS-Classic RX IAR | 1.34.x.01 | |
| CCRX | embOS-Classic RX CCRX | 1.34.x.07 | ||
| GNU | embOS-Classic RX GNU | 1.34.x.23 | ||
| RZ | KPIT GNU | embOS-Classic RZ KPIT GNU | 1.08.x.23 | |
| R32C | IAR | embOS-Classic R32C IAR | 1.26.x.01 | |
| HEW | embOS-Classic R32C HEW | 1.26.x.07 | ||
| SH2 | HEW | embOS-Classic SH2 HEW | 1.24.x.07 | |
| SH2A | HEW | embOS-Classic SH2A HEW | 1.27.x.07 | |
| HEW GNU | embOS-Classic SH2A HEW GNU | 1.27.x.11 | ||
| IAR | embOS-Classic SH2A IAR | 1.27.x.01 | ||
| V850 | GreenHills | embOS-Classic V850 GreenHills | 1.03.x.03 | |
| IAR | embOS-Classic V850 IAR | 1.03.x.01 | ||
| NEC | embOS-Classic V850 NEC | 1.03.x.19 | ||
| Silicon Labs | 8051 | IAR | embOS-Classic 8051 IAR | 1.39.x.01 |
| Cortex-M | SEGGER Embedded Studio | embOS-Ultra Cortex-M ES embOS-Ultra-MPU Cortex-M ES embOS-Classic Cortex-M ES embOS-Classic-MPU Cortex-M ES | 15.23.x.28 15.73.x.28 1.23.x.28 1.73.x.28 | |
| SiFive | RISC-V | SEGGER Embedded Studio | embOS-Ultra RISC-V ES embOS-Classic RISC-V ES | 15.55.x.28 1.55.x.28 |
| GCC | embOS-Classic RISC-V GCC | 1.55.x.25 | ||
| IAR | embOS-Classic RISC-V IAR | 1.55.x.01 |
embOS-MPU Packages
embOS-MPU technology is available forembOS-Classic and embOS-Ultra. Both options can be delivered as an object-code or source-code package. The source-code package expands on the object-code package by including embOS source code. Using embOS source code enables the use of application-specific compiler options. Compile-time switches allows users to customize embOS by enabling only required functionalities. Adding embOS source code to a project provides additional insight when debugging at source level.
All embOS packages include the same ready-to-use board support packages for various devices and evaluation boards.
| Features | Object Code | Source Code |
|---|---|---|
| embOS object code library | Supported | Supported |
| embOS source code library | Not Supported | Supported |
| embOSView - Profiling PC tool | Supported | Supported |
| embOS manual | Supported | Supported |
| CPU - and compiler-specific manual | Supported | Supported |
| Release notes | Supported | Supported |
| embOS IDE plugins | Supported | Supported |
| SystemView instrumentation | Supported | Supported |
| Device Supported | ||
| Board support packages | Supported | Supported |
| Updates and technical support | ||
| Features & maintenance updates | Supported | Supported |
| Technical support | Supported | Supported |
Licensing
embOS-MPU is available under various Embedded Software License models and delivered in source code packages. With a wide range of licensing options, embOS-MPU can fulfill commercial requirements as well as technical requirements. All licenses are one-time payments. embOS-MPU is royalty-free and not subscription-based. This makes the software a part of the equipment expenses, keeping the costs static.
The embOS-MPU licenses include:
- 6 months of updates and support by SEGGER's Embedded Experts