Software:QuarkTS
Developer | J.Camilo.Gomez C. |
---|---|
Written in | C/C++ |
OS family | Real-time operating systems |
Working state | Current |
Source model | Open-source software |
Initial release | 2016 |
|Final release|Latest release}} | 7.3.3 |
Marketing target | Embedded systems |
Available in | C/C++ |
Platforms | ARM (ARM7, ARM9, Cortex-M3, -M4, -M7, -A, -R4), Atmel AVR, AVR32, HCS12, MicroBlaze, Cortus (APS1, APS3, APS3R, APS5, FPF3, FPS6, FPS8), MSP430, PIC, Renesas H8/S, SuperH, RX, x86, 8052, Coldfire, V850, 78K0R, Fujitsu series MB91460, MB96340, Nios II, TMS570, RM4x, Espressif ESP32, RISC-V (e.g. SHAKTI) |
Kernel type | Cooperative Real-Time Microkernel |
License | MIT |
Official website | https://github.com/kmilo17pet/QuarkTS |
QuarkTS is an open-source, cross-platform embedded operating system for resource-constrained devices that uses a cooperative multitasking scheduler[1]. It is distributed under the MIT License.
Implementation
QuarkTS [2]is designed for resource-constrained microcontrollers, featuring a small and simple kernel. It is primarily written in the C programming language for ease of portability and maintenance, though there is also a port written in C++11 (QuarkTS++), as well as a library for Arduino. QuarkTS does not have specific instructions for a target hardware, which makes it potentially portable to any platform and/or C/C++ compiler.[2]
The operating system is built on top of a real-time cooperative quasistatic scheduler[3] based on a Time Triggered Architecture (TTA)[4] implementing a specialized round-robin scheme with linked-chain approach and an event queue to provide true FIFO (First-In, First-Out) priority scheduling. This scheduling approach offers significant benefits over preemptive scheduling. Since tasks manage their own life cycle, fewer re-entrance problems arise. Tasks are not interrupted arbitrarily by other tasks but only at points defined by the programmer[5]. This allows users to build stable and predictable event-driven multitasking embedded software without having to worry about common pitfalls of concurrent approaches, such as resource sharing issues, race conditions, and deadlocks.[6]
The design goal of QuarkTS is to provide functionality using a small, simple, and robust implementation, making it ideal for resource-constrained microcontrollers. In such environments, a fully preemptive RTOS may be overkill[7], introducing unnecessary complexity in firmware development. Due to its size and feature set, QuarkTS is intended to bridge the gap between full-featured RTOSes and bare-metal programming. QuarkTS is tailored for embedded developers seeking more functionality than basic task schedulers offer, while avoiding the overhead and complexity of a full RTOS, yet still providing the robustness and safety typical of larger systems.
Key Features
- Prioritized cooperative scheduling.
- Time control (Timed tasks and software timers)
- Inter-Task communication primitives, queues, notifications and event-flags.
- State-Machines ( hierarchical support )
- Stackless Co-routines.
- AT Command Line Interface (CLI)
QuarkTS also complies with most of the Motor Industry Software Reliability Association (MISRA) MISRA-C-2012/MISRA-C++:2008[8] and the SEI CERT C coding standards in order to provide a safe, reliable, and secure foundation for embedded applications.
Supported Architectures
QuarkTS has no direct hardware dependencies, allowing it to be portable across many platforms and C compilers.
The following cores have successfully proved to run QuarkTS:
- ARM cores(ATMEL, STM32, LPC, Kinetis, Nordic and others)
- 8Bit AVR, 8051, STM8, RL78/Gxx
- HCS12, ColdFire, MSP430
- PIC (PIC24, dsPIC, 32MX, 32MZ)
- Arduino support for all architectures (available from the Library Manager)
See also
[edit]
- Free and open-source software portal
References
- ↑ "OSRTOS - Top Open Source Real-Time Operating Systems (RTOS)". https://www.osrtos.com/.
- ↑ 2.0 2.1 G.C, J. Camilo (2024-10-08), kmilo17pet/QuarkTS, https://github.com/kmilo17pet/QuarkTS, retrieved 2024-10-09
- ↑ Cortés, Luis Alejandro; Eles, Petru; Peng, Zebo (2004-02-16). "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 (USA: IEEE Computer Society): 21176. ISBN 978-0-7695-2085-8. https://dl.acm.org/doi/10.5555/968879.969132.
- ↑ Pont, M. J. (2008-11-01). "Applying time-triggered architectures in reliable embedded systems: challenges and solutions" (in en). e & i Elektrotechnik und Informationstechnik 125 (11): 401–405. doi:10.1007/s00502-008-0587-z. ISSN 1613-7620. https://link.springer.com/article/10.1007/s00502-008-0587-z.
- ↑ "Preemptive or Cooperative Multitasking?". http://www.on-time.com/rtos-32-docs/rtkernel-32/programming-manual/advanced-topics/preemptive-or-cooperative-multitasking.htm.
- ↑ "Understanding The Pros And Cons Of Concurrency" (in en-US). 2024-10-03. https://pwskills.com/blog/pros-and-cons-of-concurrency/.
- ↑ "Unstop - Competitions, Quizzes, Hackathons, Scholarships and Internships for Students and Corporates". https://unstop.com/blog/difference-between-preemptive-and-non-preemptive-scheduling.
- ↑ "MISRA" (in en-GB). https://misra.org.uk/.
External links
Original source: https://en.wikipedia.org/wiki/QuarkTS.
Read more |