18 CHAPTER 1 What is embOS?
1.1 What is embOS?
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 microcon-
trollers.
embOS is a high-performance tool that has been optimized for minimal memory consump-
tion 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 the real-time operating system
(RTOS) has been optimized in a variety of applications with different customers, to fit the
needs of industry. Fully source-compatible implementations of embOS are available for a
variety of microcontrollers, making it well worth the time and effort to learn how to structure
real-time programs with real-time operating systems.
embOS is highly modular. This means that only those functions that are required are linked
into an application, keeping the ROM size very small. The minimum memory consumption
is little more than 1.7 Kbyte of ROM and about 70 bytes of RAM (plus memory for stacks). A
couple of files are supplied in source code to make sure that you do not loose any flexibility
by using embOS libraries and that you can customize the system to fully fit your needs.
The tasks you create can easily and safely communicate with each other using a number
of communication mechanisms such as semaphores, mailboxes, and events.
Some features of embOS include:
• Preemptive scheduling:
Guarantees that of all tasks in READY state the one with the highest priority executes,
except for situations in which priority inheritance applies.
• Round-robin scheduling for tasks with identical priorities.
• Preemptions can be disabled for entire tasks or for sections of a program.
• Up to 4,294,967,296 priorities.
• Every task can have an individual priority, which means that 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).
• Two types of semaphores: Mutex and counting semaphores.
• Unlimited number of mailboxes
(limited only by the amount of available memory).
• Size and number of messages can be freely defined when initializing mailboxes.
• Unlimited number of software timers
(limited only by the amount of available memory).
• Up to 32 bit events for every task.
• Time resolution can be freely selected (default is 1 msec).
• Easily accessible time variable.
• Power management.
• Calculation time in which embOS is idle can automatically be spent in power save mode.
Power-consumption is minimized.
• Full interrupt support:
Interrupts may call any function except those that require waiting for data, as well
as create, delete or change the priority of a task. Interrupts can wake up or suspend
tasks and directly communicate with tasks using all available communication methods
(mailboxes, semaphores, events).
• Disabling interrupts for very short periods allows minimal interrupt latency.
• Nested interrupts are permitted.
• embOS has its own, optional interrupt stack.
• Application samples for an easy start.
• Debug build performs runtime checks that catch common programming errors early on.
• Profiling and stack-check may be implemented by choosing specified libraries.
• Monitoring during runtime is available using embOSView via UART, Debug
Communications Channel (DCC) and memory read/write, or else via Ethernet.
UM01001 User Guide & Reference Manual for embOS © 1995-2018 SEGGER Microcontroller GmbH