QuarkTS | ||
---|---|---|
Información general | ||
Tipo de programa | Sistema operativo de tiempo real | |
Desarrollador | Juan Camilo Gómez Cadavid | |
Modelo de desarrollo | Código abierto | |
Lanzamiento inicial | 2006 | |
Licencia | MIT | |
Estado actual | Activo | |
Información técnica | ||
Plataformas admitidas | ARM (ARM7, ARM9, Cortex-M0, -M0+, -M1, -M2, -M3 -M4, -M7, -A, -R4), Atmel AVR, AVR32, HCS12, MicroBlaze, Cortus (APS1, APS3, APS3R, APS5, FPF3, FPS6, FPS8), MSP430, PIC, dSPIC, Renesas H8/S, SuperH, RX, x86, 8052, Coldfire, V850, 78K0R, Fujitsu series MB9 | |
Estándares | MISRA-C 2012/MISRA-C++ 2008/SEI CERT C | |
Motor | Micro-kernel de tiempo real cooperativo | |
Versiones | ||
Última versión estable | 7.3.3 () | |
Enlaces | ||
QuarkTS[1] es un sistema operativo embebido de código abierto multiplataforma para dispositivos de recursos restringidos que usa un planificador multitarea cooperativo[2]. Este es distruibuido bajo la licencia MIT.
QuarkTS está diseñado para microcontroladores con recursos limitados, con un kernel pequeño y simple. Está escrito principalmente en el lenguaje de programación C para facilitar su portabilidad y mantenimiento, aunque también existe una versión escrita en C++11 (QuarkTS++[3]), así como una librería para Arduino. QuarkTS no cuenta con instrucciones específicas a un hardware objetivo, lo que lo hace potencialmente portable a cualquier plataforma y/o compilador de C/C++.[1][2]
El sistema operativo se construye sobre un planificador cuasiestático cooperativo[4][5]en tiempo real basado en una arquitectura activada por tiempo[6] e implementando un esquema Round-Robin especializado que usa una cadena enlazada y una cola de eventos para proporcionar una verdadera planificación con prioridades FIFO (First-In, First-Out). Este enfoque ofrece beneficios significativos sobre la planificación apropiativa, dado que las tareas gestionan su propio ciclo de vida, surgen menos problemas de reentrada y las tareas no son interrumpidas arbitrariamente por otras tareas, sino solo en puntos definidos por el programador[7]. Esto permite a los usuarios construir software embebido multitarea, estable y predecible, orientado a eventos, sin tener que preocuparse por los problemas comunes de los enfoques concurrentes, como lidiar con recursos compartidos, las condiciones de carrera y los bloqueos.[8]
El objetivo de diseño de QuarkTS es proporcionar funcionalidad mediante una implementación pequeña, simple y robusta, lo que lo hace ideal para microcontroladores con recursos limitados. En dichos entornos, un RTOS completamente apropiativo puede ser excesivo, introduciendo una complejidad innecesaria en el desarrollo de firmware[9]. Debido a su tamaño y conjunto de características, QuarkTS está destinado a cerrar la brecha entre los RTOS completos y la programación bare-metal. QuarkTS está dirigido a desarrolladores embebidos que buscan más funcionalidad que la que ofrecen los programadores de tareas básicas, evitando al mismo tiempo el sobrecosto y la complejidad de un RTOS completo, pero proporcionando la robustez y seguridad típicas de sistemas más grandes.
QuarkTS también cumple en su mayoría con el estándar de codificación definido por la Motor Industry Software Reliability Association (MISRA) MISRA-C-2012/MISRA-C++:2008[10] y el SEI CERT C con el fin de proporcionar una base segura, confiable y protegida para aplicaciones embebidas.
QuarkTS no tiene ninguna dependencia directa con el hardware, lo que permite que sea portable entre diferentes plataformas y compiladores de C/C++[1].
Los siguientes chips han sido verificados ejecutando QuarkTS exitosamente: