CrossWorks Tasking Library
CTL is a real-time operating system designed for deployment in embedded systems that require a solid foundation to support their application infrastructure.
Delivered working and ready to go!
CTL is delivered in the box with each copy of CrossWorks. You don't pay extra for CTL because we believe an RTOS is an integral part of every non-trivial embedded application. Yes, there are systems where size or cost constraints mean you need a super-loop with most "processing" inside interrupts, and CrossWorks supports that. But today, embedded applications are becoming highly complex, with many requirements such as GUI and network connectivity, and delivering that without an RTOS is challenging!
What's more, each and every board support package we provide comes with CTL already ported, with the CTL test suite as a project to load.
Optimized for RAM and ROM...
CTL is optimized for minimal RAM and ROM, and maximum efficiency, from the ground up:
- CTL is delivered as a library and only the features that you use are linked into your application, keeping ROM requirements to a minimum.
- CTL encourages static allocation of CTL objects (semaphores, queues, mutexes, tasks, event sets and so on) so you know your memory footprint in advance and can place these objects in the most appropriate RAM region. Of course, you can allocate any object, including tasks, dynamically if you wish. And you can mix static and dynamic allocation of CTL objects.
CTL does not use a ‘heap’ to allocate and free RTOS objects, so doesn't suffer fragmentation or non-determinism on object allocation and destruction.
...With the source code
The choice of RTOS for your project is critical and no two applications are ever the same. We understand this, and we recognize that you may well wish to tailor the RTOS to your specific application requirements. To help you down this road, we deliver the unabridged CTL source code in CrossWorks. You can include the CTL source code in your application and debug through the RTOS and see how it works, with complete visibility into the operation of your combined system. Why work blind when you can peek behind the scenes?
We know that customers appreciate delivery of CTL in source form and the flexibility this provides. And, of course, we know that many customers have extended CTL and tailored it to their application.
CrossStudio integration
The real-time aspect of your system is managed by CTL, and that is only part of the jigsaw. To help you view the state of the tasks in your system, CrossStudio has a Threads Window.
This isn't fixed in function: it is completely programmable using CrossStudio's built-in JavaScript interpreter, enabling you to tailor what information is presented and the way that information is presented. We deliver a threads script for CTL that you can customize, giving you complete control over the target system when the script runs, and access to the debugger's view of your application, its variables and types, to customize as you see fit.
Prioritized interrupts
The design of CTL divides interrupts into CTL "tasking" interrupts that may request CTL services, and non-CTL "high priority" interrupts that deal with real-time deadlines that do not require CTL services. High-priority interrupts can nest within CTL interrupts and other high-priority interrupts, so you know that critical code executes on time.
It's not locked to CrossWorks!
CTL is written in plain old C with a small kernel in assembly language that handles task setup and context switching. And CTL is transportable: customers have moved CTL to other compilers and architectures. We offer CTL preconfigured for Cortex-A, Cortex-R, Cortex-A, ARM7, ARM9, and ARM11 architectures as well as AVR and MSP430. If you need to use CTL on something else, contact us to explore the options!