Building

To create Phoenix-RTOS image for a specific target, the phoenix-rtos-project repository should be used. This repository aggregates all operating system modules, including kernel, standard library, device drivers, filesystems, utilities and loader. Read more about phoenix-rtos-project submodule repositories in Reference project chapter.

Host operating system

Currently, the most supported development platform is Linux, particularly Ubuntu 24.04. Windows is also supported but to a limited extent.

Building script

The Phoenix-RTOS reference project supports the following target platforms:

  • aarch64a53-zynqmp-qemu

  • aarch64a53-zynqmp-zcu104

  • aarch64a53-zynqmp-som

  • armv7a7-imx6ull-evk

  • armv7a9-zynq7000-qemu

  • armv7a9-zynq7000-zedboard

  • armv7a9-zynq7000-zturn

  • armv7m4-stm32l4x6-nucleo

  • armv7m7-imxrt105x-evk

  • armv7m7-imxrt106x-evk

  • armv7m7-imxrt117x-evk

  • armv8m33-mcxn94x-frdm

  • host-generic-pc

  • ia32-generic-pc

  • ia32-generic-qemu

  • riscv64-generic-qemu

  • riscv64-generic-spike

  • riscv64-grfpga-artya7

  • riscv64-gr765-vcu118

  • sparcv8leon-generic-qemu

  • sparcv8leon-gr712rc-board

  • sparcv8leon-gr716-mimas

  • sparcv8leon-gr716-mini

  • sparcv8leon-gr740-mini

List of all valid targets can be seen using the build.sh script with TARGET variable not set.

To build Phoenix-RTOS system image build.sh script is used. The simplest way to build the image is the following command.

TARGET=ia32-generic-qemu phoenix-rtos-build/build.sh all

As you can see there can be other arguments like all.

You can also use the clean argument to clean the last build artifacts.

TARGET=ia32-generic-qemu phoenix-rtos-build/build.sh clean all

When you want to compile only the new changes and save time you don’t have to use it.

The all argument specifies that all system components for a given target should be compiled (excluding tests). The available components are listed below:

  • fs - filesystem image,

  • core - Phoenix-RTOS core, i.e. kernel and other necessary components,

  • test - tests,

  • ports - phoenix-rtos-ports applications,

  • project - project specific part (user applications),

  • image - system image to be loaded to the target,

  • host - host system utils.

For example, in ia32-generic-qemu target all means core fs image project ports host.
For the other targets, all can be different components configurations.
The ports component compiling process can take a while. If you need to build the system image quickly, you can use the command above.

TARGET=ia32-generic-qemu phoenix-rtos-build/build.sh core fs image project test

For ia32-generic-qemu target, running the system in a separate window isn’t the only option. There is the possibility to run it in a terminal, in that case, you have to set a few other variables.

TARGET=ia32-generic-qemu CONSOLE=serial ./phoenix-rtos-build/build.sh all

After build completes, the disk image and all files needed to run system will be placed in the _boot directory.

Launching Phoenix-RTOS

To start the created image on target architecture please see Running system on targets.