Robustness is Key to Certification

Safety-certified products must be stable and bug-free. Micrium has made no significant changes to µC/OS-II since 2008, and our last reported bug was fixed in 2007.

µC/OS-II: Historical Bug Count

Thousands of products use µC/OS-II in avionics, medical devices, and industrial controls.

Micrium’s Comprehensive Coding Standards

Micriµm has very strict coding rules and coding style, and so we have published a comprehensive 200-page coding standards guide. The guide is freely available for download. Some highlights:

Module Prefix and Hierarchy

Every Micrium software module has a standardized naming system for related functions, #define, constants, variables, and so on. Each is prefixed with the module’s name:

This method makes it easier to know which module defines what functionality. It avoids name clashes, and presents a clear hierarchy. Function calls, variables, and constants use a Module-Object-Action naming convention like this:

Comment Headers

Every function has a comprehensive comment block that documents the function, as shown below. Some comment blocks are highly comprehensive and even contain illustrations. RFCs are referenced in µC/TCP-IP as needed.
Comment Headers

Separating Code and Comments

Micrium's standard for code commenting is as follows:

OSTaskStkInit-Listing

Optional Run-Time Argument Checking

Run-time argument checking protects code from user errors. It provides a boundary check on arguments, and returns comprehensive error values. Further, Micrium does not use obscure constructs or magic numbers.
Validate-Arguments

High Performance Designed for Embedded Systems

Micrium's source code is written with resource-limited MCUs in mind. This means that code size and RAM usage are always considered, as smaller code typically means faster code. Argument checking can be disabled at compile time, which streamlines the code.

Micrium source code provides run-time statistics to help you improve your code. This includes interrupt disable time, scheduler lock time, per-task CPU usage, and so on. Run-time statistics can be disabled at compile time to reduce code and data sizes.