Migrating from uC-OS-II to uC-OS-III

µC/OS-III is a completely new real-time kernel with roots in µC/OS-II. Portions of the µC/OS-II Application Programming Interface (API) function names are the same, but the arguments passed to the functions have, in some places, drastically changed.

This section explains several differences between the two real-time kernels. However, access to µC/OS-II and µC/OS-III source files best highlights the differences.

The table below is a feature-comparison chart for µC/OS-II and µC/OS-III.

µC/OS-II and µC/OS-III feature comparison chart

Feature

µC/OS-IIµC/OS-III
Year of introduction19982009
BookYesYes
Source code availableYesYes
Preemptive MultitaskingYesYes
Maximum number of tasks255Unlimited
Number of tasks at each priority level1Unlimited
Round Robin SchedulingNoYes
SemaphoresYesYes
Mutual Exclusion SemaphoresYesYes (nestable)
Event FlagsYesYes
Message MailboxesYesNo (not needed)
Message QueuesYesYes
Fixed Sized Memory ManagementYesYes
Signal a task without requiring a semaphoreNoYes
Send messages to a task without requiring a message queueNoYes
Software TimersYesYes
Task suspend/resumeYesYes (nestable)
Deadlock preventionYesYes
ScalableYesYes
Code Footprint6K to 26K6K to 24K
Data Footprint1K+1K+
ROMableYesYes
Run-time configurableNoYes
Catch a task that returnsNoYes
Compile-time configurableYesYes
ASCII names for each kernel objectYesYes
Option to post without schedulingNoYes
Pend on multiple objectsYesNo
Task registersYesYes
Built-in performance measurementsLimitedExtensive
User definable hook functionsYesYes
Time stamps on postsNoYes
Built-in Kernel Awareness supportYesYes
Optimizable Scheduler in assembly languageNoYes
Number of services~90~70
MISRA-C:1998YesN/A
MISRA-C:2004NoYes
DO178B Level A and EUROCAE ED-12BYesYes

Medical FDA pre-market notification (510(k)) and pre-market approval (PMA)

and IEC62304

YesYes
SIL3 IEC for transportation and nuclear systemsYesYes
IEC-61508YesYes