Software:QuarkTS

From HandWiki
QuarktTS
Quarkts-logo.png
DeveloperJ.Camilo.Gomez C.
Written inC/C++
OS familyReal-time operating systems
Working stateCurrent
Source modelOpen-source software
Initial release2016
|Final release|Latest release}}7.3.3
Marketing targetEmbedded systems
Available inC/C++
PlatformsARM (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 typeCooperative Real-Time Microkernel
LicenseMIT
Official websitehttps://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:

See also

[edit]

  • Free and open-source software portal

References

External links