# ChibiOS/RT

ChibiOS / RT es un sistema operativo en tiempo real compacto y rápido que admite múltiples arquitecturas y se publica bajo una combinación de licencias GPL3 y Apache 2.0 (según el módulo). Está desarrollado por Giovanni Di Sirio.
Las licencias comerciales están disponibles en ChibiOS . Los productos adicionales incluyen ChibiOS/HAL, una capa de abstracción de hardware compatible con ChibiOS/RT, y ChibiStudio, un entorno de desarrollo libre basado en Eclipse, GNU Compiler Collection y el módulo de depuración OpenOCD JTAG .

## Métrica

ChibiOS/RT está diseñado para aplicaciones integradas en microcontroladores de 8, 16 y 32 bits; el tamaño y la eficiencia de ejecución son los principales objetivos del proyecto. Como referencia, el tamaño del kernel puede variar desde un mínimo de 1.2 KiB hasta un máximo de 5,5 KiB con todos los subsistemas activados en un procesador STM32 Cortex-M3 . El kernel es capaz de superar los 220.000 subprocesos creados/terminados por segundo y puede realizar un cambio de contexto en 1,2 microsegundos en un STM32 a 72 MHz. Se incluyen métricas similares para todas las plataformas compatibles en la distribución de origen como informes de prueba.

## Características

El microkernel ChibiOS/RT admite:
* Multi-hilo preventivo
* 128 niveles de prioridad
* Programación por turnos para subprocesos en el mismo nivel de prioridad
* Temporizadores de software
* Contadores de semáforos
* Mutex con soporte para el algoritmo de herencia prioritaria
* Variables de condición
* Mensajes sincrónicos y asincrónicos
* Indicadores y controladores de eventos
* Colas
* E / S sincrónicas y asincrónicas con capacidad de tiempo de espera
* Hilo de seguridad con pila de memoria y el bloque de memoria asignadores.
* Capa de abstracción de hardware compatible con controladores ADC, CAN, GPT (temporizador de uso general), EXT, I²C, ICU, MAC, MMC / SD, PAL, PWM, RTC, SDC, Serial, SPI y USB .
* Soporte para pilas LwIP y uIP TCP / IP.
* Soporte para la biblioteca del sistema de archivos FatFs.
Todos los objetos del sistema, como hilos, semáforos, temporizadores, etc., se pueden crear y eliminar en tiempo de ejecución. No hay límite superior excepto para la memoria disponible. Para aumentar la fiabilidad del sistema, la arquitectura del kernel es completamente estática, no se requiere un asignador de memoria (pero está disponible como una opción) y no hay estructuras de datos con límites de tamaño superiores como tablas o pilas. Las API del sistema están diseñadas para no tener condiciones de error, como códigos de error o excepciones.
Los RTOS están diseñados para aplicaciones en dispositivos integrados e incluye aplicaciones de demostración para varios microcontroladores :
* 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 y TM4C1294
* Microchip PIC32MX
Los puertos contribuidos también están disponibles para las familias Coldfire y H8S .
ChibiOS/RT también ha sido portado a Raspberry Pi y se han implementado los siguientes controladores de dispositivo: Puerto (GPIO), Serie, GPT (Temporizador de uso general), I2C, SPI y PWM.
Además es posible ejecutar el kernel en un proceso Win32 en un modo de emulación de E/S de software, lo que permite un fácil desarrollo de aplicaciones sin necesidad de hardware físico. Se incluye un ejemplo para el compilador MinGW .

## uGFX

ChibiOS/RT es totalmente compatible con el kit de herramientas GUI µGFX . µGFX se conocía anteriormente como ChibiOS/GFX.