nrfx_gppi samples broken

The samples "nrfx_gppi/fork" and "nrfx_gppi/one_to_one" are both broken and fail to compile.  I have confirmed this for NCS 2.8.0 and 2.9.1 on Linux, and 2.8.0 on Windows.

How to reproduce:

  • VSCode->nRF Connect->Browse Samples
  • choose 2.9.1, then "nrfx_gppi/fork"
  • add a build configuration, and then build it.  I chose nRF52833DK:
  • The compile fails:

   **************************
   * Running CMake for fork *
   **************************

CMake Error at CMakeLists.txt:11 (GET_DEVICE_CONFIG_FILES):
  GET_DEVICE_CONFIG_FILES Macro invoked with incorrect arguments for macro
  named: GET_DEVICE_CONFIG_FILES


Loading Zephyr default modules (Zephyr base).
-- Application: /a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork
-- CMake version: 3.21.0
-- Found Python3: /a2/home/dmc/blo/nrf-dmc/ncs/toolchains/b77d8c1312/usr/local/bin/python (found suitable version "3.12.4", minimum required is "3.8") found components: Interpreter 
-- Cache files will be written to: /home/dmc2/.cache/zephyr
-- Zephyr version: 3.7.99 (/a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/zephyr)
-- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
-- Board: nrf52833dk, qualifiers: nrf52833
-- Found host-tools: zephyr 0.17.0 (/a2/home/dmc/blo/nrf-dmc/ncs/toolchains/b77d8c1312/opt/zephyr-sdk)
-- Found toolchain: zephyr 0.17.0 (/a2/home/dmc/blo/nrf-dmc/ncs/toolchains/b77d8c1312/opt/zephyr-sdk)
-- Found Dtc: /a2/home/dmc/blo/nrf-dmc/ncs/toolchains/b77d8c1312/usr/bin/dtc (found suitable version "1.5.0", minimum required is "1.4.6") 
-- Found BOARD.dts: /a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/zephyr/boards/nordic/nrf52833dk/nrf52833dk_nrf52833.dts
-- Generated zephyr.dts: /a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork/build/fork/zephyr/zephyr.dts
-- Generated devicetree_generated.h: /a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork/build/fork/zephyr/include/generated/zephyr/devicetree_generated.h
-- Including generated dts.cmake file: /a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork/build/fork/zephyr/dts.cmake
Parsing /a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/zephyr/Kconfig
Loaded configuration '/a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/zephyr/boards/nordic/nrf52833dk/nrf52833dk_nrf52833_defconfig'
Merged configuration '/a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/common/common.conf'
Merged configuration '/a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork/prj.conf'
Merged configuration '/a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork/build/fork/zephyr/.config.sysbuild'
Configuration saved to '/a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork/build/fork/zephyr/.config'
Kconfig header saved to '/a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork/build/fork/zephyr/include/generated/zephyr/autoconf.h'
-- Found GnuLd: /a2/home/dmc/blo/nrf-dmc/ncs/toolchains/b77d8c1312/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi/bin/ld.bfd (found version "2.38") 
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- The ASM compiler identification is GNU
-- Found assembler: /a2/home/dmc/blo/nrf-dmc/ncs/toolchains/b77d8c1312/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc
-- Setting build type to 'MinSizeRel' as none was specified.
-- Using ccache: /a2/home/dmc/blo/nrf-dmc/ncs/toolchains/b77d8c1312/usr/bin/ccache
CMake Warning at /a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/zephyr/CMakeLists.txt:2133 (message):
  __ASSERT() statements are globally ENABLED


-- Configuring incomplete, errors occurred!
See also "/a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork/build/fork/CMakeFiles/CMakeOutput.log".
See also "/a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork/build/fork/CMakeFiles/CMakeError.log".
CMake Error at cmake/modules/sysbuild_extensions.cmake:514 (message):
  CMake configure failed for Zephyr project: fork

  Location:
  /a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork
Call Stack (most recent call first):
  cmake/modules/sysbuild_images.cmake:20 (ExternalZephyrProject_Cmake)
  cmake/modules/sysbuild_default.cmake:20 (include)
  /a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:75 (include)
  /a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:92 (include_boilerplate)
  /a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/zephyr/share/sysbuild-package/cmake/SysbuildConfig.cmake:8 (include)
  template/CMakeLists.txt:10 (find_package)


-- Configuring incomplete, errors occurred!
See also "/a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork/build/CMakeFiles/CMakeOutput.log".
FATAL ERROR: command exited with status 1: /a2/home/dmc/blo/nrf-dmc/ncs/toolchains/b77d8c1312/usr/local/bin/cmake -DWEST_PYTHON=/a2/home/dmc/blo/nrf-dmc/ncs/toolchains/b77d8c1312/usr/local/bin/python3.12 -B/a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork/build -GNinja -DBOARD=nrf52833dk/nrf52833 -DNCS_TOOLCHAIN_VERSION=NONE -S/a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/zephyr/share/sysbuild -DAPP_DIR:PATH=/a2/home/dmc/blo/nrf-dmc/ncs/v2.9.1/modules/hal/nordic/nrfx/samples/src/nrfx_gppi/fork

 *  The terminal process terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

Parents
  • Hi,

    Thanks for reporting. These samples has not been updated for sysbuild, but they can be built if you select "No sysbuild" when making the build configuration (the same as described here).

  • Thank you Einar for the prompt response.  I can confirm that selecting "No sysbuild" allows a successful build.

    In the related ticket you linked to it mentions that at least one other sample is similarly broken:

    I suspect it's related to the project is not setup to use sysbuild, if you build it without sysbuild I suspect it works. At least a quick check works using no-sysbuild: \modules\hal\nordic\nrfx\samples\src\nrfx_spim\non_blocking 

    For information to update the example on how to work with sysbuild check out:
    https://academy.nordicsemi.com/courses/nrf-connect-sdk-intermediate/lessons/lesson-8-sysbuild/topic/sysbuild-configuration/ 

    I have to say I was a bit shocked to see what looked to me like "here is how you can fix our broken sample", but perhaps that's not what was intended.

    Where to go from here?  Arguably these samples provided with 2.8.0 etc are broken, and (also arguably) these samples should have been updated as part of the move to sysbuild and the release of 2.8.0 and future versions. (But based on other posts I have read here I get the impression that this sort of issue isn't seen to be a particular priority).

    In a related matter, these two samples "nrfx_gppi/fork" and "nrfx_gppi/one_to_one" are overly trivial, by which I mean that learning how to the "gppi" library/API is hindered by their poor design:

    • only a limited number of devices are supported (nRF54L15DK notably absent)
    • lots of hardcoded "#define" done in static file "nrfx_example.h", rather than using devicetree

    I hope to offer some constructive feedback on what to do about that but it might take me a day or two to write that up.  I will leave this ticket open until then, if that is OK?

Reply
  • Thank you Einar for the prompt response.  I can confirm that selecting "No sysbuild" allows a successful build.

    In the related ticket you linked to it mentions that at least one other sample is similarly broken:

    I suspect it's related to the project is not setup to use sysbuild, if you build it without sysbuild I suspect it works. At least a quick check works using no-sysbuild: \modules\hal\nordic\nrfx\samples\src\nrfx_spim\non_blocking 

    For information to update the example on how to work with sysbuild check out:
    https://academy.nordicsemi.com/courses/nrf-connect-sdk-intermediate/lessons/lesson-8-sysbuild/topic/sysbuild-configuration/ 

    I have to say I was a bit shocked to see what looked to me like "here is how you can fix our broken sample", but perhaps that's not what was intended.

    Where to go from here?  Arguably these samples provided with 2.8.0 etc are broken, and (also arguably) these samples should have been updated as part of the move to sysbuild and the release of 2.8.0 and future versions. (But based on other posts I have read here I get the impression that this sort of issue isn't seen to be a particular priority).

    In a related matter, these two samples "nrfx_gppi/fork" and "nrfx_gppi/one_to_one" are overly trivial, by which I mean that learning how to the "gppi" library/API is hindered by their poor design:

    • only a limited number of devices are supported (nRF54L15DK notably absent)
    • lots of hardcoded "#define" done in static file "nrfx_example.h", rather than using devicetree

    I hope to offer some constructive feedback on what to do about that but it might take me a day or two to write that up.  I will leave this ticket open until then, if that is OK?

Children
No Data
Related