SEGGER Embedded RTOS - The Leading Real-Time Operating System
embOS, a small and efficient real-time kernel, supports all common 8/16/32-bit CPUs and has become one of the most popular kernel. embOS provides on all CPU the benefits of a fully featured multitasking system by 100% identical API e.g. low memory footprint, fast context switches, low interrupt latency, embOSView.
embOS comes with a viewer that allows looking into the system from the PC (including profiling). Its small memory footprint makes it also suitable for single-chip applications. embOS is royalty-free, can be used in a unlimited number of projects and comes with 12 months of technical support and free updates.
- More than 25 years of continuous development
- Available for all popular cores, compiler, and development tools
- Deployed in several billion devices in a wide range of application areas
- Certified for functional safety according to IEC 61508 SIL 3 and IEC 62304 Class C
- MISRA-C:2012 compliant
- Powerful and easy to use API
- Highest performance with lowest use of memory
- Kernel awareness plugins available
- Zero interrupt latency
Solutions for 8/16/32 bit CPUs
embOS is a priority-controlled multitasking system, designed to be used as an embedded operating system for the development of real time applications for a variety of microcontrollers. It is a zero interrupt latency*, high-performance tool that has been optimized for minimum memory consumption in both RAM and ROM, as well as high speed and versatility.
SEGGER embOS RTOS Highlights
Throughout the development process of embOS, the limited resources of microcontrollers have always been kept in mind. The internal structure of embOS has been optimized in a variety of applications with different customers, to fit the needs of the industry.
embOS is fully source-compatible on different platforms (8/16/32 bits), making it easy to port applications to different CPUs. Its' highly modular structure ensures that only those functions that are needed are linked, keeping the ROM size very small.
Tasks can easily be created and safely communicate with each other using a complete palette of communication mechanisms such as semaphores, mailboxes, and events.
Interrupt Service Routines (ISRs) can also take advantage of these communication mechanisms.
embOS is royalty-free, can be used in a unlimited number of projects and comes with 12 months of technical support and free updates.
Features of SEGGER embOS
- Preemptive scheduling: Guarantees that of all tasks in READY state the one with the highest priority executes, except for situations where priority inversion applies.
- Round-robin scheduling for tasks with identical priorities.
- Preemptions can be disabled for entire tasks or for sections of a program.
- No configuration needed
- Up to 255 priorities: Every task can have an individual priority => the response of tasks can be precisely defined according to the requirements of the application.
- Unlimited number of tasks(limited only by the amount of available memory).
- Unlimited number of semaphores (limited only by the amount of available memory).
- 2 types of semaphores: resource and counting.
- Unlimited number of mailboxes (limited only by the amount of available memory).
- Size and number of messages can be freely defined
- Unlimited number of software timers (limited only by the amount of available memory).
- Time resolution can be freely selected (default is 1ms).
- Easily accessible time variable.
- Power management: Unused calculation time can automatically be spent in halt mode, minimizing power-consumption
- Full interrupt support: Most API functions can be used from within the Interrupt Service Routines (ISRs).
- Zero interrupt latency time.
- Nested interrupts are permitted.
- Start application and projects (BSPs) for an easy start.
- Debug build performs runtime checks, simplifying development.
- High precision per task profiling.
- Real time kernel viewer (embOSView) included.
- Very fast and efficient, yet small code.
- Minimum RAM usage.
- Core written in assembly language.
- All API functions can be called from C /C++/assembly.
- Initialization of microcontroller hardware as sources.
- BSP for any unsupported hardware with the same CPU can easily be written by user.
embOS has been ported to a variety of CPUs and development environments. SEGGER constantly add new devices to the list. If your microcontroller is not supported yet, please contact us.
- Altera NIOS/NIOS2
- Analog Devices ADuC702x (ARM7 TDMI)
- Atmel SAM7/SAM7X/SAM7S/AT91SAM9x/AVR/ATmega/AVR32
- Freescale Coldfire
- FUJITSU F2MC-16LX/FR30/FR50/FR60/FR70
- Infineon C16x
- LuminaryMicro CortexM3
- Microchip PIC24
- National Semiconductor CR16C
- NEC V850/V850E/V850ES/78K0/K0S/K0R/78K4
- Renesas R8C/M16C6x/M16C80/M32C/R32C/M7700/SH2/H8/H8S/H8SX
- STMicroelectronics ST7/ARM STR7xx/STR9xx/CortexM3/
- Texas Instruments MSP430x/MSP430
- TOSHIBA TLCS900
Technical Info about SEGGER embOS
- Kernel size (ROM) 1100 - 1600 byte*
- Kernel RAM usage 18 - 25 byte *
- Kernel CPU usage at 1 ms Interrupts with 10MHz M16C: less than .3%
- RAM usage mailbox 9 - 15 byte *
- RAM usage binary and counting semaphore 3 byte
- RAM usage resource semaphore 4 - 5 byte *
- RAM usage timer 9 - 11 byte *
- RAM usage event 0
- Basic time unit (One Tick) Default 1 ms, can be configured, Min. 100 µs (M16C@10MHz) *
- Task activation time independent of no. of tasks(e.g. typ. 12 us M16C@10MHz)
- Zero interrupt latency
- No. of tasks : Unlimited (by available RAM only)
- No. of mailboxes : Unlimited (by available RAM only)
- No. of semaphores : Unlimited (by available RAM only)
- No. of s/w timers : Unlimited (by available RAM only)
- Max. no. of priorities : 255
- Max. no. of tasks with identical priorities (Round robin scheduling) Unlimited
embOS Trial Versions and Documentation
For various processors, embOS is also available for download as full functional trial version. All trial versions contain a complete ready to go start project, the users manual and embOSView tool which can also be downloaded separately from our download page. Of course there are some limitations for the trial version: Using the trial version in a product is not allowed.
The trial version of the embOS libraries run without a time limit with a maximum of three tasks. If your application creates more than three tasks, embOS stops after a time limit of 15 minutes. Customer support is not included.
Check here for the available embOS trial versions and documentation.
Profiling using embOSView
embOSView is a very helpful tool for analysis of the running target application in real time. It displays the state of a running application using embOS. All communication is done from within the communication interrupt routines. This means that the communication is none intrusive if embOSView is not connected and minimum intrusive while embOSView is connected. In the profiling build, embOS collects precise timing information for every task, which enables embOSView to show the CPU load.
embOS Plug-in for IAR Embedded Workbench
The embOS plug-in for the IAR Embedded Workbench provides embOS awareness during debugging sessions. The state of several embOS objects such as the tasks, resource semaphores, mailboxes, or timers can be inspected. Read more
Libraries and source code
embOS is available as library or source code; the source code version includes libraries and the source code of the libraries. Both versions come with ready to go start projects, BSPs and embOSView. Different builds of libraries are also included: Release/stack check build, typically used in the release build of the application program; Debug/profiling build typically used in the development phase. The libraries offer the full functionality of embOS including all supported memory models of the compiler, the debug libraries and the source code for idle task and hardware initialization.
However, the libraries do not allow source-level debugging of the library routines and the kernel. The full source version provides the ultimate options: embOS can be recompiled for different data sizes; different compile options give full control of the generated code, making it possible to optimize the system for versatility or minimum memory requirements. The entire system can be debugged and modified.