Specifying Board Configuration
Three files decide what the build targets.
| File | Sets | Read by |
|---|---|---|
settings.ini |
BOARD and BOARD_ROOT |
fprime-util generate (make generate) |
west.yml |
Zephyr version and the modules to download | west update (make zephyr) |
.west/config |
Where the manifest and Zephyr live | west |
To build for another PROVES board, you only change settings.ini.
settings.ini
The board is set in default_cmake_options:
default_cmake_options: FPRIME_ENABLE_FRAMEWORK_UTS=OFF
FPRIME_ENABLE_AUTOCODER_UTS=OFF
BOARD_ROOT=.
BOARD=proves_flight_control_board_v5e/rp2350a/m33
FPRIME_CMAKE_QUIET=ON
FPRIME_INSTALL_STATIC_LIBRARIES=OFF
BOARDis the Zephyr board target, in the form<board>/<soc>/<cpu>. Each board'sidentifierin its.yamlfile gives the exact string. The Board List lists all three.BOARD_ROOT=.tells Zephyr to search theboards/folder at the repo root. That is whereboards/bronco_space/lives.
Switch to another variant
-
Edit the
BOARD=line insettings.ini. Keep its indentation. For v5c: -
Regenerate the build directory.
make generaterunsfprime-util generate --force. You need it becausemake buildonly generates whenbuild-fprime-automatic-zephyris missing. An existing build directory keeps the old board. -
Build.
If you see CMake cache errors after a board change, run make clean, then make generate build.
Warning
make clean runs git clean -dfX. It deletes every gitignored file, not only build output. That includes fprime-venv, the Zephyr workspace under lib/zephyr-workspace/, keys/, *.uf2 files, and AuthDefaultKey.h. The next make generate creates a new random AuthDefaultKey.h. The GDS and the board must then use that new key.
Note
make build-mcuboot does not read settings.ini. It always builds MCUboot for v5e. See the Board List.
Note
CMakePresets.json also sets BOARD, to proves_flight_control_board_v5c/rp2350a/m33. The Makefile does not use it.
west.yml
west.yml is the west manifest. It is trimmed to RP2040 and RP2350 builds so setup downloads less.
It pulls:
- Zephyr
v4.4.2fromhttps://github.com/zephyrproject-rtos/zephyr, intolib/zephyr-workspace/zephyr. - Only these modules from Zephyr's own manifest (
name-allowlist):cmsis,cmsis_6,hal_rpi_pico,picolibc,mbedtls,mcuboot,fatfs,hal_st. - Pinned projects under
lib/zephyr-workspace/: the modules above, plusloramac-nodeandtf-psa-crypto.
The babblesim and optional groups are excluded (group-filter).
hal_rpi_pico is required for RP2350. hal_st is marked as "Required for certain sensors". The repo has no STM32 board definition.
Note
A board on another SoC family needs its HAL module. Add it the way hal_st is added: an entry in name-allowlist, and a project with a path under lib/zephyr-workspace/modules/hal/. Then run make zephyr-workspace to run west update.
.west/config
.west/config is at the repo root, so the repo root is the west workspace.
[manifest]points west atwest.ymlin the repo root.[zephyr] basepoints at the Zephyr checkout thatwest.ymldownloads.
The file is checked in. make zephyr-config only runs west init --local . when the file is missing. You do not need to change it to switch between PROVES boards.