BLE OTA DFU using external flash

I'm using the NCS 2.5.2 sdk and nrf 5340 with 7002, and I want to do BLE OTA DFU using external flash.

I've found this guide Add DFU support to your application - Software - nRF Connect SDK guides - Nordic DevZone (nordicsemi.com), and successfully  done BLE OTA DFU using internal flash, just add the commands below,

#Enable MCUBOOT bootloader build in the application
CONFIG_BOOTLOADER_MCUBOOT=y
#Include MCUMGR and the dependencies in the build
CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y

but I don't know how to do with external flash, I've tried looking at main.c in mcuboot, and I didn't find where to modify the code.

  • Hi, when I add the config to the prj.conf and set the devicetree of the external flash, it has few error occur.

    prj.conf

    #config RTT
    CONFIG_LOG=y
    CONFIG_LOG_PRINTK=y
    # CONFIG_LOG_MODE_DEFERRED=y
    CONFIG_UART_CONSOLE=n
    CONFIG_USE_SEGGER_RTT=y
    CONFIG_RTT_CONSOLE=y
    CONFIG_LOG_BACKEND_RTT=y
    CONFIG_LOG_BACKEND_UART=n
    
    CONFIG_SEGGER_RTT_BUFFER_SIZE_UP=4096
    CONFIG_LOG_BUFFER_SIZE=4096
    
    CONFIG_BT=y
    CONFIG_BT_PERIPHERAL=y
    CONFIG_BT_DEVICE_NAME="test 0422"
    CONFIG_BT_DEVICE_APPEARANCE=833
    CONFIG_BT_MAX_CONN=1
    CONFIG_BT_MAX_PAIRED=1
    CONFIG_HW_ID_LIBRARY=y
    CONFIG_HW_ID_LIBRARY_SOURCE_BLE_MAC=y
    
    
    # # Enable the NUS service
    # CONFIG_BT_NUS=y
    
    # # Enable bonding
    # CONFIG_BT_SETTINGS=y
    # CONFIG_FLASH=y
    # CONFIG_FLASH_PAGE_LAYOUT=y
    # CONFIG_FLASH_MAP=y
    # CONFIG_NVS=y
    # CONFIG_SETTINGS=y
    
    #ota
    #Enable MCUBOOT bootloader build in the application
    CONFIG_BOOTLOADER_MCUBOOT=y
    #Include MCUMGR and the dependencies in the build
    CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y
    
    
    CONFIG_NORDIC_QSPI_NOR=n
    CONFIG_SPI=y
    CONFIG_SPI_NOR=y
    CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096
    
    # If you don't add this when setting CONFIG_SPI=y, you'll get a lot of undefined references from the nrfx spim driver
    # E.G. "undefined reference to `z_impl_k_sleep'"
    CONFIG_MULTITHREADING=y
    CONFIG_SPI_NOR_SFDP_DEVICETREE=y
    CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y
    CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY=y
    
    # Disable internal DCDC
    CONFIG_BOARD_ENABLE_DCDC_APP=n
    CONFIG_BOARD_ENABLE_DCDC_NET=n
    CONFIG_BOARD_ENABLE_DCDC_HV=n
    
    # Use internal capacitor for 32M xtal and set capacitor value to 8.5pF 
    # (ranging from 7.0 pF to 20.0 pF in 0.5 pF steps
    # can be enabled on pins XC1 and XC2. This option specifies doubled
    # capacitance value for the two capacitors. Set it to 14 to get 7.0 pF
    # for each capacitor, 15 to get 7.5 pF, and so on.
    # )
    CONFIG_SOC_HFXO_CAP_INTERNAL=y
    CONFIG_SOC_HFXO_CAP_INT_VALUE_X2=17
     
    #  Use internal capacitor for 32k xtal and set capacitor value to 7pF 
    # (only 4 options of internal capacitor value settings for 32k xtal
    #   -INT_6PF
    #   -INT_7PF
    #   -INT_9PF
    #   - USE external capacitor)
    CONFIG_SOC_ENABLE_LFXO=y
    CONFIG_SOC_LFXO_CAP_INT_7PF=y
    device tree
        chosen {
            zephyr,sram = &sram0_image;
            zephyr,flash = &flash0;
            zephyr,code-partition = &slot0_partition;
            zephyr,sram-secure-partition = &sram0_s;
            zephyr,sram-non-secure-partition = &sram0_ns;
            nordic,pm-ext-flash = &mx25l3233;
        };
    &spi3 {
        compatible = "nordic,nrf-spim";
        status = "okay";
        pinctrl-0 = <&spi3_default>;
        pinctrl-1 = <&spi3_sleep>;
        pinctrl-names = "default", "sleep";
        cs-gpios = <&gpio0 10 GPIO_ACTIVE_LOW>;
        mx25l3233: mx25l3233@0 {
                compatible = "jedec,spi-nor";
                reg = <0>;
                spi-max-frequency = <8000000>;
                label = "extflash";
                jedec-id = [ C2 20 16  ];
                sfdp-bfp = [ E5 20 F1 FF FF FF FF 01 44 EB 08 6B 08 3B 04 BB EE FF 00 00 FF 00 00 FF FF 00 00 FF 0C 20 0F 52 10 D8 00 FF 00 36 50 26 9E F9 77 64 FE CF FF FF FF FF FF FF  ];
                size = <33554432>;
                // has-dpd;
                // t-enter-dpd = <10000>;
                // t-exit-dpd = <35000>;
        };
    };
    error message
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:42: note: in expansion of macro 'DT_DRV_INST'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                          ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:77:30: note: in expansion of macro 'DT_INST_PROP'
       77 | #define INST_0_SCK_FREQUENCY DT_INST_PROP(0, sck_frequency)
          |                              ^~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:82:14: note: in expansion of macro 'INST_0_SCK_FREQUENCY'
       82 | BUILD_ASSERT(INST_0_SCK_FREQUENCY >= (NRF_QSPI_BASE_CLOCK_FREQ / 16),
          |              ^~~~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: error: expression in static assertion is not an integer
      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:51: 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/devicetree.h:614:32: note: in expansion of macro 'DT_CAT3'
      614 | #define DT_PROP(node_id, prop) DT_CAT3(node_id, _P_, prop)
          |                                ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:34: note: in expansion of macro 'DT_PROP'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                  ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:104:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'
      104 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
          |                          ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:31: note: in expansion of macro 'UTIL_CAT'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3248:27: note: in expansion of macro 'DT_INST'
     3248 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:42: note: in expansion of macro 'DT_DRV_INST'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                          ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:77:30: note: in expansion of macro 'DT_INST_PROP'
       77 | #define INST_0_SCK_FREQUENCY DT_INST_PROP(0, sck_frequency)
          |                              ^~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:82:14: note: in expansion of macro 'INST_0_SCK_FREQUENCY'
       82 | BUILD_ASSERT(INST_0_SCK_FREQUENCY >= (NRF_QSPI_BASE_CLOCK_FREQ / 16),
          |              ^~~~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: error: 'DT_N_INST_0_nordic_qspi_nor_P_cpol' undeclared here (not in a function); did you mean 'DT_N_INST_0_nordic_mbox_nrf_ipc'?
      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:51: 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/devicetree.h:614:32: note: in expansion of macro 'DT_CAT3'
      614 | #define DT_PROP(node_id, prop) DT_CAT3(node_id, _P_, prop)
          |                                ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:34: note: in expansion of macro 'DT_PROP'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                  ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:104:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'
      104 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
          |                          ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:31: note: in expansion of macro 'UTIL_CAT'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3248:27: note: in expansion of macro 'DT_INST'
     3248 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:42: note: in expansion of macro 'DT_DRV_INST'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                          ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:136:14: note: in expansion of macro 'DT_INST_PROP'
      136 | BUILD_ASSERT(DT_INST_PROP(0, cpol) == DT_INST_PROP(0, cpha),
          |              ^~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: error: 'DT_N_INST_0_nordic_qspi_nor_P_cpha' undeclared here (not in a function); did you mean 'DT_N_INST_0_nordic_mbox_nrf_ipc'?
      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:51: 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/devicetree.h:614:32: note: in expansion of macro 'DT_CAT3'
      614 | #define DT_PROP(node_id, prop) DT_CAT3(node_id, _P_, prop)
          |                                ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:34: note: in expansion of macro 'DT_PROP'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                  ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:104:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'
      104 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
          |                          ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:31: note: in expansion of macro 'UTIL_CAT'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3248:27: note: in expansion of macro 'DT_INST'
     3248 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:42: note: in expansion of macro 'DT_DRV_INST'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                          ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:136:39: note: in expansion of macro 'DT_INST_PROP'
      136 | BUILD_ASSERT(DT_INST_PROP(0, cpol) == DT_INST_PROP(0, cpha),
          |                                       ^~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: error: expression in static assertion is not an integer
      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:51: 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/devicetree.h:614:32: note: in expansion of macro 'DT_CAT3'
      614 | #define DT_PROP(node_id, prop) DT_CAT3(node_id, _P_, prop)
          |                                ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:34: note: in expansion of macro 'DT_PROP'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                  ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:104:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'
      104 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
          |                          ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:31: note: in expansion of macro 'UTIL_CAT'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3248:27: note: in expansion of macro 'DT_INST'
     3248 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:42: note: in expansion of macro 'DT_DRV_INST'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                          ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:136:14: note: in expansion of macro 'DT_INST_PROP'
      136 | BUILD_ASSERT(DT_INST_PROP(0, cpol) == DT_INST_PROP(0, cpha),
          |              ^~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:144:28: error: 'JESD216_DW15_QER_VAL_DT_N_INST_0_nordic_qspi_nor_P_quad_enable_requirements_STRING_TOKEN' undeclared here (not in a function)
      144 | #define INST_0_QER _CONCAT(JESD216_DW15_QER_VAL_, \
          |                            ^~~~~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain/gcc.h:81:51: note: in definition of macro 'BUILD_ASSERT'
       81 | #define BUILD_ASSERT(EXPR, MSG...) _Static_assert(EXPR, "" MSG)
          |                                                   ^~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:160:15: note: in expansion of macro 'IS_EQUAL'
      160 | BUILD_ASSERT((IS_EQUAL(INST_0_QER, JESD216_DW15_QER_VAL_NONE)
          |               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain/common.h:133:23: note: in expansion of macro '_DO_CONCAT'
      133 | #define _CONCAT(x, y) _DO_CONCAT(x, y)
          |                       ^~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:144:20: note: in expansion of macro '_CONCAT'
      144 | #define INST_0_QER _CONCAT(JESD216_DW15_QER_VAL_, \
          |                    ^~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:160:24: note: in expansion of macro 'INST_0_QER'
      160 | BUILD_ASSERT((IS_EQUAL(INST_0_QER, JESD216_DW15_QER_VAL_NONE)
          |                        ^~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:160:14: error: expression in static assertion is not an integer
      160 | BUILD_ASSERT((IS_EQUAL(INST_0_QER, JESD216_DW15_QER_VAL_NONE)
          |              ^
    C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain/gcc.h:81:51: note: in definition of macro 'BUILD_ASSERT'
       81 | #define BUILD_ASSERT(EXPR, MSG...) _Static_assert(EXPR, "" MSG)
          |                                                   ^~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c: In function 'qspi_nor_init':
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: error: 'DT_N_INST_0_nordic_qspi_nor_BUS_IRQ_IDX_0_VAL_priority' undeclared (first use in this function)
      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:51: 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/arch/arm/aarch32/irq.h:128:9: note: in expansion of macro '_CHECK_PRIO'
      128 |         _CHECK_PRIO(priority_p, flags_p) \
          |         ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/irq.h:49:9: note: in expansion of macro 'ARCH_IRQ_CONNECT'
       49 |         ARCH_IRQ_CONNECT(irq_p, priority_p, isr_p, isr_param_p, flags_p)
          |         ^~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1242:9: note: in expansion of macro 'IRQ_CONNECT'
     1242 |         IRQ_CONNECT(DT_IRQN(QSPI_NODE), DT_IRQ(QSPI_NODE, priority),
          |         ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:2383:9: note: in expansion of macro 'DT_CAT5'
     2383 |         DT_CAT5(node_id, _IRQ_IDX_, idx, _VAL_, cell)
          |         ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:2410:31: note: in expansion of macro 'DT_IRQ_BY_IDX'
     2410 | #define DT_IRQ(node_id, cell) DT_IRQ_BY_IDX(node_id, 0, cell)
          |                               ^~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1242:41: note: in expansion of macro 'DT_IRQ'
     1242 |         IRQ_CONNECT(DT_IRQN(QSPI_NODE), DT_IRQ(QSPI_NODE, priority),
          |                                         ^~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3190:25: note: in expansion of macro 'DT_CAT'
     3190 | #define DT_BUS(node_id) DT_CAT(node_id, _BUS)
          |                         ^~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3836:27: note: in expansion of macro 'DT_BUS'
     3836 | #define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
          |                           ^~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:104:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'
      104 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
          |                          ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:31: note: in expansion of macro 'UTIL_CAT'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3248:27: note: in expansion of macro 'DT_INST'
     3248 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3836:34: note: in expansion of macro 'DT_DRV_INST'
     3836 | #define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
          |                                  ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:140:19: note: in expansion of macro 'DT_INST_BUS'
      140 | #define QSPI_NODE DT_INST_BUS(0)
          |                   ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1242:48: note: in expansion of macro 'QSPI_NODE'
     1242 |         IRQ_CONNECT(DT_IRQN(QSPI_NODE), DT_IRQ(QSPI_NODE, priority),
          |                                                ^~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: note: each undeclared identifier is reported only once for each function it appears in
      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:51: 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/arch/arm/aarch32/irq.h:128:9: note: in expansion of macro '_CHECK_PRIO'
      128 |         _CHECK_PRIO(priority_p, flags_p) \
          |         ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/irq.h:49:9: note: in expansion of macro 'ARCH_IRQ_CONNECT'
       49 |         ARCH_IRQ_CONNECT(irq_p, priority_p, isr_p, isr_param_p, flags_p)
          |         ^~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1242:9: note: in expansion of macro 'IRQ_CONNECT'
     1242 |         IRQ_CONNECT(DT_IRQN(QSPI_NODE), DT_IRQ(QSPI_NODE, priority),
          |         ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:2383:9: note: in expansion of macro 'DT_CAT5'
     2383 |         DT_CAT5(node_id, _IRQ_IDX_, idx, _VAL_, cell)
          |         ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:2410:31: note: in expansion of macro 'DT_IRQ_BY_IDX'
     2410 | #define DT_IRQ(node_id, cell) DT_IRQ_BY_IDX(node_id, 0, cell)
          |                               ^~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1242:41: note: in expansion of macro 'DT_IRQ'
     1242 |         IRQ_CONNECT(DT_IRQN(QSPI_NODE), DT_IRQ(QSPI_NODE, priority),
          |                                         ^~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3190:25: note: in expansion of macro 'DT_CAT'
     3190 | #define DT_BUS(node_id) DT_CAT(node_id, _BUS)
          |                         ^~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3836:27: note: in expansion of macro 'DT_BUS'
     3836 | #define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
          |                           ^~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:104:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'
      104 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
          |                          ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:31: note: in expansion of macro 'UTIL_CAT'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3248:27: note: in expansion of macro 'DT_INST'
     3248 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3836:34: note: in expansion of macro 'DT_DRV_INST'
     3836 | #define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
          |                                  ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:140:19: note: in expansion of macro 'DT_INST_BUS'
      140 | #define QSPI_NODE DT_INST_BUS(0)
          |                   ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1242:48: note: in expansion of macro 'QSPI_NODE'
     1242 |         IRQ_CONNECT(DT_IRQN(QSPI_NODE), DT_IRQ(QSPI_NODE, priority),
          |                                                ^~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/arch/arm/aarch32/irq.h:105:22: error: expression in static assertion is not an integer
      105 |         BUILD_ASSERT(((flags_p & IRQ_ZERO_LATENCY) && \
          |                      ^
    C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain/gcc.h:81:51: 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/arch/arm/aarch32/irq.h:128:9: note: in expansion of macro '_CHECK_PRIO'
      128 |         _CHECK_PRIO(priority_p, flags_p) \
          |         ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/irq.h:49:9: note: in expansion of macro 'ARCH_IRQ_CONNECT'
       49 |         ARCH_IRQ_CONNECT(irq_p, priority_p, isr_p, isr_param_p, flags_p)
          |         ^~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1242:9: note: in expansion of macro 'IRQ_CONNECT'
     1242 |         IRQ_CONNECT(DT_IRQN(QSPI_NODE), DT_IRQ(QSPI_NODE, priority),
          |         ^~~~~~~~~~~
    In file included from C:/ncs/v2.5.2/zephyr/include/zephyr/arch/arm/aarch32/irq.h:19,
                     from C:/ncs/v2.5.2/zephyr/include/zephyr/arch/arm/aarch32/arch.h:27,
                     from C:/ncs/v2.5.2/zephyr/include/zephyr/arch/cpu.h:19,
                     from C:/ncs/v2.5.2/zephyr/include/zephyr/kernel_includes.h:33,
                     from C:/ncs/v2.5.2/zephyr/include/zephyr/kernel.h:17,
                     from C:/ncs/v2.5.2/zephyr/include/zephyr/pm/device.h:11,
                     from C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:12:
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: error: 'DT_N_INST_0_nordic_qspi_nor_BUS_IRQ_IDX_0_VAL_irq' undeclared (first use in this function)
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                                        ^~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sw_isr_table.h:77:26: note: in definition of macro 'Z_ISR_DECLARE'
       77 |                         {irq, flags, (void *)&func, (const void *)param}
          |                          ^~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/irq.h:49:9: note: in expansion of macro 'ARCH_IRQ_CONNECT'
       49 |         ARCH_IRQ_CONNECT(irq_p, priority_p, isr_p, isr_param_p, flags_p)
          |         ^~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1242:9: note: in expansion of macro 'IRQ_CONNECT'
     1242 |         IRQ_CONNECT(DT_IRQN(QSPI_NODE), DT_IRQ(QSPI_NODE, priority),
          |         ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:2383:9: note: in expansion of macro 'DT_CAT5'
     2383 |         DT_CAT5(node_id, _IRQ_IDX_, idx, _VAL_, cell)
          |         ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:2410:31: note: in expansion of macro 'DT_IRQ_BY_IDX'
     2410 | #define DT_IRQ(node_id, cell) DT_IRQ_BY_IDX(node_id, 0, cell)
          |                               ^~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:2422:26: note: in expansion of macro 'DT_IRQ'
     2422 | #define DT_IRQN(node_id) DT_IRQ(node_id, irq)
          |                          ^~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1242:21: note: in expansion of macro 'DT_IRQN'
     1242 |         IRQ_CONNECT(DT_IRQN(QSPI_NODE), DT_IRQ(QSPI_NODE, priority),
          |                     ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3190:25: note: in expansion of macro 'DT_CAT'
     3190 | #define DT_BUS(node_id) DT_CAT(node_id, _BUS)
          |                         ^~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3836:27: note: in expansion of macro 'DT_BUS'
     3836 | #define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
          |                           ^~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:104:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'
      104 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
          |                          ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:31: note: in expansion of macro 'UTIL_CAT'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3248:27: note: in expansion of macro 'DT_INST'
     3248 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3836:34: note: in expansion of macro 'DT_DRV_INST'
     3836 | #define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
          |                                  ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:140:19: note: in expansion of macro 'DT_INST_BUS'
      140 | #define QSPI_NODE DT_INST_BUS(0)
          |                   ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1242:29: note: in expansion of macro 'QSPI_NODE'
     1242 |         IRQ_CONNECT(DT_IRQN(QSPI_NODE), DT_IRQ(QSPI_NODE, priority),
          |                             ^~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c: At top level:
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1262:29: error: 'INST_0_BYTES' undeclared here (not in a function); did you mean 'INST_0_QER'?
     1262 | #define LAYOUT_PAGES_COUNT (INST_0_BYTES / \
          |                             ^~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain/gcc.h:81:51: note: in definition of macro 'BUILD_ASSERT'
       81 | #define BUILD_ASSERT(EXPR, MSG...) _Static_assert(EXPR, "" MSG)
          |                                                   ^~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1266:15: note: in expansion of macro 'LAYOUT_PAGES_COUNT'
     1266 |               LAYOUT_PAGES_COUNT)
          |               ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1265:14: error: expression in static assertion is not an integer
     1265 | BUILD_ASSERT((CONFIG_NORDIC_QSPI_NOR_FLASH_LAYOUT_PAGE_SIZE *
          |              ^
    C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain/gcc.h:81:51: 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/devicetree.h:333:40: error: expected ')' before 'DT_N_INST_0_nordic_qspi_nor_BUS_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/devicetree.h:495:31: note: in expansion of macro 'DT_CAT'
      495 | #define DT_NODE_PATH(node_id) DT_CAT(node_id, _PATH)
          |                               ^~~~~~
    c:\ncs\v2.5.2\zephyr\soc\arm\nordic_nrf\common\soc_nrf_common.h:191:22: note: in expansion of macro 'DT_NODE_PATH'
      191 |                      DT_NODE_PATH(node_id) " defined without sleep state")
          |                      ^~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1492:1: note: in expansion of macro 'NRF_DT_CHECK_NODE_HAS_PINCTRL_SLEEP'
     1492 | NRF_DT_CHECK_NODE_HAS_PINCTRL_SLEEP(QSPI_NODE);
          | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3190:25: note: in expansion of macro 'DT_CAT'
     3190 | #define DT_BUS(node_id) DT_CAT(node_id, _BUS)
          |                         ^~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3836:27: note: in expansion of macro 'DT_BUS'
     3836 | #define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
          |                           ^~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:104:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'
      104 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
          |                          ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:31: note: in expansion of macro 'UTIL_CAT'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3248:27: note: in expansion of macro 'DT_INST'
     3248 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3836:34: note: in expansion of macro 'DT_DRV_INST'
     3836 | #define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
          |                                  ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:140:19: note: in expansion of macro 'DT_INST_BUS'
      140 | #define QSPI_NODE DT_INST_BUS(0)
          |                   ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1492:37: note: in expansion of macro 'QSPI_NODE'
     1492 | NRF_DT_CHECK_NODE_HAS_PINCTRL_SLEEP(QSPI_NODE);
          |                                     ^~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain/gcc.h:81:50: note: to match this '('
       81 | #define BUILD_ASSERT(EXPR, MSG...) _Static_assert(EXPR, "" MSG)
          |                                                  ^
    c:\ncs\v2.5.2\zephyr\soc\arm\nordic_nrf\common\soc_nrf_common.h:189:9: note: in expansion of macro 'BUILD_ASSERT'
      189 |         BUILD_ASSERT(!IS_ENABLED(CONFIG_PM_DEVICE) ||                          \
          |         ^~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1492:1: note: in expansion of macro 'NRF_DT_CHECK_NODE_HAS_PINCTRL_SLEEP'
     1492 | NRF_DT_CHECK_NODE_HAS_PINCTRL_SLEEP(QSPI_NODE);
          | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In file included from C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util.h:17:
    C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:241:51: error: expected ')' before '(' token
      241 |                      Z_PINCTRL_STATE_PINS_DEFINE, (;), node_id);               \
          |                                                   ^
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_macro.h:418:69: note: in definition of macro 'LISTIFY'
      418 | #define LISTIFY(LEN, F, sep, ...) UTIL_CAT(Z_UTIL_LISTIFY_, LEN)(F, sep, __VA_ARGS__)
          |                                                                     ^~~
    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);
          | ^~~~~~~~~~~~~~~~~
    In file included from C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_macro.h:34:
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_macro.h:418:44: warning: implicit declaration of function 'Z_UTIL_LISTIFY_DT_N_INST_0_nordic_qspi_nor_BUS_PINCTRL_NUM' [-Wimplicit-function-declaration]
      418 | #define LISTIFY(LEN, F, sep, ...) UTIL_CAT(Z_UTIL_LISTIFY_, LEN)(F, sep, __VA_ARGS__)
          |                                            ^~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:105:36: note: in definition of macro 'UTIL_PRIMITIVE_CAT'
      105 | #define UTIL_PRIMITIVE_CAT(a, ...) a##__VA_ARGS__
          |                                    ^
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_macro.h:418:35: note: in expansion of macro 'UTIL_CAT'
      418 | #define LISTIFY(LEN, F, sep, ...) UTIL_CAT(Z_UTIL_LISTIFY_, LEN)(F, sep, __VA_ARGS__)
          |                                   ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:172:17: note: in expansion of macro 'LISTIFY'
      172 |                 LISTIFY(DT_NUM_PINCTRL_STATES(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);
          | ^~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:173:30: error: 'Z_PINCTRL_STATE_INIT' undeclared here (not in a function)
      173 |                              Z_PINCTRL_STATE_INIT, (,), node_id)               \
          |                              ^~~~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_macro.h:418:66: note: in definition of macro 'LISTIFY'
      418 | #define LISTIFY(LEN, F, sep, ...) UTIL_CAT(Z_UTIL_LISTIFY_, LEN)(F, sep, __VA_ARGS__)
          |                                                                  ^
    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);
          | ^~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:173:53: error: expected expression before ',' token
      173 |                              Z_PINCTRL_STATE_INIT, (,), node_id)               \
          |                                                     ^
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_macro.h:418:69: note: in definition of macro 'LISTIFY'
      418 | #define LISTIFY(LEN, F, sep, ...) UTIL_CAT(Z_UTIL_LISTIFY_, LEN)(F, sep, __VA_ARGS__)
          |                                                                     ^~~
    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);
          | ^~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:173:53: warning: left-hand operand of comma expression has no effect [-Wunused-value]
      173 |                              Z_PINCTRL_STATE_INIT, (,), node_id)               \
          |                                                     ^
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_macro.h:418:69: note: in definition of macro 'LISTIFY'
      418 | #define LISTIFY(LEN, F, sep, ...) UTIL_CAT(Z_UTIL_LISTIFY_, LEN)(F, sep, __VA_ARGS__)
          |                                                                     ^~~
    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);
          | ^~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: error: 'DT_N_INST_0_nordic_qspi_nor_BUS' undeclared here (not in a function); did you mean 'DT_N_INST_0_nordic_mbox_nrf_ipc'?
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                                        ^~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_macro.h:418:74: note: in definition of macro 'LISTIFY'
      418 | #define LISTIFY(LEN, F, sep, ...) UTIL_CAT(Z_UTIL_LISTIFY_, LEN)(F, sep, __VA_ARGS__)
          |                                                                          ^~~~~~~~~~~
    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);
          | ^~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3190:25: note: in expansion of macro 'DT_CAT'
     3190 | #define DT_BUS(node_id) DT_CAT(node_id, _BUS)
          |                         ^~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3836:27: note: in expansion of macro 'DT_BUS'
     3836 | #define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
          |                           ^~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:104:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'
      104 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
          |                          ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:31: note: in expansion of macro 'UTIL_CAT'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3248:27: note: in expansion of macro 'DT_INST'
     3248 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3836:34: note: in expansion of macro 'DT_DRV_INST'
     3836 | #define DT_INST_BUS(inst) DT_BUS(DT_DRV_INST(inst))
          |                                  ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:140:19: note: in expansion of macro 'DT_INST_BUS'
      140 | #define QSPI_NODE DT_INST_BUS(0)
          |                   ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1494:19: note: in expansion of macro 'QSPI_NODE'
     1494 | PINCTRL_DT_DEFINE(QSPI_NODE);
          |                   ^~~~~~~~~
    In file included from C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain/gcc.h:92:
    C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:101:17: error: '__pinctrl_dev_config__device_dts_ord_DT_N_INST_0_nordic_qspi_nor_BUS_ORD' undeclared here (not in a function); did you mean '__pinctrl_states__device_dts_ord_DT_N_INST_0_nordic_qspi_nor_BUS_ORD'?
      101 |         _CONCAT(__pinctrl_dev_config, DEVICE_DT_NAME_GET(node_id))
          |                 ^~~~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain/common.h:132:26: note: in definition of macro '_DO_CONCAT'
      132 | #define _DO_CONCAT(x, y) x ## y
          |                          ^
    C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:101:9: note: in expansion of macro '_CONCAT'
      101 |         _CONCAT(__pinctrl_dev_config, DEVICE_DT_NAME_GET(node_id))
          |         ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:262:45: note: in expansion of macro 'Z_PINCTRL_DEV_CONFIG_NAME'
      262 | #define PINCTRL_DT_DEV_CONFIG_GET(node_id) &Z_PINCTRL_DEV_CONFIG_NAME(node_id)
          |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1499:17: note: in expansion of macro 'PINCTRL_DT_DEV_CONFIG_GET'
     1499 |         .pcfg = PINCTRL_DT_DEV_CONFIG_GET(QSPI_NODE),
          |                 ^~~~~~~~~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: error: 'DT_N_INST_0_nordic_qspi_nor_P_address_size_32' undeclared here (not in a function)
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                                        ^~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:4231:29: note: in definition of macro 'DT_CAT3'
     4231 | #define DT_CAT3(a1, a2, a3) a1 ## a2 ## a3
          |                             ^~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:34: note: in expansion of macro 'DT_PROP'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                  ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:104:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'
      104 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
          |                          ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:31: note: in expansion of macro 'UTIL_CAT'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3248:27: note: in expansion of macro 'DT_INST'
     3248 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:42: note: in expansion of macro 'DT_DRV_INST'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                          ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1511:29: note: in expansion of macro 'DT_INST_PROP'
     1511 |                 .addrmode = DT_INST_PROP(0, address_size_32)
          |                             ^~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: error: 'DT_N_INST_0_nordic_qspi_nor_P_sck_delay' undeclared here (not in a function)
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                                        ^~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:4231:29: note: in definition of macro 'DT_CAT3'
     4231 | #define DT_CAT3(a1, a2, a3) a1 ## a2 ## a3
          |                             ^~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:34: note: in expansion of macro 'DT_PROP'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                  ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:104:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'
      104 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
          |                          ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:31: note: in expansion of macro 'UTIL_CAT'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3248:27: note: in expansion of macro 'DT_INST'
     3248 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:42: note: in expansion of macro 'DT_DRV_INST'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                          ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1517:30: note: in expansion of macro 'DT_INST_PROP'
     1517 |                 .sck_delay = DT_INST_PROP(0, sck_delay),
          |                              ^~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: error: 'DT_N_INST_0_nordic_qspi_nor_P_jedec_id' undeclared here (not in a function); did you mean 'DT_N_INST_0_nordic_nrf_qdec'?
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                                        ^~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:4231:29: note: in definition of macro 'DT_CAT3'
     4231 | #define DT_CAT3(a1, a2, a3) a1 ## a2 ## a3
          |                             ^~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:34: note: in expansion of macro 'DT_PROP'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                  ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:104:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'
      104 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
          |                          ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:31: note: in expansion of macro 'UTIL_CAT'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3248:27: note: in expansion of macro 'DT_INST'
     3248 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3450:42: note: in expansion of macro 'DT_DRV_INST'
     3450 | #define DT_INST_PROP(inst, prop) DT_PROP(DT_DRV_INST(inst), prop)
          |                                          ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1522:15: note: in expansion of macro 'DT_INST_PROP'
     1522 |         .id = DT_INST_PROP(0, jedec_id),
          |               ^~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:40: error: 'DT_N_INST_0_nordic_qspi_nor_FULL_NAME' undeclared here (not in a function)
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                                        ^~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/device.h:892:25: note: in definition of macro 'Z_DEVICE_INIT'
      892 |                 .name = name_,                                                 \
          |                         ^~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/device.h:981:9: note: in expansion of macro 'Z_DEVICE_BASE_DEFINE'
      981 |         Z_DEVICE_BASE_DEFINE(node_id, dev_id, name, pm, data, config, level,   \
          |         ^~~~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/device.h:180:9: note: in expansion of macro 'Z_DEVICE_DEFINE'
      180 |         Z_DEVICE_DEFINE(node_id, Z_DEVICE_DT_DEV_ID(node_id),                  \
          |         ^~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:69:53: note: in expansion of macro '__DEBRACKET'
       69 | #define __GET_ARG2_DEBRACKET(ignore_this, val, ...) __DEBRACKET val
          |                                                     ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:64:9: note: in expansion of macro '__GET_ARG2_DEBRACKET'
       64 |         __GET_ARG2_DEBRACKET(one_or_two_args _if_code, _else_code)
          |         ^~~~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:59:9: note: in expansion of macro '__COND_CODE'
       59 |         __COND_CODE(_XXXX##_flag, _if_1_code, _else_code)
          |         ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_macro.h:180:9: note: in expansion of macro 'Z_COND_CODE_1'
      180 |         Z_COND_CODE_1(_flag, _if_1_code, _else_code)
          |         ^~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:777:9: note: in expansion of macro 'COND_CODE_1'
      777 |         COND_CODE_1(DT_NODE_HAS_PROP(node_id, prop), \
          |         ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/device.h:146:9: note: in expansion of macro 'DT_PROP_OR'
      146 |         DT_PROP_OR(node_id, label, DT_NODE_FULL_NAME(node_id))
          |         ^~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:521:36: note: in expansion of macro 'DT_CAT'
      521 | #define DT_NODE_FULL_NAME(node_id) DT_CAT(node_id, _FULL_NAME)
          |                                    ^~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/device.h:146:36: note: in expansion of macro 'DT_NODE_FULL_NAME'
      146 |         DT_PROP_OR(node_id, label, DT_NODE_FULL_NAME(node_id))
          |                                    ^~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/device.h:181:25: note: in expansion of macro 'DEVICE_DT_NAME'
      181 |                         DEVICE_DT_NAME(node_id), init_fn, pm, data, config,    \
          |                         ^~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/device.h:195:9: note: in expansion of macro 'DEVICE_DT_DEFINE'
      195 |         DEVICE_DT_DEFINE(DT_DRV_INST(inst), __VA_ARGS__)
          |         ^~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/sys/util_internal.h:104:26: note: in expansion of macro 'UTIL_PRIMITIVE_CAT'
      104 | #define UTIL_CAT(a, ...) UTIL_PRIMITIVE_CAT(a, __VA_ARGS__)
          |                          ^~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:333:31: note: in expansion of macro 'UTIL_CAT'
      333 | #define DT_INST(inst, compat) UTIL_CAT(DT_N_INST, DT_DASH(inst, compat))
          |                               ^~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/devicetree.h:3248:27: note: in expansion of macro 'DT_INST'
     3248 | #define DT_DRV_INST(inst) DT_INST(inst, DT_DRV_COMPAT)
          |                           ^~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/device.h:195:26: note: in expansion of macro 'DT_DRV_INST'
      195 |         DEVICE_DT_DEFINE(DT_DRV_INST(inst), __VA_ARGS__)
          |                          ^~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/drivers/flash/nrf_qspi_nor.c:1527:1: note: in expansion of macro 'DEVICE_DT_INST_DEFINE'
     1527 | DEVICE_DT_INST_DEFINE(0, qspi_nor_init, PM_DEVICE_DT_INST_GET(0),
          | ^~~~~~~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:110:17: warning: '__pinctrl_states__device_dts_ord_DT_N_INST_0_nordic_qspi_nor_BUS_ORD' defined but not used [-Wunused-const-variable=]
      110 |         _CONCAT(__pinctrl_states, DEVICE_DT_NAME_GET(node_id))
          |                 ^~~~~~~~~~~~~~~~
    C:/ncs/v2.5.2/zephyr/include/zephyr/toolchain/common.h:132:26: note: in definition of macro '_DO_CONCAT'
      132 | #define _DO_CONCAT(x, y) x ## y
          |                          ^
    C:/ncs/v2.5.2/zephyr/include/zephyr/drivers/pinctrl.h:110:9: note: in expansion of macro '_CONCAT'
      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);
          | ^~~~~~~~~~~~~~~~~
    [179/281] Linking C static library zephyr\libzephyr.a
    FAILED: modules/mcuboot/mcuboot_subimage-prefix/src/mcuboot_subimage-stamp/mcuboot_subimage-build mcuboot/zephyr/zephyr.hex mcuboot/zephyr/zephyr.elf 

  • Try to use the JESD216 sample to read our info from your external flash to check that you have configured it correctly and have all fields needed.

    Any reason to why you commented out the dpd fields?

  • Hi, I've tried the JESD216 sample, it successfully printed the result, and according to this, I changed the new sfdp-bfp value.

    But it still got the same error message.

    JESD216 sample

    "Any reason to why you commented out the dpd fields?"

    Because it seems that it doesn't have dpd.

  • Are you able to share your code with me so I can try to reproduce the issue?
    Upload the project as a zip file without the build folder and include instructions to reproduce.

Related