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 (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. Building

    1. Toolchain

    2. Building script

    3. Reference project repository

  4. 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 armv7a7-imx6ull-evk (NXP i.MX 6ULL)

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

    7. Running system on ia32-generic-qemu

    8. Running system on riscv64-generic-qemu

    9. Running system on riscv64-generic-spike

    10. Running system on sparcv8leon3-gr716-mini

  5. Loader

    1. Architecture

    2. Command-line interface

  6. 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 LEON3 based targets

    2. Processes and threads

      1. Processes creation

      2. Synchronization primitives

      3. Message passing

      4. Namespace

    3. Memory management

      1. Page allocator

      2. Memory mapper

      3. Zone allocator

      4. Fine-grained allocator

      5. Memory objects

    4. System calls

      1. Debug (1)

      2. Memory management (5)

      3. Processes management (13)

      4. Threads management (7)

      5. Threads synchronization (8)

      6. Inter-process communication (12)

      7. File operations (23)

      8. Socket operations (13)

      9. Interrupts management (1)

      10. Performance monitoring (3)

      11. Time management (2)

      12. Platform management (4)

      13. RISC-V specific (2)

    5. Common routines

  7. Standard library

    1. Functions

    2. POSIX emulation server

  8. Device drivers

    1. Device server interface

    2. Accessing hardware

    3. Handling interrupts

    4. libsdio

    5. Simsensors (Simulating sensors)

  9. Filesystem servers

  10. Network stack

  11. USB stack

    1. USB Host stack

    2. libusb

  12. Utilities

    1. psh

    2. psd

  13. Host utilities

    1. psdisk

    2. psu

    3. phoenixd

  14. Libraries

    1. libcgi

    2. libvirtio

    3. libvga

    4. libgraph

    5. libuuid

    6. libcache

  15. Ports

  16. Tests and testing process

  17. Coding convention