ChibiOS/RT is a compact and fast
real-time operating system supporting multiple architectures and released under a mix of the
GNU General Public License version 3 (GPL3) and the
Apache License 2.0 (depending on module). It is developed by Giovanni Di Sirio.
Commercial licenses are available from ''ChibiOS''. Additional products include ChibiOS/HAL, a
hardware abstraction layer compatible with ChibiOS/RT, and ChibiStudio, a free
integrated development environment based on
Eclipse
An eclipse is an astronomical event that occurs when an astronomical object or spacecraft is temporarily obscured, by passing into the shadow of another body or by having another body pass between it and the viewer. This alignment of three ce ...
, the
GNU Compiler Collection, and the OpenOCD Joint Test Action Group (
JTAG
JTAG (named after the Joint Test Action Group which codified it) is an Technical standard, industry standard for verifying designs and testing printed circuit boards after manufacture.
JTAG implements standards for on-chip instrumentation in ele ...
) debugging pod.
Metrics
ChibiOS/RT is designed for embedded applications on
microcontroller
A microcontroller (MCU for ''microcontroller unit'', often also MC, UC, or μC) is a small computer on a single VLSI integrated circuit (IC) chip. A microcontroller contains one or more CPUs (processor cores) along with memory and programmable i ...
s of
8-,
16-, and
32-bit
In computer architecture, 32-bit computing refers to computer systems with a processor, memory, and other major system components that operate on data in 32-bit units. Compared to smaller bit widths, 32-bit computers can perform large calculation ...
s. Size and execution efficiency are the main project goals. As reference, the kernel size can range from a minimum of 1.2 KiB up to a maximum of 5.5 KiB with all the subsystems activated on a STM32
Cortex-M3 processor. The kernel can achieve over 220,000 created/terminated threads per second and can perform a
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 ...
in 1.2 microseconds on an STM32 @ 72 MHz. Similar metrics for all the supported platforms are included in the
source code distribution as test reports.
Features
The ChibiOS/RT
microkernel supports:
*Preemptive
multithreading
*128
priority queue
In computer science, a priority queue is an abstract data-type similar to a regular queue or stack data structure in which each element additionally has a ''priority'' associated with it. In a priority queue, an element with high priority is se ...
levels
*
Round-robin scheduling for threads at the same priority level
*Software
timers
A timer is a specialized type of clock used for measuring specific time intervals.
Timers can be categorized into two main types.
The word "timer" is usually reserved for devices that counts down from a specified time interval, while devices th ...
*Counting
semaphores
*
Mutexes with support for the
priority inheritance algorithm
*
Condition variables
In concurrent programming, a monitor is a synchronization construct that allows threads to have both mutual exclusion and the ability to wait (block) for a certain condition to become false. Monitors also have a mechanism for signaling other th ...
*Synchronous and asynchronous
Messages
A message is a discrete unit of communication intended by the source for consumption by some recipient or group of recipients. A message may be delivered by various means, including courier, telegraphy, carrier pigeon and electronic bus.
A ...
*
Event flags and
handlers
*
Queues
*Synchronous and
asynchronous I/O with
timeout
Time-out, Time Out, or timeout may refer to:
Time
* Time-out (sport), in various sports, a break in play, called by a team
* Television timeout, a break in sporting action so that a commercial break may be taken
* Timeout (computing), an enginee ...
capability
*Thread-safe
memory heap
Memory pools, also called fixed-size blocks allocation, is the use of pools for memory management that allows dynamic memory allocation comparable to malloc or C++'s operator new. As those implementations suffer from fragmentation because of ...
and
memory pool allocators.
*Hardware Abstraction Layer with support for
ADC
ADC may refer to:
Science and medicine
* ADC (gene), a human gene
* AIDS dementia complex, neurological disorder associated with HIV and AIDS
* Allyl diglycol carbonate or CR-39, a polymer
* Antibody-drug conjugate, a type of anticancer treatment ...
,
CAN
Can may refer to:
Containers
* Aluminum can
* Drink can
* Oil can
* Steel and tin cans
* Trash can
* Petrol can
* Metal can (disambiguation)
Music
* Can (band), West Germany, 1968
** ''Can'' (album), 1979
* Can (South Korean band)
Other
* C ...
, GPT (general-purpose timer),
EXT
Ext, ext or EXT may refer to:
* Ext functor, used in the mathematical field of homological algebra
* Ext (JavaScript library), a programming library used to build interactive web applications
* Exeter Airport (IATA airport code), in Devon, England
...
,
I²C,
ICU
ICU commonly refers to:
* Intensive care unit, a special department of a hospital
ICU may also refer to:
Organisations Universities
* Information and Communications University, South Korea
*Istanbul Commerce University, Istanbul, Turkey
* Intern ...
,
MAC,
MMC/SD,
PAL,
PWM,
RTC,
SDC,
Serial,
SPI
SPI may refer to:
Organizations
* Indian Protection Service (''Serviço de Proteção ao Índio''), Brazil
* Shotmed Paper Industries, an Egyptian paper manufacturers
* Simulations Publications, Inc., a former US board game publisher
* Sony P ...
, and
USB drivers.
*Support for the
LwIP
lwIP (lightweight IP) is a widely used open-source TCP/IP stack designed for embedded systems. lwIP was originally developed by Adam Dunkels at the Swedish Institute of Computer Science and is now developed and maintained by a worldwide networ ...
and
uIP TCP/IP stacks.
*Support for the
FatFs
FatFs is a lightweight software library for microcontrollers and embedded systems that implements File Allocation Table, FAT/exFAT file system support. Written on pure ANSI C, FatFs is platform-independent and easy to Porting, port on many hardwa ...
file system library.
All system objects, such as
threads
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 ...
,
semaphores,
timers
A timer is a specialized type of clock used for measuring specific time intervals.
Timers can be categorized into two main types.
The word "timer" is usually reserved for devices that counts down from a specified time interval, while devices th ...
, etc., can be created and deleted at runtime. There is no upper limit except for the available memory. To increase system reliability, the
kernel architecture is entirely static, a memory allocator is not needed (but is available as an option), and there are no
data structure
In computer science, a data structure is a data organization, management, and storage format that is usually chosen for efficient access to data. More precisely, a data structure is a collection of data values, the relationships among them, a ...
s with upper size limits like
tables or
arrays. The system application programming interfaces (
APIs) are designed to not have error conditions such as
error codes or exceptions.
The
RTOS is designed for applications on
embedded systems (devices) and includes demo applications for various
microcontroller
A microcontroller (MCU for ''microcontroller unit'', often also MC, UC, or μC) is a small computer on a single VLSI integrated circuit (IC) chip. A microcontroller contains one or more CPUs (processor cores) along with memory and programmable i ...
s:
*
STMicroelectronics
STMicroelectronics N.V. commonly referred as ST or STMicro is a Dutch multinational corporation and technology company of French-Italian origin headquartered in Plan-les-Ouates near Geneva, Switzerland and listed on the French stock market. ST ...
–
STM32F1xx, STM32F2xx, STM32F3xx, STM32F4xx, STM32L1xx, STM32F0xx;
STM8S208x, STM8S105x, STM8L152x; ST/Freescale
SPC56x, MPC56xx
*
NXP Semiconductors
NXP Semiconductors N.V. (NXP) is a Dutch semiconductor designer and manufacturer with headquarters in Eindhoven, Netherlands. The company employs approximately 31,000 people in more than 30 countries. NXP reported revenue of $11.06 billion in 2 ...
–
LPC11xx, LPC11Uxx, LPC13xx,
LPC2148
*
Atmel
Atmel Corporation was a creator and manufacturer of semiconductors before being subsumed by Microchip Technology in 2016. Atmel was founded in 1984. The company focused on embedded systems built around microcontrollers. Its products included micr ...
–
AT91SAM7S, AT91SAM7X,
megaAVR
AVR is a family of microcontrollers developed since 1996 by Atmel, acquired by Microchip Technology in 2016. These are modified Harvard architecture 8-bit Reduced instruction set computer, RISC single-chip microcontrollers. AVR was one of the f ...
*
Texas Instruments (TI) –
MSP430x1611; TM4C123G, TM4C1294
*
Microchip Technology – PIC32MX
Contributed ports are also available for the
Coldfire
The NXP ColdFire is a microprocessor that derives from the Motorola 68000 family architecture, manufactured for embedded systems development by NXP Semiconductors. It was formerly manufactured by Freescale Semiconductor (formerly the semiconductor ...
and
H8S
H8 is the name of a large family of 8-bit, 16-bit and 32-bit microcontrollers made by Renesas Technology, originating in the early 1990s within Hitachi Semiconductor. An administrator on the Renesas user community boards commented in 2011 that ...
families.
ChibiOS/RT has also been ported to the
Raspberry Pi and the following device drivers have been implemented: Port (GPIO), Serial, GPT (General-Purpose Timer), I2C, SPI and PWM.
It is also possible to run the kernel in a
Win32 process in a software I/O emulation mode, allowing easy application development without the need for physical hardware. An example is included for
MinGW compiler.
uGFX
ChibiOS/RT is fully supported by the
graphical user interface (GUI) toolkit µGFX, formerly named ChibiOS/GFX.
See also
*
Comparison of open-source operating systems
These tables compare free software / open-source operating systems. Where not all of the versions support a feature, the first version which supports it is listed.
General information
Supported architectures
Supported hardware
Gen ...
A detailed explanation of multithreading in ChibiOS/RT
References
External links
*
ChibiOS/RT project page and support
{{DEFAULTSORT:Chibios Rt
Real-time operating systems
Embedded operating systems
Free software operating systems
ARM operating systems
Microkernel-based operating systems
Microkernels