Micro-Controller Operating Systems (MicroC/OS, stylized as μC/OS) is a
real-time operating system (RTOS) designed by Jean J. Labrosse in 1991. It is a priority-based
preemptive real-time kernel for
microprocessors, written mostly in the programming language
C. It is intended for use in
embedded systems.
MicroC/OS allows defining several functions in C, each of which can execute as an independent thread or task. Each task runs at a different priority, and runs as if it owns the
central processing unit (CPU). Lower priority tasks can be preempted by higher priority tasks at any time. Higher priority tasks use operating system (OS) services (such as a delay or event) to allow lower priority tasks to execute. OS services are provided for managing tasks and memory, communicating between tasks, and timing.
History
The MicroC/OS kernel was published originally in a three-part article in Embedded Systems Programming magazine and the book ''μC/OS The Real-Time Kernel'' by Labrosse. He intended at first to simply describe the internals of a
portable OS he had developed for his own use, but later developed it as a commercial product in versions II and III.
μC/OS-II
Based on the source code written for μC/OS, and introduced as a commercial product in 1998, μC/OS-II is a
portable, ROM-able,
scalable
Scalability is the property of a system to handle a growing amount of work by adding resources to the system.
In an economic context, a scalable business model implies that a company can increase sales given increased resources. For example, a ...
, preemptive, real-time, deterministic, multitasking
kernel for
microprocessors, and
digital signal processor
A digital signal processor (DSP) is a specialized microprocessor chip, with its architecture optimized for the operational needs of digital signal processing. DSPs are fabricated on MOS integrated circuit chips. They are widely used in audio si ...
s (DSPs). It manages up to 64 tasks. Its size can be scaled (between 5 and 24 Kbytes) to only contain the features needed for a given use.
Most of μC/OS-II is written in highly portable
ANSI C, with target microprocessor-specific code written in
assembly language
In computer programming, assembly language (or assembler language, or symbolic machine code), often referred to simply as Assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence be ...
. Use of the latter is minimized to ease
porting to other processors.
Uses in embedded systems
μC/OS-II was designed for embedded uses. If the producer has the proper tool chain (i.e., C compiler, assembler, and linker-locator), μC/OS-II can be embedded as part of a product.
μC/OS-II is used in many embedded systems, including:
*
Avionics
*
Medical equipment
A medical device is any device intended to be used for medical purposes. Significant potential for hazards are inherent when using a device for medical purposes and thus medical devices must be proved safe and effective with reasonable assura ...
and devices
*
Data communications equipment
* White goods (
appliances)
*
Mobile phones,
personal digital assistants (PDAs), MIDs
* Industrial controls
*
Consumer electronics
*
Automotive
Task states
μC/OS-II is a
multitasking operating system. Each task is an infinite loop and can be in any one of the following five states (see figure below additionally)
*Dormant
*Ready
*Running
*Waiting (for an event)
*Interrupted (
interrupt service routine (ISR))
Further, it can manage up to 64 tasks. However, it is recommended that eight of these tasks be reserved for μC/OS-II, leaving an application up to 56 tasks.
Kernels
The
kernel is the name given to the program that does most of the housekeeping tasks for the operating system. The boot loader hands control over to the kernel, which initializes the various devices to a known state and makes the computer ready for general operations. The kernel is responsible for managing tasks (i.e., for managing the CPU's time) and communicating between tasks. The fundamental service provided by the kernel is
context switch
In computing, a context switch is the process of storing the state of a process or thread, so that it can be restored and resume execution at a later point, and then restoring a different, previously saved, state. This allows multiple processes ...
ing.
The
scheduler
A schedule or a timetable, as a basic time-management tool, consists of a list of times at which possible task (project management), tasks, events, or actions are intended to take place, or of a sequence of events in the chronological order ...
is the part of the kernel responsible for determining which task runs next.
Most real-time kernels are priority based. In a priority-based kernel, control of the CPU is always given to the highest priority task ready to run. Two types of priority-based kernels exist:
non-preemptive and
preemptive. Nonpreemptive kernels require that each task do something to explicitly give up control of the CPU.
A preemptive kernel is used when system responsiveness is more important. Thus, μC/OS-II and most commercial real-time kernels are preemptive. The highest priority task ready to run is always given control of the CPU.
Assigning tasks
Tasks with the highest rate of execution are given the highest priority using
rate-monotonic scheduling. This scheduling algorithm is used in real-time operating systems (RTOS) with a
static-priority scheduling class.
Managing tasks
In
computing, a task is a unit of
execution. In some
operating systems
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
Time-sharing operating systems schedule tasks for efficient use of the system and may also inc ...
, a task is synonymous with a
process, in others with a
thread
Thread may refer to:
Objects
* Thread (yarn), a kind of thin yarn used for sewing
** Thread (unit of measurement), a cotton yarn measure
* Screw thread, a helical ridge on a cylindrical fastener
Arts and entertainment
* ''Thread'' (film), 2016 ...
. In
batch processing computer systems, a task is a unit of execution within a
job
Work or labor (or labour in British English) is intentional activity people perform to support the needs and wants of themselves, others, or a wider community. In the context of economics, work can be viewed as the human activity that contr ...
.
The system user of μC/OS-II is able to control the tasks by using the following features:
*Task feature
*Task creation
*Task stack & stack checking
*Task deletion
*Change a task's priority
*Suspend and resume a task
*Get information about a task
Managing memory
To avoid
fragmentation
Fragmentation or fragmented may refer to:
Computers
* Fragmentation (computing), a phenomenon of computer storage
* File system fragmentation, the tendency of a file system to lay out the contents of files non-continuously
* Fragmented distributi ...
, μC/OS-II allows applications to obtain fixed-sized memory blocks from a
partition
Partition may refer to:
Computing Hardware
* Disk partitioning, the division of a hard disk drive
* Memory partition, a subdivision of a computer's memory, usually for use by a single job
Software
* Partition (database), the division of a ...
made of a contiguous memory area. All memory blocks are the same size, and the partition contains an
integral number of blocks. Allocation and deallocation of these memory blocks is done in constant time and is a
deterministic system
In mathematics, computer science and physics, a deterministic system is a system in which no randomness is involved in the development of future states of the system. A deterministic model will thus always produce the same output from a given star ...
.
Managing time
μC/OS-II requires that a periodic time source be provided to keep track of time delays and timeouts. A tick should occur between 10 and 1000 times per second, or
Hertz. The faster the tick rate, the more
overhead μC/OS-II imposes on the system. The frequency of the clock tick depends on the desired tick resolution of an application. Tick sources can be obtained by dedicating a hardware timer, or by generating an
interrupt from an
alternating current (AC) power line (50 or 60 Hz) signal. This periodic time source is termed a clock tick.
After a ''clock tick'' is determined, tasks can be:
*Delaying a task
*Resume a delayed task
Communicating between tasks
Intertask or interprocess communication in μC/OS-II occurs via:
semaphores, message mailbox, message queues, tasks, and
interrupt service routines (ISRs). They can interact with each other when a task or an ISR signals a task through a kernel object called an event control block (ECB). The signal is considered to be an event.
μC/OS-III
μC/OS-III is the acronym for Micro-Controller Operating Systems Version 3, introduced in 2009 and adding functionality to the μC/OS-II RTOS.
μC/OS-III offers all of the features and functions of μC/OS-II. The biggest difference is the number of supported tasks. μC/OS-II allows only 1 task at each of 255 priority levels, for a maximum of 255 tasks. μC/OS-III allows any number of application tasks, priority levels, and tasks per level, limited only by processor access to memory.
μC/OS-II and μC/OS-III are currently maintained by Micrium, Inc., a subsidiary of Silicon Labs, and can be licensed per product or per product line.
Uses in embedded systems
The uses are the same as for μC/OS-II
Task states
μC/OS-III is a
multitasking operating system. Each task is an infinite loop and can be in any one of five states (dormant, ready, running, interrupted, or pending). Task priorities can range from 0 (highest priority) to a maximum of 255 (lowest possible priority).
Round robin scheduling
When two or more tasks have the same priority, the kernel allows one task to run for a predetermined amount of time, named a ''quantum'', and then selects another task. This process is termed
round robin scheduling or time slicing. The kernel gives control to the next task in line if:
*The current task has no work to do during its time slice, or
*The current task completes before the end of its time slice, or
*The time slice ends.
Kernels
The kernel functionality for μC/OS-III is the same as for μC/OS-II.
Managing tasks
Task management also functions the same as for μC/OS-II. However, μC/OS-III supports multitasking and allows an application to have any number of tasks. The maximum number of tasks is limited by only the amount of computer memory (both code and data space) available to the processor.
A task can be implemented viarunning to scheduled completion, in which the task deletes itself when it is finished, or more typically as an infinite loop, waiting for events to occur and processing those events.
Managing memory
Memory management is performed in the same way as in μC/OS-II.
Managing time
μC/OS-III offers the same time managing features as μC/OS-II. It also provides services to applications so that tasks can suspend their execution for user-defined time delays. Delays are specified by a number of either clock ticks, or hours, minutes, seconds, and
millisecond
A millisecond (from '' milli-'' and second; symbol: ms) is a unit of time in the International System of Units (SI) equal to one thousandth (0.001 or 10−3 or 1/1000) of a second and to 1000 microseconds.
A unit of 10 milliseconds may be called ...
s.
Communicating between tasks
Sometimes, a task or ISR must communicate information to another task, because it is ''unsafe'' for two tasks to access the same specific data or hardware resource at once. This can be resolved via an information transfer, termed inter-task communication. Information can be communicated between tasks in two ways: through global data, or by sending messages.
When using global variables, each task or ISR must ensure that it has exclusive access to variables. If an ISR is involved, the only way to ensure exclusive access to common variables is to disable
interrupts. If two tasks share data, each can gain exclusive access to variables by either disabling interrupts, locking the scheduler, using a
semaphore
Semaphore (; ) is the use of an apparatus to create a visual signal transmitted over distance. A semaphore can be performed with devices including: fire, lights, flags, sunlight, and moving arms. Semaphores can be used for telegraphy when arra ...
, or preferably, using a
mutual exclusion semaphore. Messages can be sent to either an intermediate object called a
message queue, or directly to a task, since in μC/OS-III, each task has its own built-in message queue. Use an external message queue if multiple tasks are to wait for messages. Send a message directly to a task if only one task will process the data received. While a task waits for a message to arrive, it uses no CPU time.
Ports
A port involves three aspects: CPU, OS, and board specific (BSP) code. μC/OS-II and μC/OS-III have ports for most popular processors and boards in the market and are suitable for use in
safety critical
A safety-critical system (SCS) or life-critical system is a system whose failure or malfunction may result in one (or more) of the following outcomes:
* death or serious injury to people
* loss or severe damage to equipment/property
* environme ...
embedded systems such as aviation, medical systems, and nuclear installations. A μC/OS-III port involves writing or changing the contents of three kernel specific files:
OS_CPU.H
,
OS_CPU_A.ASM
, and
OS_CPU_C.C
. Finally create or change a board support package (BSP) for the evaluation board or target board being used. A μC/OS-III port is similar to a μC/OS-II port. There are significantly more ports than listed here, and ports are subject to continuous development. Both μC/OS-II and μC/OS-III are supported by popular
SSL/TLS
Transport Layer Security (TLS) is a cryptographic protocol designed to provide communications security over a computer network. The protocol is widely used in applications such as email, instant messaging, and voice over IP, but its use in securi ...
libraries such as
wolfSSL, which ensure security across all connections.
Licensing change
After acquisition by Silicon Labs, Micrium in 2020 changed to
open-source model licensing in February 2020. This includes uC/OS III, all prior versions, all components: USB,
file system
In computing, file system or filesystem (often abbreviated to fs) is a method and data structure that the operating system uses to control how data is stored and retrieved. Without a file system, data placed in a storage medium would be one larg ...
, GUI, TCP/IP, etc.
Documentation and support
Support is available via a typical support forum, and several comprehensive books, several tailored to a given microcontroller architecture and development platform, as free PDFs, or as low-cost purchase in hard-cover. Paid support is available from Micrium and other parties.
References
Sources
Protocol Support for μC/OS-II from Fusion Embedded*Micrium-uCOS-III-UsersManual 1st Edition
uC/OS-III: The Real-Time Kernel for the Renesas RX62N
External links
*
*
*
ttp://people.ece.cornell.edu/land/courses/ece5760/NiosII_muCOS/ NiosII GCC with MicroC/OSbr>
μC/OS-II Reference ManualHow to Get a μC/OS-II Application Running
{{DEFAULTSORT:Microc Os-II
Real-time operating systems
Embedded operating systems
ARM operating systems
Microkernel-based operating systems
Microkernels