/QuarkTS

An open-source OS for small embedded applications.

Primary LanguageCGNU General Public License v3.0GPL-3.0

Built for Build Status Codacy Badge CodeFactor Language grade: C/C++ Total alerts GitHub release (latest by date) MISRAC2012 CERT C Standard Maintenance License Join the chat at https://gitter.im/embedded-c/QuarkTS-OS

Logo

QuarkTS : An open-source OS for small embedded applications.

QuarkTS is an operating system that provides a modern environment to build stable and predictable event-driven multitasking embedded software. The OS is built on top of a cooperative quasi-static scheduler and its simplified kernel implements a specialized round-robin scheme using a linked-chain approach and an event-queue to provide true FIFO priority-scheduling.

Features:

  • Prioritized cooperative scheduling.
  • Time control (Timed tasks and software timers)
  • Inter-Task communication primitives, queues, notifications and event-flags.
  • State-Machines ( hierarchical support )
  • Co-routines.
  • AT Command Line Interface (CLI)

QuarkTS is developed using a formal and rigorous process framed in compliance of the MISRA C 2012 and CERT coding standard guidelines and complemented with multiple static-analysis checks targered to safe critical applications.

QuarkTS is not intended to replace o compete with the other great and proven RTOS options already available today, for example FreeRTOS or MicroC/OS-II, in fact, you should check these options first. The design goal of QuarkTS is to achieve its stated functionality using a small, simple, and (most importantly) robust safety implementation to make it suitable on resource-constrained microcontrollers, where a full-preemptive RTOS may become an overkill and ends up adding unnecessary complexity to firmware development.

Their modularity and reliability make this OS a great choice to develop efficiently a wide range of applications in low-cost devices, including automotive controls, monitoring and Internet of Things.

Cloning QuarkTS

Make sure to use the recursive flag to fetch the kernel submodule into src/os

git clone https://github.com/kmilo17pet/QuarkTS.git --recursive

QuarkTS as a git submodule :

Creating

git submodule add -b kernel_only https://github.com/kmilo17pet/QuarkTS.git <destination path>

Then, run the initialize command to fetch the code for the first time:

git submodule update --init

Updating

git submodule update --remote

Get a copy of the configuration file (qconfig.h):

curl https://raw.githubusercontent.com/kmilo17pet/QuarkTS/master/src/config/qconfig.h -o <destination path>/qconfig.h