Phoenix-RTOS DocumentationΒΆ

Phoenix-RTOS is a scalable real-time operating system for IoT. It is based on its own microkernel and can be used either on small devices based on microcontrollers and on advanced computer systems based on multiple processors and equipped with gigabytes of RAM.

The system supports multiple architectures, including ARM Cortex-M, ARM Cortex-A, Intel x86, RISC-V, LEON3/4 (SPARC) and some popular microcontrollers and reference boards. Phoenix-RTOS is constantly under development, but it was implemented in numerous Smart Utility appliances e.g. in smart gas meters, smart energy meters, data concentrators (DCU).

The POSIX application environment can be emulated to enable the execution of regular UN*X applications. The ARINC653 execution environment (APEX) is under development.

Table of Contents

  1. Introduction

  2. Architecture

  3. Project repository

  4. Building

    1. Linux

    2. Windows

  5. Running system on targets

    1. Running system on armv7m4-stm32l4x6-nucleo (ST STM32L4x)

    2. Running system on armv7m7-imxrt105x-evk (NXP i.MX RT105x)

    3. Running system on armv7m7-imxrt106x-evk (NXP i.MX RT106x)

    4. Running system on armv7m7-imxrt117x-evk (NXP i.MX RT117x)

    5. Running system on armv8m33-mcxn94x-frdm (NXP MCX N94x)

    6. Running system on armv7a7-imx6ull-evk (NXP i.MX 6ULL)

    7. Running system on armv7a9-zynq7000 (Xilinx Zynq 7000)

      1. Running system on armv7a9-zynq7000-zedboard

      2. Running system on armv7a9-zynq7000-zturn

      3. Running system on armv7a9-zynq7000-qemu

    8. Running system on armv8r52-mps3an536-qemu

    9. Running system on ia32-generic-qemu

    10. Running system on riscv64-generic-qemu

    11. Running system on riscv64-generic-spike

    12. Running system on riscv64-grfpga-artya7

    13. Running system on riscv64-gr765-vcu118

    14. Running system on sparcv8leon-gr716-mini

    15. Running system on sparcv8leon-gr712rc-board

    16. Running system on sparcv8leon-gr716-mimas

    17. Running system on sparcv8leon-generic-qemu

    18. Running system on sparcv8leon-gr740-mini

  6. Loader

    1. Architecture

    2. Command-line interface

  7. Kernel

    1. HAL

      1. HAL layer for ARMv7 Cortex-M based based targets

      2. HAL layer for ARMv7 Cortex-A based based targets

      3. HAL layer for IA32 based targets

      4. HAL layer for RISC-V 64 based targets

      5. HAL layer for SPARCv8 LEON based targets

    2. Processes and threads

      1. Process and thread overview

      2. Scheduler

      3. Management

      4. Synchronization primitives

      5. Message passing

      6. Namespace

    3. Memory management

      1. Paging technique and Memory Management Unit

      2. Memory mapper

      3. Zone allocator

      4. Fine-grained allocator

      5. Memory objects

      6. Memory management subsystem

      7. Other memory protection mechanisms

    4. System calls

      1. Prototypes and definition

      2. Adding syscall

      3. Debug

      4. Memory management

      5. Processes management

      6. Threads management

      7. Threads synchronization

      8. Inter-process communication

      9. File operations

      10. Socket operations

      11. Interrupts management

      12. Performance monitoring

      13. Time management

      14. Platform management

      15. RISC-V specific

    5. Common routines

  8. Standard library

    1. Functions

    2. POSIX emulation server

  9. Device drivers

    1. Interface

    2. Accessing hardware

    3. Handling interrupts

    4. Libsdio

    5. Simsensors (Simulating sensors)

  10. Filesystems

  11. Network stack

    1. PPPoU driver

  12. USB stack

    1. USB Host stack

    2. Libusb

  13. Utilities

    1. Phoenix Shell (psh)

    2. Phoenix Downloader (psd)

  14. Host utilities

    1. Phoenix disk tool (psdisk)

    2. Phoenix Serial Uploader (psu)

    3. Phoenix Server (phoenixd)

  15. Libraries

    1. Common Gateway Interface library (libcgi)

    2. VirtIO library (libvirtio)

    3. VGA library (libvga)

    4. Graphics library (libgraph)

    5. Universally Unique identifiers library (libuuid)

    6. Cache library (libcache)

    7. Software watchdog library (libswdg)

  16. Ports

  17. Tests and testing process

  18. Coding convention