QuarkTS
| 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
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
- 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
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
- ↑ a b c G.C, J. Camilo (10 de octubre de 2024), kmilo17pet/QuarkTS, consultado el 10 de octubre de 2024.
- ↑ a b «QuarkTS OS». kmilo17pet.github.io. Consultado el 11 de octubre de 2024.
- ↑ «QuarkTS++ OS». github.com. Consultado el 11 de octubre de 2024.
- ↑ 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.
- ↑ 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.
- ↑ 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.
- ↑ «Preemptive or Cooperative Multitasking?». www.on-time.com. Consultado el 10 de octubre de 2024.
- ↑ «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.
- ↑ Umme Kulsum. «Difference Between Preemptive And Non-Preemptive Scheduling» (en inglés).
- ↑ «MISRA» (en inglés británico). Consultado el 10 de octubre de 2024.
Enlaces externos
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.