embOS Overview
embOS is a priority-controlled real time operating
system, designed to be used as foundation for the development of embedded
real-time applications. It is a zero interrupt latency*, high-performance
RTOS that has been optimized for minimum memory consumption in both RAM
and ROM, as well as high speed and versatility. 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 different industries. 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.
* High priority interrupts are never disabled by embOS.
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.
Typical applications for embOS
embOS can be used in any application from battery-powered,
single chip products to systems demanding ultra-fast response, flexibility
and multiple tasks. Typical fields are:
- Industrial equipment
- Test and Measurement equipment
- Telecommunication
- Medical equipment
- Consumer electronics...
embOS features
- 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 available memory).
- Unlimited number of semaphores (limited only by available memory).
- Unlimited number of mailboxes (limited only by available memory).
- Size and number of messages can be freely defined.
- Unlimited number of software timers (limited only by available memory).
- Time resolution tick can be freely selected (default is 1ms).
- High resolution time measurement (more accurate than tick).
- Power management: Unused CPU 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.
Technical info
- 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
* Depends on CPU, compiler and library model used
CPU load
The following diagram illustrates the typical CPU load
imposed by embOS for the supported Renesas CPUs M7700 (low end 16 bit),
M16C/60 (medium 16 bit), M16C/80 (high end 16 bit) The data is based on
typical clock frequencies for these CPUs and a system time tick of one
ms (1000 System timer interrupts per second)
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.
Supported CPUs
embOS has been ported to a variety of CPUs and development
environments. We constantly add new devices to the list. If your microcontroller
is not supported yet, please contact us at info@segger.com
| 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 |

Copyright SEGGER Microcontroller GmbH & Co.KG. All
rights reserved.
For more information, please visit our web site
www.segger.com or contact us at info@segger.com
Last update:
February 26, 2008
|