Visit phoenix-rtos on GitHub

The simplest way to create the operating system distribution is to download the https://github.com/phoenix-rtos/phoenix-rtos-project, define the target platform and build the final image.

In this section you can find precompiled images for supported platforms to quickly run and test Phoenix-RTOS.

We are currently working on new version (posix_rev) with redesigned POSIX support. After merging changes and testing them on all platforms (exp. end of Jun.) images will be published continuously.

armv7m3-stm32l152xd

This is the distribution for STM32L152 architecture. Below an example of binary image upload to the microcontroller using OpenOCD is presented.

openocd -f /usr/local/share/openocd/scripts/interface/jlink.cfg
  -f /usr/local/share/openocd/scripts/target/stm32l1.cfg
  -c "program phoenix-rtos.bin 0x08000000 verify reset exit"

Binaries

armv7m3-stm32l152xe

This is the distribution for STM32L152 architecture. Below an example of binary image upload to the microcontroller using OpenOCD is presented.

openocd -f /usr/local/share/openocd/scripts/interface/jlink.cfg
  -f /usr/local/share/openocd/scripts/target/stm32l1.cfg
  -c "program phoenix-rtos.bin 0x08000000 verify reset exit"

Binaries

armv7m4-stm32l4x6

This is the distribution for STM32L4 architecture. Below an example of binary image upload to the microcontroller using OpenOCD is presented.

openocd -f /usr/local/share/openocd/scripts/interface/jlink.cfg
  -f /usr/local/share/openocd/scripts/target/stm32l1.cfg
  -c "program phoenix-rtos.bin 0x08000000 verify reset exit"

Binaries

armv7m7-imxrt105x

Binaries

armv7m7-imxrt106x

Binaries

armv7m7-imxrt117x

Binaries

armv7a7-imx6ull

To run Phoenix-RTOS on development kit the SDP compliant loader is required. Kernel is compiled into the image compliant with iMX ROM loader. It can be loaded via USB using imx-usb-loader but preferred method is to use the phoenixd daemon. It loads kernel and initial applications via USB to OCRAM and supports protocol which allows to fetch binaries by dummyfs file server when DRAM is initialized.

Kernel command line is passed through the append parameter. In the command line you can use X to mark file for execution and F to mark files that are to be fetched via USB. The output log can be viewed in a console using the UART1 interface (available after conversion as USB on development board). The following command uploads Phoenix-RTOS kernel and executes uart driver, RAM fs - dummyfs and phoenix shell - psh.

phoenixd --upload --kernel phoenix-arm-imx.img --console phoenix-rtos-devices/imx6ull-uart --initrd phoenix-rtos-filesystems/dummyfs -x libphoenix/psh

Below you will find an example of upload and execution of Phoenix-RTOS with POSIX compatibility and ash shell.

phoenixd --upload --kernel phoenix-arm-imx.img --console phoenix-rtos-devices/imx6ull-uart --initrd phoenix-rtos-filesystems/dummyfs -x phoenix-rtos-posixsrv/posixsrv busybox/busybox=ash

Binaries

ia32-generic

This version is designated for generic PC based on IA32 processor. The image consist of bootloader, kernel, TTY VGA driver, ATA driver with ext2 filesystem support and TCP/IP stack.

The easiest way to run Phoenix-RTOS directly from the image is to download and import image into the VirtualBox.

After importing the image the virtual machine network settings should be changed to allow the use of the TCP/IP networking. Please change connectivity to "Host-only adapter".

To use Host-only adapter the virtual interface should be defined. This can be done using File/Host Network Manager option.

After configuring the host network Phoenix-RTOS can be launched. The IP address is obtained using DHCP protocol. Please check the IP address from command line using 'ifconfig' tool.

You can access Phoenix-RTOS machine using telnet.

riscv64-spike

This port is now under development.

RISC-V is a new open architecture developed at Berkeley becoming the new standard for IoT applications. To compile Phoenix-RTOS for this architecture, tools from http://github.com/riscv/ should be downloaded and compiled.

Two tools are required - Spike, a RISC-V ISA Simulator and bbl (Berkeley Boot Loader) which is the part of RISC-V Proxy Kernel. The bbl loader works in the Machine Mode, prepares the environment for the kernel, switches the processor into the Supervisor Mode and finally passes control to the kernel. The first step before boot is to compile the loader with the proper payload (path to the kernel in ELF format).

cd riscv/riscv-pk/build

CC=/opt/local/bin/riscv64-unknown-elf-gcc RANLIB=/opt/local/bin/riscv64-unknown-elf-ranlib READELF=/opt/local/bin/riscv64-unknown-elf-readelf AR=/opt/local/bin/riscv64-unknown-elf-ar OBJCOPY=/opt/local/bin/riscv64-unknown-elf-objcopy ../configure --prefix=/opt/local --host=riscv64 --with-payload=../../../phoenix-rtos-kernel/phoenix-riscv64.elf

make

The last step of compilation is embedding the kernel into the bbl loader. After compilation the loader with embedded kernel is ready to run in Spike simulator. To run kernel in simulator the following commands shall be used.

cd riscv/riscv-pk/build

spike ./bbl

After each kernel compilation the embedding process should be repeated by remaking the loader.

Kernel can be run in qemu-riscv64 emulator as well. To do it following command should be use:
qemu-system-riscv64 -machine spike_v1.10 -nographic -kernel ./bbl
To run Phoenix-RTOS on VirtIO compatible RISCV platform:
qemu-system-riscv64 -machine virt -nographic -kernel ./bbl

Binaries