ChibiOS/RT
ChibiOS/RT
Jump to navigation
Jump to search
Written in | C, Assembly language |
---|---|
OS family | Real-time operating systems |
Working state | Stable |
Source model | Open source |
Latest release | 18.2.1 / May 1, 2018 (2018-05-01) |
Platforms | Intel 80386, ARM7, ARM9, ARM Cortex-M0, ARM Cortex-M3, ARM Cortex-M4, PPC, e200z, Atmel AVR, TI MSP430, STM8, Freescale Coldfire, Renesas H8S |
Kernel type | Microkernel |
License | GPL3 or proprietary |
Official website | www.chibios.org |
ChibiOS/RT is a compact and fast[1]real-time operating system supporting multiple architectures and released under the GPL3 license. It is developed by Giovanni Di Sirio.
Contents
1 Metrics
2 Features
3 uGFX
4 See also
5 References
6 External links
Metrics[edit]
ChibiOS/RT is designed for embedded applications on 8, 16 and 32 bit microcontrollers; size and execution efficiency are the main project goals.[2] 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 is capable of over 220,000 created/terminated threads per second and is able to perform a context switch in 1.2 microseconds on an STM32 @ 72 MHz. Similar metrics for all the supported platforms are included in the source distribution as test reports.
Features[edit]
The ChibiOS/RT microkernel supports:
- Preemptive multithreading[3]
- 128 priority levels
Round-robin scheduling for threads at the same priority level- Software timers
- Counting semaphores
Mutexes with support for the priority inheritance algorithm- Condition variables
- Synchronous and asynchronous Messages
Event flags and handlers
- Queues
- Synchronous and asynchronous I/O with timeout capability
- Thread-safe memory heap and memory pool allocators.
- Hardware Abstraction Layer with support for ADC, CAN, GPT (general-purpose timer), EXT, I²C, ICU, MAC, MMC/SD, PAL, PWM, RTC, SDC, Serial, SPI, and USB drivers.
- Support for the LwIP and uIP TCP/IP stacks.
- Support for the FatFs file system library.
All system objects, such as threads, semaphores, timers, etc., can be created and deleted at runtime. There is no upper limit except for the available memory.
In order to increase system reliability, the kernel architecture is entirely static, a memory allocator is not required (but is available as an option), and there are no data structures with upper size limits like tables or arrays. The system APIs are designed to not have error conditions such as error codes or exceptions.
The RTOS is designed for applications on embedded devices and includes demo applications for various microcontrollers:
- ST STM32F1xx, STM32F2xx, STM32F3xx, STM32F4xx, STM32L1xx, STM32F0xx
- ST STM8S208x, STM8S105x, STM8L152x
- ST/Freescale SPC56x / MPC56xx
- NXP LPC11xx, LPC11Uxx, LPC13xx
- NXP LPC2148
- Atmel AT91SAM7S, AT91SAM7X
- Atmel Mega AVR
- TI MSP430x1611
- TI TM4C123G and TM4C1294
- Microchip PIC32MX
Contributed ports are also available for the Coldfire and H8S families.[4]
ChibiOS/RT has also been ported to the Raspberry Pi[5] 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[edit]
ChibiOS/RT is fully supported by the GUI toolkit µGFX. µGFX was formerly known as ChibiOS/GFX.
See also[edit]
- Comparison of open-source operating systems
- A detailed explanation of multithreading in ChibiOS/RT
References[edit]
^ RTOS performance data on emb4fun.de Archived 2013-01-11 at Archive.is
^ ChibiOS/RT statistics on ohloh.net
^ A detailed explanation of multithreading in ChibiOS/RT
^ Additional supported architectures on emb4fun.de Archived 2013-01-11 at Archive.is
^ "ChibiOS/RT on the Raspberry Pi"..mw-parser-output cite.citation{font-style:inherit}.mw-parser-output q{quotes:"""""""'""'"}.mw-parser-output code.cs1-code{color:inherit;background:inherit;border:inherit;padding:inherit}.mw-parser-output .cs1-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .cs1-lock-limited a,.mw-parser-output .cs1-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Lock-gray-alt-2.svg/9px-Lock-gray-alt-2.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .cs1-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Lock-red-alt-2.svg/9px-Lock-red-alt-2.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration{color:#555}.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration span{border-bottom:1px dotted;cursor:help}.mw-parser-output .cs1-hidden-error{display:none;font-size:100%}.mw-parser-output .cs1-visible-error{font-size:100%}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration,.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-right{padding-right:0.2em}
External links[edit]
- ChibiOS/RT homepage and documentation
- ChibiOS/RT project page and support
Categories:
- Real-time operating systems
- Embedded operating systems
- Free software operating systems
- ARM operating systems
- Microkernel-based operating systems
- Microkernels
(window.RLQ=window.RLQ||).push(function(){mw.config.set({"wgPageParseReport":{"limitreport":{"cputime":"0.188","walltime":"0.250","ppvisitednodes":{"value":869,"limit":1000000},"ppgeneratednodes":{"value":0,"limit":1500000},"postexpandincludesize":{"value":34315,"limit":2097152},"templateargumentsize":{"value":1208,"limit":2097152},"expansiondepth":{"value":20,"limit":40},"expensivefunctioncount":{"value":1,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":4186,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 182.123 1 -total"," 45.80% 83.419 1 Template:Reflist"," 37.55% 68.388 1 Template:Infobox_OS"," 29.76% 54.199 1 Template:Cite_web"," 26.57% 48.388 1 Template:Infobox"," 13.26% 24.147 1 Template:Start_date_and_age"," 8.70% 15.838 2 Template:Webarchive"," 6.32% 11.514 1 Template:Time_ago"," 6.05% 11.011 1 Template:Portal"," 5.38% 9.803 2 Template:Navbox"]},"scribunto":{"limitreport-timeusage":{"value":"0.073","limit":"10.000"},"limitreport-memusage":{"value":2836700,"limit":52428800}},"cachereport":{"origin":"mw1275","timestamp":"20181028231524","ttl":1900800,"transientcontent":false}}});mw.config.set({"wgBackendResponseTime":90,"wgHostname":"mw1250"});});