Deeply Embedded RTOS

MeOS2 for MIPS and Meta

The MEOS™ embedded RTOS provides a comprehensive set of facilities for small to medium sized embedded systems, while avoiding complex features that increase code size and reduce performance.

In addition to traditional RTOS features such as flexible pre-emptive scheduling, message mailboxes, resource locking and memory management, MEOS has unique features designed to exploit multi-threaded and multi-core systems with the details of scheduling, synchronization and communication being handled by a standardized and well-tested environment.

MEOS is the ideal solution for consumer electronics products such as radios, streaming audio devices, “Internet Of Things” and much more, and has been successfully deployed in hundreds of products and millions of shipped systems.

MEOS can be licensed as an add-on component for use with the Codescape MIPS SDK and is free from per unit royalties. It’s widely used on both main system CPUs and is also integrated as a key component in many of Imagination’s IP platforms.

Codescape Debugger view of a multi-tasking MEOS system

MEOS Target Tree


Performance analysis of multi-tasking MEOS


Pre-emptive scheduler

MEOS tasks are controlled via a pre-emptive scheduler that uses a flexible priority system to determine which task to execute. Task switching occurs in response to interrupts and software signals generated by peripheral hardware, timers or by the software itself. Additional scheduler events can be generated using the optional time-slicing feature and a built-in profiling system allows the real-time performance of the system to be easily monitored and tuned during development.

Multi-thread and multi-core support

MEOS can be used simultaneously on several hardware threads or cores with all of the code and most of the data being efficiently shared. Each hardware thread has a separate MEOS scheduler, and its own set of MEOS tasks, but OS primitives such as semaphores and data objects can be used across threads. There is also an inter-thread communication mechanism that enables messages to be sent between these different instances of MEOS, or even between MEOS and totally different operating systems such as LinuxTM.

Efficient memory management

MEOS operates in a simple flat memory space as it is intended for continuously operating real-time systems where heap management functions like malloc are unsuitable. MEOS enables designers to create memory pools of fixed size objects that can be allocated, passed through a chain of tasks locally or across hardware threads and cores, and on completion, automatically returned to their originating pool. This economical but fast approach to memory handling enables MEOS to be used in data-intensive systems that run entirely in the heavily constrained on-chip memory of modern SoCs.

Easy system integration

Designed for easy system integration, MEOS has a very small static memory footprint, with almost all data structures being passed via the API. This gives system integrators maximum flexibility in locating key data structures in memory.

MEOS is written almost entirely in C and the code is arranged in an object library so that only features that are used are linked in to the final system. As source code is supplied, system designers can also configure the library to their exact needs and code configuration.

Industry standard middleware packages have been integrated into the configuration system, allowing networking, file system, compression, etc. to be selected from a menu. Give MEOS a Devicetree file for your platform, and it can make a Board Support Package in minutes.

All low level access to the SoC-specific features is performed through a thin abstraction layer to ensure that MEOS can be quickly ported to new platforms.

Comprehensive timer facilities

MEOS provides a variety of timer options such as regularly executed functions, functions executed after a delay, and flexible timeouts for potentially blocking API calls.

DSP and FPU support

Both the Meta and MIPS processors have extensive and powerful DSP and floating-point features that MEOS tasks are able to fully utilize. The extended DSP and FPU contexts can be automatically saved and restored on a task switch or, if necessary, tasks can obtain exclusive DSP/FPU access to optimise performance.

Device I/O driver model

MEOS provides a simple and powerful I/O driver model for controlling peripheral devices. Drivers for new devices are easy to write, yet the model enables advanced techniques such as the delivery of data to another task upon completion and fine-grained device power management.


Basic RTOS functions:
Named task creation and removal, pre-emptive scheduler, critical sections, flags, lists, mailboxes, mutexes, semaphores, and timers.

Advanced RTOS functions:
OS objects such as semaphores, mailboxes and pools can be shared between MEOS instances using a transparent and efficient import/export mechanism.

Memory pool objects can be passed between instances of MEOS via mailboxes and returned automatically when no longer needed. OS functions for handling trees, queues and double-linked queue. DSP and FPU context switching support.