Giter VIP home page Giter VIP logo

quokka-rtos's Introduction

Quokka

Quokka is a lightweight Real-Time Operating System (RTOS) designed for embedded devices. It provides a minimalistic foundation for building responsive applications on resource-constrained devices.

The operating system is currently a work in progress and is presently being developed and tested on the RP2040 microcontroller.

Features

  • Lightweight: Minimal footprint and resource-efficient design.
  • Real-Time Task Scheduling: Prioritize critical tasks for optimal responsiveness.
  • Configurability: Easily adaptable to different embedded platforms.

Roadmap

Quokka RTOS is in a infantile state; currently, the OS has been developed and tested exclusively on the RP2040. The ultimate goal of Quokka RTOS is to become hardware-agnostic, and in the upcoming phases, I plan to broaden its compatibility by conducting testing on additional microcontrollers. including the STM32F446RE and TM4C123GH6PM.

At its current state, the folder structure and CMake files are configured specifically for the RP2040. However, I recognize the importance of adaptability and are actively working on reshaping the build system. Our aim is to make it versatile, allowing compilation for various MCUs, and ensuring easy portability to new boards.

  • Task Management:
    • Implement basic task creation, scheduling, and context switching
    • Cooperative and preemptive scheduling Periodic and switch interrupts, and spin-lock semaphores
    • Establish a minimalistic task management system.
  • Interrupt Handling:
    • Develop interrupt handling mechanisms for the RP2040.
    • Implement interrupt service routines (ISRs) and integrate them with the task scheduler. Hardware Abstraction Layer (HAL):
    • Implement a Hardware Abstraction Layer to facilitate easier portability across different microcontrollers.
    • Define a standard interface for hardware-dependent functions.
  • Board Support Package (BSP):
    • Develop a Board Support Package specifically for the RP2040.
    • Implement basic hardware abstraction for tasks such as GPIO, timers, and interrupts. Building upon the pico-sdk. The HAL will call the BSP functions
  • Refactor the project structure and build system to allow for compiling for different MCU's. For testing and validation the following microcontrollers will be tested:
    • STM32F446RE Integration:
      • Expand the RTOS to support the STM32F446RE microcontroller.
      • Modify or create a BSP for STM32F446RE.
    • TM4C123GH6PM Integration:
      • Extend compatibility to the TM4C123GH6PM microcontroller.
      • Adapt or create a BSP for TM4C123GH6PM.

When a very rudimetnary kernel is completed, then more features will be implemented.

Getting Started

Prerequisites

Before getting started, make sure you have the following installed:

  • CMake
  • gcc-arm-none-eabi
  • libnewlib-arm-none-eabi
  • build-essential

Native gcc and g++ are needed to compile pioasm and elf2uf2 as part of the pico SDK. Ubuntu and Debian users might additionally need to also install libstdc++-arm-none-eabi-newlib.

Installation

Pull the latest version of the operating system from GitHub.

git clone https://github.com/AeybelV/Quokka-RTOS.git
cd quokka-rtos

To compile this project firstly initialize and update the submodules. This will initialize the pico-sdk.

git submodule update --init     # Initializes and updates submodules

To setup build system

mkdir build                     # Makes a output directory for compiled binaries
cd build
cmake ..                        # Writes CMake files.

To compile

make quokka_kernel              # Compiles the Quokka Kernel

You will now have compiled binaries that can be flashed to the board in build/kernel/. Simply copy the uf2 file to the board and it will be flashed.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for details on how to contribute to this project.

License

This project is licensed under the MIT License.

quokka-rtos's People

Contributors

aeybelv avatar

Stargazers

Daryl Kim avatar Zayam Tariq avatar  avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.