FOTA over Bluetooth Low Energy build error

Hi

     I use nRF7002-DK and sdk version as v2.5.2,download lesson8 exercise 3 solution and build was error as below log, which parts am I miss?

-- west build: generating a build system
Loading Zephyr default modules (Zephyr base).
-- Application: C:/ncs/ncs-inter/FOTA_BLE
-- CMake version: 3.20.5
-- Found Python3: C:/ncs/toolchains/c57af46cb7/opt/bin/python.exe (found suitable version "3.8.2", minimum required is "3.8") found components: Interpreter 
-- Cache files will be written to: C:/ncs/v2.5.2/zephyr/.cache
-- Zephyr version: 3.4.99 (C:/ncs/v2.5.2/zephyr)
-- Found west (found suitable version "1.1.0", minimum required is "0.14.0")
-- Board: nrf7002dk_nrf5340_cpuapp
-- Found host-tools: zephyr 0.16.1 (C:/ncs/toolchains/c57af46cb7/opt/zephyr-sdk)
-- Found toolchain: zephyr 0.16.1 (C:/ncs/toolchains/c57af46cb7/opt/zephyr-sdk)
-- Found Dtc: C:/ncs/toolchains/c57af46cb7/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6") 
-- Found BOARD.dts: C:/ncs/v2.5.2/nrf/boards/arm/nrf7002dk_nrf5340/nrf7002dk_nrf5340_cpuapp.dts
-- Found devicetree overlay: C:/ncs/ncs-inter/FOTA_BLE/app.overlay
-- Found devicetree overlay: boards/nrf5340dk_nrf5340_cpuapp_ns.conf
devicetree error: ./boards/nrf5340dk_nrf5340_cpuapp_ns.conf:1 (column 1): parse error: expected '/' or label reference (&foo)
-- In: C:/ncs/ncs-inter/FOTA_BLE/build/zephyr, command: C:/ncs/toolchains/c57af46cb7/opt/bin/python.exe;C:/ncs/v2.5.2/zephyr/scripts/dts/gen_defines.py;--dts;C:/ncs/ncs-inter/FOTA_BLE/build/zephyr/zephyr.dts.pre;--dtc-flags;'-Wno-unique_unit_address_if_enabled';--bindings-dirs;C:/ncs/v2.5.2/nrf/dts/bindings;C:/ncs/v2.5.2/zephyr/dts/bindings;--header-out;C:/ncs/ncs-inter/FOTA_BLE/build/zephyr/include/generated/devicetree_generated.h.new;--dts-out;C:/ncs/ncs-inter/FOTA_BLE/build/zephyr/zephyr.dts.new;--edt-pickle-out;C:/ncs/ncs-inter/FOTA_BLE/build/zephyr/edt.pickle;--vendor-prefixes;C:/ncs/v2.5.2/nrf/dts/bindings/vendor-prefixes.txt;--vendor-prefixes;C:/ncs/v2.5.2/zephyr/dts/bindings/vendor-prefixes.txt
CMake Error at C:/ncs/v2.5.2/zephyr/cmake/modules/dts.cmake:279 (message):
  gen_defines.py failed with return code: 1
Call Stack (most recent call first):
  C:/ncs/v2.5.2/zephyr/cmake/modules/zephyr_default.cmake:129 (include)
  C:/ncs/v2.5.2/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:66 (include)
  C:/ncs/v2.5.2/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:92 (include_boilerplate)
  CMakeLists.txt:9 (find_package)


-- Configuring incomplete, errors occurred!
FATAL ERROR: command exited with status 1: 'C:\ncs\toolchains\c57af46cb7\opt\bin\cmake.EXE' -DWEST_PYTHON=C:/ncs/toolchains/c57af46cb7/opt/bin/python.exe '-Bc:\ncs\ncs-inter\FOTA_BLE\build' -GNinja -DBOARD=nrf7002dk_nrf5340_cpuapp -DNCS_TOOLCHAIN_VERSION=NONE -DCONF_FILE=c:/ncs/ncs-inter/FOTA_BLE/prj.conf -DEXTRA_CONF_FILE=Kconfig -DEXTRA_DTC_OVERLAY_FILE=boards/nrf5340dk_nrf5340_cpuapp_ns.conf '-DBOARD_ROOT=c:/ncs/ncs-inter/inter_less5_exer1_solution;c:/ncs/ncs-inter/inter_less5_exer2_solution;c:/ncs/ncs-inter/jmex_spi_test;c:/ncs/ncs-inter/inter_less5_exer1_new;c:/ncs/ncs-inter/nrf5340_inter_less5_exer1_nrf5340;c:/ncs/ncs-inter/jmex_spi_stm_spi1;c:/ncs/ncs-inter/spi4_inter_less5_exer1_new_spi4;c:/ncs/ncs-inter/sp4_bmp280_spi4;c:/ncs/ncs-inter/sp4_lis2hh12_spi4;c:/ncs/ncs-inter/spi1_lis2hh12_spi1;c:/ncs/ncs-inter/spi4_bme280_cpuapp_spi4;c:/ncs/ncs-inter/spi4_stm32f412vgh6_cpuapp_spi4;c:/ncs/ncs-fund/fund_less5_exer1_uart_solution;c:/ncs/ncs-inter/uart0_stm32f412vgh6_uart0;c:/ncs/ncs-inter/spi4_stm32f412vgh6_3gpio_spi4;c:/ncs/ncs-inter/spi4_stm32f412vgh6_nodma_spi4;c:/ncs/ncs-inter/spi4_stm32f412vgh6_3gpio_uart_kthread_timer;c:/ncs/ncs-inter/fota_wifi;c:/ncs/ncs-inter/fota_ble' '-Sc:\ncs\ncs-inter\FOTA_BLE'

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

build config as below

Below error without include ovelay config

C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:69:2: error: #error "No size specified. 'size' or 'size-in-bytes' must be set"
69 | #error "No size specified. 'size' or 'size-in-bytes' must be set"
| ^~~~~
In file included from C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain.h:50,
from C:/ncs/v2.5.2/zephyr/include/zephyr/sys/time_units.h:10,
from C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util.h:615,
from C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:25,
from C:/ncs/v2.5.2/zephyr/include/zephyr/device.h:12,
from C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/flash.h:28,
from C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:10:
C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: error: expected ')' before 'DT_N_INST_0_nordic_qspi_nor_PATH'
333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
| ^~~~~~~~~
C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain/gcc.h:81:60: note: in definition of macro 'BUILD_ASSERT'
81 | #define BUILD_ASSERT(EXPR, MSG...) _Static_assert(EXPR, "" MSG)
| ^~~

110 | _CONCAT(__pinctrl_states, DEVICE_DT_NAME_GET(node_id))
| ^~~~~~~
C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:171:9: note: in expansion of macro 'Z_PINCTRL_STATES_NAME'
171 | Z_PINCTRL_STATES_NAME(node_id)[] = { \
| ^~~~~~~~~~~~~~~~~~~~~
C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:242:9: note: in expansion of macro 'Z_PINCTRL_STATES_DEFINE'
242 | Z_PINCTRL_STATES_DEFINE(node_id) \
| ^~~~~~~~~~~~~~~~~~~~~~~
C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1494:1: note: in expansion of macro 'PINCTRL_DT_DEFINE'
1494 | PINCTRL_DT_DEFINE(QSPI_NODE);
| ^~~~~~~~~~~~~~~~~
FATAL ERROR: command exited with status 1: 'C:\ncs\toolchains\c57af46cb7\opt\bin\cmake.EXE' --build 'c:\ncs\ncs-inter\FOTA_BLE\build'
[96/304] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap.c.obj
FAILED: modules/mcuboot/mcuboot_subimage-prefix/src/mcuboot_subimage-stamp/mcuboot_subimage-build mcuboot/zephyr/zephyr.hex mcuboot/zephyr/zephyr.elf
cmd.exe /C "cd /D C:\ncs\ncs-inter\FOTA_BLE\build\mcuboot && C:\ncs\toolchains\c57af46cb7\opt\bin\cmake.exe --build . --"
ninja: build stopped: subcommand failed.

build config as below

Best Regards

     Tina

  • Hello,

    I wanted to let you know that I have been assigned to this case and have started looking into it.

    I will get back to you soon.

    Kind Regards,

    Abhijith

  • Hello,

    Apologies for the delayed response. I reviewed the developer academy sample and noticed that it needs modification for the nRF7002dk.

    Please refer to the sample shared by my colleague in this thread, which is specifically made for the nRF7002dk. You can use this sample as a reference for enabling BLE OTA DFU.

    Kind regards,

    Abhijith

  • Hi Abhijith

                    I add the below config in proj.config file, also build error.I have another problem for nrf7002-DK, we remove the external flash chip form nrf7002-DK, isn't need to add below flash config on child-image\mcuboot.overlay?

    / {
    	chosen {
    		nordic,pm-ext-flash = &mx25r64;
    	};
    };

    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:69:2: error: #error "No size specified. 'size' or 'size-in-bytes' must be set"
       69 | #error "No size specified. 'size' or 'size-in-bytes' must be set"
          |  ^~~~~
    In file included from C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain.h:50,
                     from C:/ncs/v2.5.2/zephyr/include/zephyr/sys/time_units.h:10,
                     from C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util.h:615,
                     from C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:25,
                     from C:/ncs/v2.5.2/zephyr/include/zephyr/device.h:12,
                     from C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/flash.h:28,
                     from C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:10:
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: error: expected ')' before 'DT_N_INST_0_nordic_qspi_nor_PATH'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                                        ^~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain/gcc.h:81:60: note: in definition of macro 'BUILD_ASSERT'
       81 | #define BUILD_ASSERT(EXPR, MSG...) _Static_assert(EXPR, "" MSG)
       C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:171:9: note: in expansion of macro 'Z_PINCTRL_STATES_NAME'
      171 |         Z_PINCTRL_STATES_NAME(node_id)[] = {                                   \
          |         ^~~~~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:242:9: note: in expansion of macro 'Z_PINCTRL_STATES_DEFINE'
      242 |         Z_PINCTRL_STATES_DEFINE(node_id)                                       \
          |         ^~~~~~~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1494:1: note: in expansion of macro 'PINCTRL_DT_DEFINE'
     1494 | PINCTRL_DT_DEFINE(QSPI_NODE);
          | ^~~~~~~~~~~~~~~~~
    [103/304] Linking C static library zephyr\libzephyr.a
    ninja: build stopped: subcommand failed.
    FATAL ERROR: command exited with status 1: 'C:\ncs\toolchains\c57af46cb7\opt\bin\cmake.EXE' --build 'c:\ncs\ncs-inter\FOTA_BLE\build_1'
       

     Best Regards

          Tina           

  • Hello,

    External SPI/QSPI flash is typically required to provide enough intermediate storage for the FW update image. This is already included on the nRF7002-DK.
    I'm not entirely sure about BLE FOTA with the nRF7002DK, as I haven't tested it yet. I can test it, but I'll need some more time to do so.

    yithwe said:
    we remove the external flash chip form nrf7002-DK, isn't need to add below flash config on child-image\mcuboot.overlay?

    Could you please create a "boards" folder inside "child-image\mcuboot"? Something like this. I suggest referring to the Matter light bulb sample for enabling BLE FOTA on the nRF7002DK. You can examine the configurations used there and apply them to a non-Matter sample. I plan to provide a working sample for the nRF7002DK next week, as I'm currently occupied.

    Kind Regards,

    Abhijith

Related