The μC/OS-III is Micrium’s newest RTOS, designed to save time on embedded system projects. In addition to the features inherent in μC/OS-II, μC/OS-III also manages an unlimited number of application tasks, and features an interrupt disable time of near zero.
Micrium’s μC/OS-III supports ARM7/9, Cortex-MX, Nios-II, PowerPC, Coldfire, i.MX, Microblaze, RX600, H8, SH, M16C, M32C, Blackfin, and more. Ports are available for download from the Micrium website.
μC/OS-III manages unlimited application tasks, constrained only by a processor’s access to memory. μC/OS-III supports an unlimited number of priority levels. Typically, configuring μC/OS-III for between 32 and 256 different priority levels is adequate for most embedded applications.
μC/OS-III allows for unlimited tasks, semaphores, mutexes, event flags, message queues, timers and memory partitions. The user allocates all kernel objects at run time. μC/OS-III provides features to allow stack growth of tasks to be monitored. While task size is not limited, they need to have a minimum size based on the CPU used.
μC/OS-III allows multiple tasks to run at the same priority level. When equal priority tasks are ready to run, μC/OS-III runs each for a user- specified time. Each task can define its own time quanta and give up its time slice if it does not require the full time quanta.
μC/OS-III has a number of internal data structures and variables that it needs to access atomically. It protects these critical regions by disabling interrupts for almost zero clock cycles, ensuring that it is able to respond to some of the fastest interrupt sources. Interrupt response with μC/OS-III is deterministic.
μC/OS-III ensures that NULL pointers are not passed, task level services from ISRs aren’t called, arguments are within allowable range, and specified options are valid. Each API function provides an error code regarding the outcome of the function call.
μC/OS-III’s footprint can be scaled to only contain the features required for a specific application. The execution time for most services provided by μC/OS-III is both constant and deterministic; execution times do not depend on the number of tasks running in the application.
µC/OS-III is used in a wide variety of industries:
- Data Communications Equipment
- White Goods (Appliances)
- Mobile Phones, PDAs, MIDs
- Industrial Controls
- Consumer Electronics
- A Wide-Range of Embedded Applications
The features of µC/OS-III include:
- Delivered with complete 100% ANSI C source code and in-depth documentation.
- Preemptive Multitasking: Runs the most important task that is ready.
- Unlimited tasks, priorities, kernel objects
- Round-Robin Scheduling
- Near Zero Interrupt Disable Time
- Scalable to contain only required features.
µC/OS-III allows developers to produce multi-threaded applications, vital to the development of safety-critical systems. Thanks to improved integration with IAR Embedded Workbench for ARM, developers can access all the inherent non-reentrant features of C/C++ in a thread-safe manner.
Application developers who write code for use in multi-threaded environments will find the support critical when protecting shared objects using system locks, file-stream locks, and thread-local storage (TLS) in multi-threaded environments.
Micrium and IAR collaborated in providing the first thread-safe support in µC/OS-III for the IAR DLIB run-time library. Protection for such non-reentrant functions as strtok(), rand(), errno() and more are local to each thread. Global and static variables typically used by these functions are protected by the Micrium kernel.
| Who should use this RTOS? ||Developers who want to save time on their current and future embeddedsystem projects, and who require arobust RTOS built on clean,easy-to-implement code. |
| Supported Processors ||See complete list in Processor Chartfor μC/OS-III |
| Maximum ROM Footprint (Unscaled) ||24 Kbytes |
| Minimum ROM Footprint (Scaled) ||6 Kbytes |
| Number of Kernel Services ||10 different using 80 API calls |
| Multitasking Model ||Preemptive |
| Code Execution Entities ||Tasks, ISRs |
| Dynamic Objects ||Static and Dynamic |
| Data Movement ||Message Queues (unlimited) |
| Semaphores - Full Counting ||Yes (unlimited) |
| Mutexes - With Priority Inheritance ||Yes (priority ceiling) |
| Event Flags ||Yes (unlimited), configurablefor 8, 16, or 32 bits |
| Memory Partitions - RAM Management ||Yes (unlimited) |
| Timers ||Yes (unlimited) |
| Number of tasks ||Unlimited |
| Interrupt Disable Time ||Near Zero |