Eminent Microsystems
Advanced Embedded Solutions
Turn-key project development
Our expertise and virtual component methodology delivers even the most complex application at a fraction of the cost.
Build the product you want instead of the product you end up with.               
ESF Real-Time Operating System

 

ESF RTOS™ is a real-time executive that provides an unusually efficient and elegant suite of functions for creating and coordinating multiple, asynchronous threads of code execution. A unique object-oriented architecture contributes to code compactness, interface simplicity, ease of customization, and powerful functionality. It is a “light weight” real-time kernel, where threads share the same address space, and where operations, such as context switching and memory allocation, are fast and deterministic.


The ESF RTOS is also an operating system abstraction layer, where the real-time kernel interface provides the same multi-threaded service model for standard platforms and other real-time kernels. Supported environments currently include WIN32 and POSIX systems and several real-time kernels such as UCOS, VDK, ThreadX, or Integrity. Kernel base classes and modularity provide easy portability to new environments.

Kernel Services
ESF OS service calls are exceptionally easy to learn, use, and remember. The services are methods contained in real-time kernel classes, such as Thread, Semaphore, or Mailbox, that provide a natural organization for these functions. These kernel classes completely define the kernel interface, and they use common interface style conventions.
For example, most kernel resource objects share a common “Pend(OS::TIMEOUT Timeout, …), Post(…), and Liberate()” style interface. The general pattern is that a thread checks for the availability of a resource, such as a block of memory or a semaphore, by calling a Pend(…) method. If the resource is available, the thread obtains it, else blocks with a specified time-out. When a thread is finished with a resource it obtained earlier, it frees it by calling the resource’s Post(…) method. All threads blocked on a resource can be freed by calling the Liberate() method.
This manual documents all kernel services. The services and functions of the kernel classes are summarized as follows:
1. OS (Operating System) class - system initialization, system error codes, system time-out codes, periodic operating system time tick service.

2. Thread class - thread creation, deletion, prioritizing, and scheduling; creation of “no context switch” critical regions; synchronization via (“and” and “or”) events; voluntary delay and relinquishing of CPU.

3. Semaphore class - resource access control, mutual exclusion, thread execution precedence.

4. Mailbox and PriorityMailbox classes - support for thread to thread or interrupt service routine to thread data communication.

5. Message and PriorityMessage classes - base data objects to post to mailboxes.

6. Timer class - software timing services.

7. Region class - deterministic, real-time, fixed block size, memory allocation/de-allocation management.

8. Cpu and Context (Hardware Abstraction Layer component) classes - processor hardware abstractions supporting portability.

9. Irq (Hardware Abstraction Layer component) class - standard interrupt control hardware abstraction interface.

10. Device class - standard base class for all device drivers.

Determinism
An important requirement for many applications is deterministic behavior and the ability to guarantee that “hard” real-time deadlines are met. If a hard deadline is missed, the operation is incorrect and serious problems could occur - e.g. the boiler explodes, the plane loses control, etc. This is in contrast to a missed “soft” deadline that creates a relatively minor recovery annoyance or inefficiency.
All ESF RTOS service calls have deterministic worst case execution times, and all internal functions, such as scheduling and context switching, are deterministic. This deterministic behavior supports hard real-time applications, and is a must for scheduling theories such as the Rate Monotonic Algorithm (RMA).

Features
  • Small footprint
  • No external library dependencies
  • No heap based allocation
  • ROMable
  • Fast speed and reliability
  • Over 8 years of design wins
  • Royalty free
  • Simple, easy, and consistent RTOS API
  • Open API - runs on WIN32 and POSIX
  • Easy porting features – CPU and Interrupt control hardware abstractions.
  • Deterministic behavior – time associated with context switch, scheduling, or message reception, etc. is the same regardless of the number of these objects used by the application.
  • Compatible with 16, 32, and 64 bit processors