Strange ARCH_HAS_STACK_PROTECTION behavior

I'm developing custom board based on nrf52833. After creating new board via nRF connect extension I tried to enable FOTA. And got next warning.

warning: HW_STACK_PROTECTION (defined at arch/Kconfig:258) was assigned the value 'y' but got the
value 'n'. Check these unsatisfied dependencies: ARCH_HAS_STACK_PROTECTION (=n). See
http://docs.zephyrproject.org/latest/kconfig.html#CONFIG_HW_STACK_PROTECTION and/or look up
HW_STACK_PROTECTION in the menuconfig/guiconfig interface. The Application Development Primer,
Setting Configuration Values, and Kconfig - Tips and Best Practices sections of the manual might be
helpful too.

But if I try to enable HW_STACK_PROTECTION via Kconfig gui it says "Direct Dependencies: (=y)".

This is not happening if I select nRF52833 kit as project board. What should I do to resolve this? What is the difference between custom board and development kit in means of dependencies?

Result prj.conf just in case

CONFIG_SECURE_BOOT=y
CONFIG_BOOTLOADER_MCUBOOT=y
CONFIG_IS_BOOTLOADER=y
CONFIG_BUILD_S1_VARIANT=y
CONFIG_USERSPACE=y
CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
CONFIG_BT_PERIPHERAL=y
CONFIG_BT=y

And build log. I realize that there also bunch of other warning, but at least I can somewhat understand how to resolve them.

Building untitled
/bin/sh -c west build --build-dir /home/yura/Documents/nrf/door_opener/app/untitled/build /home/yura/Documents/nrf/door_opener/app/untitled --pristine --board door_opener --no-sysbuild -- -DNCS_TOOLCHAIN_VERSION:STRING="NONE" -DBOARD_ROOT:STRING="/home/yura/Documents/nrf/door_opener" -DCONF_FILE:STRING="/home/yura/Documents/nrf/door_opener/app/untitled/prj.conf"

-- west build: generating a build system
Loading Zephyr default modules (Zephyr base).
-- Application: /home/yura/Documents/nrf/door_opener/app/untitled
-- CMake version: 3.20.5
-- Found Python3: /home/yura/ncs/toolchains/1f9b40e71a/usr/local/bin/python3.8 (found suitable exact version "3.8.2") found components: Interpreter 
-- Cache files will be written to: /home/yura/.cache/zephyr
-- Zephyr version: 3.3.99 (/home/yura/ncs/v2.4.2/zephyr)
-- Found west (found suitable version "1.0.0", minimum required is "0.7.1")
-- Board: door_opener
-- Found host-tools: zephyr 0.16.0 (/home/yura/ncs/toolchains/1f9b40e71a/opt/zephyr-sdk)
-- Found toolchain: zephyr 0.16.0 (/home/yura/ncs/toolchains/1f9b40e71a/opt/zephyr-sdk)
-- Found Dtc: /home/yura/ncs/toolchains/1f9b40e71a/usr/bin/dtc (found suitable version "1.4.7", minimum required is "1.4.6") 
-- Found BOARD.dts: /home/yura/Documents/nrf/door_opener/boards/arm/door_opener/door_opener.dts
-- Generated zephyr.dts: /home/yura/Documents/nrf/door_opener/app/untitled/build/zephyr/zephyr.dts
-- Generated devicetree_generated.h: /home/yura/Documents/nrf/door_opener/app/untitled/build/zephyr/include/generated/devicetree_generated.h
-- Including generated dts.cmake file: /home/yura/Documents/nrf/door_opener/app/untitled/build/zephyr/dts.cmake
Parsing /home/yura/ncs/v2.4.2/zephyr/Kconfig
Loaded configuration '/home/yura/Documents/nrf/door_opener/boards/arm/door_opener/door_opener_defconfig'
Merged configuration '/home/yura/Documents/nrf/door_opener/app/untitled/prj.conf'
Configuration saved to '/home/yura/Documents/nrf/door_opener/app/untitled/build/zephyr/.config'
Kconfig header saved to '/home/yura/Documents/nrf/door_opener/app/untitled/build/zephyr/include/generated/autoconf.h'
-- Found GnuLd: /home/yura/ncs/toolchains/1f9b40e71a/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../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: /home/yura/ncs/toolchains/1f9b40e71a/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc

=== child image b0 -  begin ===
loading initial cache file /home/yura/Documents/nrf/door_opener/app/untitled/build/b0/child_image_preload.cmake
Loading Zephyr default modules (Zephyr base).
-- Application: /home/yura/ncs/v2.4.2/nrf/samples/bootloader
-- CMake version: 3.20.5
-- Found Python3: /home/yura/ncs/toolchains/1f9b40e71a/usr/local/bin/python3.8 (found suitable exact version "3.8.2") found components: Interpreter 
-- Cache files will be written to: /home/yura/.cache/zephyr
-- Zephyr version: 3.3.99 (/home/yura/ncs/v2.4.2/zephyr)
-- Found west (found suitable version "1.0.0", minimum required is "0.7.1")
-- Board: door_opener
-- Found host-tools: zephyr 0.16.0 (/home/yura/ncs/toolchains/1f9b40e71a/opt/zephyr-sdk)
-- Found toolchain: zephyr 0.16.0 (/home/yura/ncs/toolchains/1f9b40e71a/opt/zephyr-sdk)
-- Found Dtc: /home/yura/ncs/toolchains/1f9b40e71a/usr/bin/dtc (found suitable version "1.4.7", minimum required is "1.4.6") 
-- Found BOARD.dts: /home/yura/Documents/nrf/door_opener/boards/arm/door_opener/door_opener.dts
-- Generated zephyr.dts: /home/yura/Documents/nrf/door_opener/app/untitled/build/b0/zephyr/zephyr.dts
-- Generated devicetree_generated.h: /home/yura/Documents/nrf/door_opener/app/untitled/build/b0/zephyr/include/generated/devicetree_generated.h
-- Including generated dts.cmake file: /home/yura/Documents/nrf/door_opener/app/untitled/build/b0/zephyr/dts.cmake

warning: HW_STACK_PROTECTION (defined at arch/Kconfig:258) was assigned the value 'y' but got the
value 'n'. Check these unsatisfied dependencies: ARCH_HAS_STACK_PROTECTION (=n). See
http://docs.zephyrproject.org/latest/kconfig.html#CONFIG_HW_STACK_PROTECTION and/or look up
HW_STACK_PROTECTION in the menuconfig/guiconfig interface. The Application Development Primer,
Setting Configuration Values, and Kconfig - Tips and Best Practices sections of the manual might be
helpful too.


warning: UART_NRFX (defined at drivers/serial/Kconfig.nrfx:6) has direct dependencies (DT_HAS_NORDIC_NRF_UART_ENABLED || DT_HAS_NORDIC_NRF_UARTE_ENABLED) && SERIAL with value n, but is currently being y-selected by the following symbols:
 - SECURE_BOOT_DEBUG_UART (defined at /home/yura/ncs/v2.4.2/nrf/subsys/bootloader/Kconfig:222), with value y, direct dependencies <choice SECURE_BOOT_DEBUG_BACKEND> (value: y), and select condition <choice SECURE_BOOT_DEBUG_BACKEND> (value: y)

warning: UART_CONSOLE (defined at drivers/console/Kconfig:43) has direct dependencies SERIAL && SERIAL_HAS_DRIVER && CONSOLE with value n, but is currently being y-selected by the following symbols:
 - SECURE_BOOT_DEBUG_UART (defined at /home/yura/ncs/v2.4.2/nrf/subsys/bootloader/Kconfig:222), with value y, direct dependencies <choice SECURE_BOOT_DEBUG_BACKEND> (value: y), and select condition <choice SECURE_BOOT_DEBUG_BACKEND> (value: y)

error: Aborting due to Kconfig warnings

Parsing /home/yura/ncs/v2.4.2/zephyr/Kconfig
Loaded configuration '/home/yura/Documents/nrf/door_opener/boards/arm/door_opener/door_opener_defconfig'
Merged configuration '/home/yura/ncs/v2.4.2/nrf/samples/bootloader/prj.conf'
Merged configuration '/home/yura/ncs/v2.4.2/nrf/subsys/partition_manager/partition_manager_enabled.conf'
Merged configuration '/home/yura/Documents/nrf/door_opener/app/untitled/build/b0/zephyr/misc/generated/extra_kconfig_options.conf'
CMake Error at /home/yura/ncs/v2.4.2/zephyr/cmake/modules/kconfig.cmake:339 (message):
  command failed with return code: 1
Call Stack (most recent call first):
  /home/yura/ncs/v2.4.2/nrf/cmake/modules/kconfig.cmake:29 (include)
  /home/yura/ncs/v2.4.2/zephyr/cmake/modules/zephyr_default.cmake:115 (include)
  /home/yura/ncs/v2.4.2/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:66 (include)
  /home/yura/ncs/v2.4.2/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:92 (include_boilerplate)
  CMakeLists.txt:9 (find_package)


-- Configuring incomplete, errors occurred!
CMake Error at /home/yura/ncs/v2.4.2/nrf/cmake/multi_image.cmake:440 (message):
  CMake generation for b0 failed, aborting.  Command: 1
Call Stack (most recent call first):
  /home/yura/ncs/v2.4.2/nrf/cmake/multi_image.cmake:169 (add_child_image_from_source)
  /home/yura/ncs/v2.4.2/nrf/samples/CMakeLists.txt:18 (add_child_image)


-- Configuring incomplete, errors occurred!
See also "/home/yura/Documents/nrf/door_opener/app/untitled/build/CMakeFiles/CMakeOutput.log".
See also "/home/yura/Documents/nrf/door_opener/app/untitled/build/CMakeFiles/CMakeError.log".
FATAL ERROR: command exited with status 1: /home/yura/ncs/toolchains/1f9b40e71a/usr/local/bin/cmake -DWEST_PYTHON=/home/yura/ncs/toolchains/1f9b40e71a/usr/local/bin/python3.8 -B/home/yura/Documents/nrf/door_opener/app/untitled/build -GNinja -DBOARD=door_opener -DNCS_TOOLCHAIN_VERSION:STRING=NONE -DBOARD_ROOT:STRING=/home/yura/Documents/nrf/door_opener -DCONF_FILE:STRING=/home/yura/Documents/nrf/door_opener/app/untitled/prj.conf -S/home/yura/Documents/nrf/door_opener/app/untitled

  • Hi,

    In this case, I think the warning for UART_NRFX  and UART_CONSOLE causes the build error if you use the default custom board files which don't include UART. You can compare the board files of the custom board and nRF52833DK.  

    warning: UART_NRFX (defined at drivers/serial/Kconfig.nrfx:6) has direct dependencies (DT_HAS_NORDIC_NRF_UART_ENABLED || DT_HAS_NORDIC_NRF_UARTE_ENABLED) && SERIAL with value n, but is currently being y-selected by the following symbols:
     - SECURE_BOOT_DEBUG_UART (defined at /home/yura/ncs/v2.4.2/nrf/subsys/bootloader/Kconfig:222), with value y, direct dependencies <choice SECURE_BOOT_DEBUG_BACKEND> (value: y), and select condition <choice SECURE_BOOT_DEBUG_BACKEND> (value: y)
    
    warning: UART_CONSOLE (defined at drivers/console/Kconfig:43) has direct dependencies SERIAL && SERIAL_HAS_DRIVER && CONSOLE with value n, but is currently being y-selected by the following symbols:
     - SECURE_BOOT_DEBUG_UART (defined at /home/yura/ncs/v2.4.2/nrf/subsys/bootloader/Kconfig:222), with value y, direct dependencies <choice SECURE_BOOT_DEBUG_BACKEND> (value: y), and select condition <choice SECURE_BOOT_DEBUG_BACKEND> (value: y)
    

    Even using nRF52833DK to build with your configs, it would get the HW_STACK_PROTECTION warning. However, it would not cause the build to fail. 

    Regards,
    Amanda H.

Related