|Computer Solutions Ltd|
Celebrating 40 years
|Home Products Information Zone Contact Site Map Web Shop|
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.
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.