|Computer Solutions Ltd
After supplying all your Embedded Development
Tool needs for 42 years
Having reached the grand old age of 75 it is time to relax and fulfil other ambitions.
Its been an exciting ride with you, our customers, often on the
bleeding edge of technology
Stay well I wish you all success in your future projects.
But what to do with the web site ? It has taken >12 man years of work to create a repository of knowledge on many aspects of the art and science of embedded microprocessor development and even after closing the shop it still gets over 4,000 visitors per month. So as a service to my customers I have decide to keep it live providing my technical insights on the products and then redirecting viewers to sites where they can purchase the items they used to buy from us. Follow the link "Home"
The "Information zone" consists of articles produced as background tutorials on subjects of interest to those designing new products. As different CPUs have became available this has lead to new development techniques and in particular to new ways of communicating between nodes.
|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
|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
|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
|Set an event
|Clear an event
|Create a fixed block pool
|Request free block from pool
|Release block back to pool
|Create a circular queue
|Reset queue to empty
|Add to top of queue
|Add to bottom of queue
|Enter power down mode
|Remove from top of queue
|Remove from bottom of queue
|Get a message
|Wait for a message, with time-out
|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)
|POWER DOWN MANAGEMENT
|Initialise UART buffer(s)
|Handle Power Down
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.
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.
|Back to Real-Time Executives summary page.
|Computer Solutions Ltd
87 Briar Road, Shepperton, Middx, TW17 0JB
|Telephone: +44 (0) 77 4342 2526
|Copyright © 2022 Computer Solutions Ltd