Few weeks ago I found a web site — www.coocox.org — that promotes a new and free real-time multi-task OS kernel devoted to ARM Cortex M0 and M3 series together with a set of tools for development. When it comes to software tools I must say that I’ve been using quite a few in my career and I stopped to a few that I feel comfortable with. I’ve been more interested in the RTOS — CoOS — offered by CooCox. Reading the terms and conditions I found that “CooCox CoOS is free and open-source, it is licensed under the Berkeley Software Distribution (BSD) and can be used in commercial applications under this license.” Good enough for the moment.
It is less clear who is behind this enterprise. The so-called “CooCox Business Model” is also foggy — it is apparently based on sponsorship relations that the company owners hope to find partners for. The marketing face of the company seems to be Miss Anny Lee from China that has her own profile on LinkedIn and that has been very active on the social media networks like Tweeter and several forums dedicated to embedded systems. I do not intend to spend time on the debates between Ms Lee and people representing other groups involved in RTOS development. I will try to limit the discussion to technical aspects regarding CoOS RTOS.
I began to dissect the CoOS code initially with the purpose to evaluate and eventually use this RTOS in my development. In the years I created my own real-time frameworks, one being a small footprint RTOS for 8051 microcontroller. I also used few proprietary real-time kernels and the well respected µC/OS (versions 1.xx and 2.xx) in my projects while being hired by various employers.
At a first glance the CoOS kernel looks modern, scalable and reach in services without a complex API. Once used to programming in a RTOS environment, CoOS will quickly feel familiar to almost any embedded developer. The API can be organized in groups of methods (functions) as suggested by the authors in the manual:
- System Management
- Task Management
- Time Management
- Software Timer
- Memory Management
- Mutex Sections
- Semaphores
- Mailboxes
- Message Queues
- Flags
- System Utilities
The manual is organized and helpful but not very well written. It is obvious that the language used in this document lacks precision and accuracy, especially for someone looking for a training material or for a plethora of examples and details. There are examples but sketchy and sometimes confusing but by no means useful for a starter. Here is the table of contents:
- Chapter 1 – CooCox CoOS Overview
- Chapter 2 – Task Management
- Chapter 3 – Time Management
- Chapter 4 – Memory Management
- Chapter 5 – Inter-task Synchronization & Communication
- Chapter 6 – API Reference
The web site looks also clean but, with the risk of repeating, it is sketchy when it comes to content. I would recommend downloading the examples, especially if you can find the target board they were written for. There is also a discussion forum that may become a principal source of additional information and support. Registering as a user is straightforward and painless. The support team seems to be active judging by the response time that in my case has been less than 12 hours after posting. I will continue to place my inquiries regarding CoOS and monitor the response time (not only to questions but also to bug fixing).
In the following days I will continue my investigation and, eventually, get into more juicy (read “technical“) details.