Skip to content

Board Configurations

oveRTOS ships with three reference board definitions. Each board lives under boards/<name>/ and supplies:

  • board.yaml — machine-readable hardware description (clocks, memory, peripherals)
  • A CMakeLists.txt (or equivalent) that selects the correct backend and passes hardware parameters to the build
  • Board-specific source files (clock init, peripheral configuration)

The active board is selected by adding its subdirectory in the parent project's CMakeLists.


STM32F746G-DISCO (stm32f746g-discovery)

The ST STM32F746G-DISCO discovery kit is the primary hardware target and the reference board for FreeRTOS integration.

Hardware summary

Parameter Value
MCU family STM32F7 (Cortex-M7)
MCU STM32F746xx
CPU frequency 216 MHz
Flash 1024 KB
Internal RAM 320 KB + 64 KB DTCM
External SDRAM 8192 KB @ 0xC0000000
Display 480 × 272 px, RGB565
Audio codec WM8994 via I2C @ 0x1A, 44100 Hz, 16-bit stereo
Console UART 115200 baud, TX=PA9 / RX=PB7
SD card SDMMC1
GPIO ports 9 ports, 16 pins each
LEDs 1 (port 8, pin 1, active-high)
Watchdog timeout 5000 ms

Backends available

The board directory contains subdirectories for freertos, nuttx, and zephyr. The FreeRTOS backend is the primary integration target and the one used in the reference examples.

Clock tree

HSE crystal at 25 MHz is used as the PLL source. The PLL output drives SYSCLK at 216 MHz, AHB at 216 MHz (divider 1), APB1 at 54 MHz (divider 4), and APB2 at 108 MHz (divider 2).


QEMU MPS2 AN500 (qemu-mps2-an500)

The MPS2 AN500 model emulates a Cortex-M7 SoC on the QEMU machine. It is the primary emulation target for running oveRTOS without physical hardware.

Hardware summary

Parameter Value
MCU family ARM (emulated)
MCU model CMSDK_CM7
CPU frequency 25 MHz
Flash 4096 KB
RAM 4096 KB
Display 480 × 272 px, RGB565
Console Semihosting or UART (no physical TX/RX pins)
GPIO ports 8 ports, 16 pins each
LEDs None
Watchdog timeout 5000 ms

Backends available

The board directory contains subdirectories for freertos, nuttx, and zephyr.

Running under QEMU

The board directory includes a qemu-run.sh helper that launches the correct QEMU invocation with the MPS2 machine type, memory map, and semihosting for console output. A qemu_board.c file provides the board-specific QEMU peripheral shims.

# After building:
boards/qemu-mps2-an500/qemu-run.sh ./firmware.elf

The cmake/ subdirectory contains toolchain files and CMake helpers for cross-compilation targeting this board.


Host PC (host-pc)

The host-pc board uses the POSIX backend and compiles oveRTOS as a native Linux or macOS process. It is intended for rapid development iteration and unit testing on a desktop machine.

Hardware summary

Parameter Value
MCU family POSIX
Architecture x86_64
Flash / RAM Host OS process memory
Display 480 × 272 px, RGB565 (rendered via SDL2 or framebuffer)
Audio 44100 Hz, 16-bit, 1 channel (512-sample buffers)
Console Standard I/O
GPIO ports 8 virtual ports, 16 pins each
LEDs 8 virtual LEDs (port 0, pins 0–7, active-high)

Backend

The board directory contains a single posix subdirectory. The POSIX backend maps oveRTOS threads to pthread_t, mutexes to pthread_mutex_t, semaphores to POSIX semaphores, and timers to timer_create or equivalent.

Usage

Building for the host-pc board produces a native executable that can be run directly:

cmake -B build -DOVE_BOARD=host-pc
cmake --build build
./build/firmware

This makes it straightforward to run oveRTOS applications in CI pipelines or debuggers without embedded hardware.