Skip to content
ellectroidPublic

Latest commit

 

History

10 Commits

Folders and files

Repository files navigation

NileRTOS

Embedded RTOS

Real-time operating system. Architecture info:

  • Architecture-agnostic design with stubs for other architectures, e.g. RISC-V
  • The existing example is for ARMv7-M, device used in example is STM32F746 (on a Discovery board)

OS features:

  • Memory protection
  • Cache management
  • Easy system calls
  • IO operations via system calls with a unified IO param structure
  • IO as char devices and block devices
  • IO Blocking, Timeout Blocking, IO Blocking with Timeout
  • Task-reservable or shared IO devices
  • Optional lazy FPU stacking
  • TLSF kernel memory allocator (O(1) insertion, O(1) deletion)
  • Superflexible scheduler (round-robin, fair, unfair, any combination)
  • Pipes for inter-process communication (as char devices)
  • Tickless idle naturally supported by architecture

Existing example on STM32F746 Discovery board includes:

  • UART1 as char device
  • Pipe0 as char device
  • QSPI Flash in QSPI DDR XIP (no instruction phase) memory-mapped mode for reading, indirect write for erase/write
  • Task without FPU, task with lazy stacking FPU

TODO:

  • Replace scheduler's task linked lists with minheap structures

TODO MCU-specific:

  • Finish GPIO as char device, with IO system call as digital writes and reads and IOCTL system call for GPIO function config