Content deleted Content added
Jerryobject (talk | contribs) Template:Infobox OS updates, adds, fills, move. WP:LINKs: adds, updates, WP:NOPIPEs, WP:Disambiguates. Terms < WP:ABBRs. WP:EoS WP:COPYEDITs. Template:Cite web updates. Template: CamelCase > sentence case, move up. |
m HTTP to HTTPS for Cornell University |
||
(43 intermediate revisions by 34 users not shown) | |||
Line 1:
{{Short description|Real-time operating system}}
{{Infobox OS
| name
| logo
| caption
| developer
| family =
| released = {{Start date and age|1991}}▼
| source model = [[Open-source software|Open-source]] as of 2020
| supported platforms = [[ARM Cortex-M#Cortex-M3|ARM Cortex-M3]], [[ARM Cortex-M#Cortex-M4|Cortex-M4F]], [[ARM7#ARM7TDMI|ARM7TDMI]]; [[Atmel AVR]]▼
| ui = μC/[[Graphical user interface|GUI]] ▼
| family = [[Real-time operating system]]s▼
| latest release version = OS-III
| latest release date
| repo = {{URL|https://github.com/weston-embedded/uC-OS3}}
| marketing target = [[Embedded device]]s▼
|
|
| language
▲| supported platforms
▲| working state = Current
| license = [[Commercial software|Commercial]], [[freeware]] education use▼
| website = {{URL|www.micrium.com/products}}▼
▲| license = [[Apache License|Apache]] as of 2020;
| website = {{URL|https://weston-embedded.com/micrium/overview}}
}}
{{Infobox OS
| name = Micrium OS
| logo =
| caption =
| developer = Silicon Labs
| family =
| working state = Current
| source model = [[Open-source software|Open-source]]
| released = {{Start date and age|2020}}
| latest release version = Part of Gecko Platform 4.2.0.0,<ref>{{cite web|url=https://www.silabs.com/documents/public/release-notes/gecko-platform-release-notes-4.2.0.0.pdf|title=Gecko Platform 4.2.0.0 GA|access-date=2023-01-04|date=2022-12-14}}</ref> part of Gecko SDK 4.2.0.0<ref>{{cite web|url=https://github.com/SiliconLabs/gecko_sdk/releases|title=gecko_sdk Releases on github.com|website=[[GitHub]] |access-date=2023-01-04}}</ref>
| latest release date = {{Start date and age|2022|12|14}}
| repo = {{URL|https://github.com/SiliconLabs/gecko_sdk/tree/gsdk_4.2/platform/micrium_os}}
| programmed in = [[ANSI C]]
| language = English
| supported platforms = exclusively Silicon Labs silicon
| kernel type = [[Real-time operating system|Real-time]] [[microkernel]]
| license = [[Apache License|Apache]]
| website = {{URL|https://www.silabs.com/developers/micrium-os}}
}}
{{Infobox OS
| name = Cesium RTOS
| logo =
| caption =
| developer = Weston Embedded Solutions
| family =
| working state = Current
| source model = [[Commercial software|Commercial]]
| released = {{Start date and age|2020|06|23}} (forked from uC/OS-III V3.08.00)<ref name=cesium_changelog>{{cite web|url=https://weston-embedded.com/cesium-release-notes/cs-os3-release-notes|title=Cs/OS3 Release Notes|publisher= Weston Embedded Solutions}}</ref>
| latest release version = Cs/OS3 3.09.05<ref name=cesium_changelog />
| latest release date = {{Start date and age|2025|04|22}}<ref name=cesium_changelog />
| marketing target = [[Embedded device]]s
| programmed in = [[ANSI C]]
| language = English
| supported platforms = 50+ unclear whether there is a 1-to-1 overlap with μC/OS
| kernel type = [[Real-time operating system|Real-time]] [[microkernel]]
| license = [[Commercial software|Commercial]]
}}
'''Micro-Controller Operating Systems''' ('''MicroC/OS''', stylized as '''
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.<ref>{{cite web |url=
==History==
The MicroC/OS kernel was published originally in a three-part article in Embedded Systems Programming magazine and the book ''
In 2016 Micrium, Inc. was acquired by Silicon Laboratories<ref>{{cite web|url=https://weston-embedded.com/about-micrium|title=What is Micrium?|access-date=2023-01-04|publisher=Weston Embedded Solutions}}</ref> and it was subsequently released as open-source under the [[Apache license]].
Silicon Labs continues to maintain an open-source product named Micrium OS for use on their own silicon<ref>{{cite web|url=https://www.silabs.com/developers/micrium|title=Micrium Software and Documentation|access-date=2023-01-04}}</ref> and a group of former Micrium, Inc. employees (including Labrosse) provides consultancy and support for both μC/OS and Cesium RTOS, a proprietary fork made just after the open-source release.<ref>{{cite web|url=https://weston-embedded.com/why-cesium|title=Why Cesium RTOS?|access-date=2023-01-04|publisher= Weston Embedded Solutions}}</ref>
==
Based on the source code written for
Most of
=== Uses in embedded systems ===
* [[Avionics]]
* [[Medical equipment]] and devices
Line 53 ⟶ 90:
===Task states===
*Dormant
*Ready
Line 59 ⟶ 96:
*Waiting (for an event)
*Interrupted ([[Interrupt handler|interrupt service routine]] (ISR))
Further, it can manage up to
===Kernels===
The [[Kernel (operating system)|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.<ref>[[Wikiversity:Operating Systems/Kernel Models#Monolithic Kernel]]</ref> The kernel is responsible for managing tasks (i.e., for managing the
The [[scheduler]] is the part of the kernel responsible for determining which task runs next.<ref name="LabrosseP40">{{cite book|last=Labrosse|first=Jean J.|title=MicroC/OS-II: The Real Time Kernel|page=40|edition=
===Assigning tasks===
Tasks with the highest rate of execution are given the highest priority using [[rate-monotonic scheduling]].<ref>{{cite journal|last1=Liu|first1=Chung Lang|last2=Layland|first2=James W.|title=Scheduling algorithms for multiprogramming in a hard real-time environment|journal=Journal of the ACM
===Managing tasks===
In [[computing]], a task is a unit of [[execution]]. In some [[operating systems]], a task is synonymous with a [[Process (computing)|process]], in others with a [[Thread (computing)|thread]]. In [[batch processing]] computer systems, a task is a unit of execution within a [[Job stream|job]].
The system user of
*Task feature
*Task creation
*Task stack & stack checking
*Task deletion
*Change a
*Suspend and resume a task
*Get information about a task<ref>{{cite book|last=Labrosse|first=Jean J.|title=MicroC/OS-II: The Real Time Kernel|pages=45–49|edition=
===Managing memory===
To avoid [[Fragmentation (computing)|fragmentation]],
===Managing time===
After a ''clock tick'' is determined, tasks can be:
Line 91 ⟶ 128:
===Communicating between tasks===
Intertask or interprocess communication in
==
===Uses in embedded systems===
The uses are the same as for
===Task states===
===Round robin scheduling===
Line 114 ⟶ 150:
===Kernels===
The kernel functionality for
===Managing tasks===
Task management also functions the same as for
A task can be implemented
===Managing memory===
Memory management is performed in the same way as in
===Managing time===
===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 [[interrupt]]s. If two tasks share data, each can gain exclusive access to variables by either disabling interrupts, locking the scheduler, using a [[Semaphore (programming)|semaphore]], 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
==Ports==
A port involves three aspects: CPU, OS, and board specific (BSP) code.
==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]], GUI, TCP/IP, etc.
==Documentation and support==
Support is available via a typical support forum, and several comprehensive books, of which some are 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 Weston Embedded Solutions.
==References==
Line 139 ⟶ 181:
==Sources==
▲*[http://www.mil-embedded.com/news/db/?13968 Protocol Support for µC/OS-II from Fusion Embedded]
*Micrium-uCOS-III-UsersManual 1st Edition
*[http://micrium.com/download/%C2%B5cos-iii-the-real-time-kernel-for-the-renesas-rx62n/ uC/OS-III: The Real-Time Kernel for the Renesas RX62N]
==External links==
*{{Official website|https://web.archive.org/web/20231206170818/https://www.
*{{GitHub|SiliconLabs}}
*[http://people.ece.cornell.edu/land/courses/ece5760/NiosII_muCOS/uC_Functions.html Summary of Commonly Used uC/OS-II Functions and Data Structures] ▼
*[
▲*[
*[http://
*[http://ftp1.digi.com/support/documentation/0220047_e.pdf How to Get a μC/OS-II Application Running]
{{Real-time operating systems}}
|