Computer Solutions Ltd
Whats New | Advanced Search
Downloads | Exchange Rates

Celebrating 38 years
supplying all your CAN and Embedded Development Tool needs


Powerful CMX Functions:

Create a task Get a resource
Remove a task Reserve a resource, with time-out
Start a task Release a resource
Suspend a task, with time-out Get, Wait, Release Semaphores
Wake a suspended task Mutex Semaphores have priority inheritance
Forcefully wake a task
Change a task's priority TIMER MANAGEMENT
Terminate a task early Create a cyclic or single shot timer
Do a co-operative rescheduling Change a cyclic timer events parameters
Disable task scheduling Start a cyclic timer
Enable task scheduling Restart a cyclic timer
  Restart a cyclic timer, with new initial time
EVENT MANAGEMENT period and/or new cyclic time period
Wait on event(s), with time-out Stop a cyclic timer
Wait on event(s), with time-out  
Clear an event Create a fixed block pool
  Request free block from pool
SYSTEM MANAGEMENT Release block back to pool
Initialise CMX Create a circular queue
Enter CMX Reset queue to empty
Enter interrupt Add to top of queue
Exit interrupt Add to bottom of queue
Enter power down mode Remove from top of queue
  Remove from bottom of queue
Get a message UART MANAGEMENT  
Wait for a message, with time-out Initialise UART
Send a message Put UART char, with time-out
Send a message, wait for a reply Put UART string, with time-out
Wake task that sent message Get UART char, with time-out
Wait on Mailbox(s), with time-out Get UART string, with time-out
  Update UART buffer(s)
Handle Power Down

Task Scheduling

Many RTOS's offer only co-operative scheduling, which means that the running task has to call the scheduler to perform a task switch. This takes more work by the programmer who has to decide when the task should cause a task switch but which has the advantage of being fully deterministic. Some RTOS's offer time slicing, where each task gets to run for a period of time and then the next task will run.

A pre-emptive RTOS allows a task of higher priority that is able to run, whether from the beginning of its code or resuming its code from where it was executing last, to pre-empt the lower priority running task. This will cause the scheduler to save the context of the lower priority task (the task that was running) and restore the context of the higher priority task, so that the higher priority task, is now the running task.


The way in which a real time executive handles interrupts is critical to both it's ease of use and to it's efficiency. CMX's interrupt handler is written in assembler for each microprocessor and only disables interrupts.

Executing an interrupt may cause task re-scheduling. CMX's "interrupt pipe" facility allows multiple, nested interrupts which can issue most calls to the executive. This greatly simplifies writing interrupt service routines as they can easily co-operate with the high level tasks.

CMXBug Debugger

The CMX CMXBug™ debugger provides the user with the ability to view and modify different aspects of the CMX multi-tasking operating system environment, while the user's application code is running. CMXBug runs as the highest priority task using one of the target processor UART channels as the input/output device. A windows application is provided that controls CMXBug and displays its results.

The CMXBug task allows the user to select one of many options that view or change the CMX OS environment. When the CMXBug task is running it prohibits other tasks from running and freezes the task and cyclic timers so that the user gets an accurate picture of the "current state" of the system.


CMXBug allows the user to "single step" one or more system TICK, with CMXBug resuming after this "single step". CMXBug allows the user access to most of the tasks features: Cyclic timers, Resources, Mailboxes, Queues, Stacks as well as the system TICK and TIMESLICE scales. For example, the user may view a task's state (ready, waiting on what, the time remaining, etc.), it's priority, it's starting address, the events associated with the task, it's stack pointer and maximum usage. Also the user may start a task, wake a task that was waiting on some entity or stop the task.

CMXBug also provides the user with each task's percentage of RUNNING time and the amount of time, that the processor is "IDLE" with no task running. These provide a very powerful insight as to how the processor time is being spent.

CMXBug is now supplied FREE, with the CMX-RTX package, for most processors/vendors that CMX supports. 


For more Information:

For CMX prices  and CPU availability.
For CMX MicroNet The TCP/IP stack that is optimised to run on 8/16/32 bit embedded micros.
For CMX USB Stacks Embedded Device Stacks or drivers that  support USB for8/16/32 bit micros.
For CMX Options Task Tracker, Single chip and 166 optimised versions.
Summary Back to Real-Time Executives summary page.

Home Shop Products Supported Chips Information Zone Contact Site Map
Computer Solutions Ltd
3 b Claremont Road,   West Byfleet,  Surrey  KT14 6DY
Telephone: +44 (0) 1932 355630    
Email:      Web:
Copyright 2017 Computer Solutions Ltd