Encyclosphere.org ENCYCLOREADER
  supported by EncyclosphereKSF

QuarkTS

From Wikipedia (Es) - Reading time: 4 min

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.

Implementación

[editar]

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.

Características claves

[editar]
  • Planificación cooperativa con prioridades
  • Control temporizado ( Tareas temporizadas y temporizadores por software)
  • Primitivas de comunicación entre tareas: Colas, notificaciones y Event-flags.
  • Máquinas de estado ( incluye soporte jerárquico )
  • Co-routines sin stack.
  • Interfaz de línea de comandos AT (CLI)

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.

Arquitecturas soportadas

[editar]

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:

  • ARM cores(ATMEL, STM32, LPC, Kinetis, Nordic and others)
  • 8Bit AVR, 8051, STM8, RL78/Gxx
  • HCS12, ColdFire, MSP430
  • PIC (PIC24, dsPIC, 32MX, 32MZ)
  • Arduino : soporta todas las arquitecturas (disponible desde el Gestor de Librerías)

Referencias

[editar]
  1. a b c G.C, J. Camilo (10 de octubre de 2024), kmilo17pet/QuarkTS, consultado el 10 de octubre de 2024 .
  2. a b «QuarkTS OS». kmilo17pet.github.io. Consultado el 11 de octubre de 2024. 
  3. «QuarkTS++ OS». github.com. Consultado el 11 de octubre de 2024. 
  4. Cortadella, Jordi; Kondratyev, Alex; Lavagno, Luciano; Passerone, Claudio; Watanabe, Yosinori (2002). «Quasi-Static Scheduling of Independent Tasks for Reactive Systems». En Esparza, Javier, ed. Application and Theory of Petri Nets 2002 (en inglés) (Springer): 80-100. ISBN 978-3-540-48068-6. doi:10.1007/3-540-48068-4_7. Consultado el 11 de octubre de 2024. 
  5. Cortés, Luis Alejandro; Eles, Petru; Peng, Zebo (16 de febrero de 2004). «Quasi-Static Scheduling for Real-Time Systems with Hard and Soft Tasks». Proceedings of the conference on Design, automation and test in Europe - Volume 2. DATE '04 (IEEE Computer Society): 21176. ISBN 978-0-7695-2085-8. doi:10.5555/968879.969132. Consultado el 11 de octubre de 2024. 
  6. Pont, M. J. (1 de noviembre de 2008). «Applying time-triggered architectures in reliable embedded systems: challenges and solutions». e & i Elektrotechnik und Informationstechnik (en inglés) 125 (11): 401-405. ISSN 1613-7620. doi:10.1007/s00502-008-0587-z. Consultado el 10 de octubre de 2024. 
  7. «Preemptive or Cooperative Multitasking?». www.on-time.com. Consultado el 10 de octubre de 2024. 
  8. «Understanding The Pros And Cons Of Concurrency». pwskills.com (en inglés estadounidense). 3 de octubre de 2024. Consultado el 10 de octubre de 2024. 
  9. Umme Kulsum. «Difference Between Preemptive And Non-Preemptive Scheduling» (en inglés). 
  10. «MISRA» (en inglés británico). Consultado el 10 de octubre de 2024. 

Enlaces externos

[editar]

Licensed under CC BY-SA 3.0 | Source: https://es.wikipedia.org/wiki/QuarkTS
17 views | Status: cached on November 12 2024 23:24:45
↧ Download this article as ZWI file
Encyclosphere.org EncycloReader is supported by the EncyclosphereKSF