I am getting the following build errors when working with both DFU (MCUboot) and the file system (FAT FS) together.
Errors:
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:533:1: error: return type defaults to 'int' [-Werror=implicit-int]
533 | PM_FOREACH_AFFILIATED_TO_disk(DEFINE_FLASHDISKS_CACHE)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c: In function 'PM_FOREACH_AFFILIATED_TO_disk':
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:572:30: error: storage class specified for parameter 'flash_disks'
572 | static struct flashdisk_data flash_disks[] = {
| ^~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:572:15: error: parameter 'flash_disks' is initialized
572 | static struct flashdisk_data flash_disks[] = {
| ^~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:573:39: error: 'DEFINE_FLASHDISKS_DEVICE' undeclared (first use in this function)
573 | PM_FOREACH_AFFILIATED_TO_disk(DEFINE_FLASHDISKS_DEVICE)
| ^~~~~~~~~~~~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:573:39: note: each undeclared identifier is reported only once for each function it appears in
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:582:1: error: expected declaration specifiers before 'PM_FOREACH_AFFILIATED_TO_disk'
582 | PM_FOREACH_AFFILIATED_TO_disk(VERIFY_CACHE_SIZE_IS_NOT_ZERO_IF_NOT_READ_ONLY)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from D:/ncs/v2.9.0/zephyr/include/zephyr/toolchain/gcc.h:98,
from D:/ncs/v2.9.0/zephyr/include/zephyr/toolchain.h:50,
from D:/ncs/v2.9.0/zephyr/include/zephyr/sys/__assert.h:11,
from D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:10:
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:141:44: error: storage class specified for parameter '__init_disk_flash_init'
141 | #define Z_INIT_ENTRY_NAME(init_id) _CONCAT(__init_, init_id)
| ^~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/toolchain/common.h:137:26: note: in definition of macro '_DO_CONCAT'
137 | #define _DO_CONCAT(x, y) x ## y
| ^
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:141:36: note: in expansion of macro '_CONCAT'
141 | #define Z_INIT_ENTRY_NAME(init_id) _CONCAT(__init_, init_id)
| ^~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:241:17: note: in expansion of macro 'Z_INIT_ENTRY_NAME'
241 | Z_INIT_ENTRY_NAME(name) = {.init_fn = {.sys = (init_fn_)}, \
| ^~~~~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:223:9: note: in expansion of macro 'SYS_INIT_NAMED'
223 | SYS_INIT_NAMED(init_fn, init_fn, level, prio)
| ^~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:612:1: note: in expansion of macro 'SYS_INIT'
612 | SYS_INIT(disk_flash_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
| ^~~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:239:42: error: parameter '__init_disk_flash_init' is initialized
239 | static const Z_DECL_ALIGN(struct init_entry) \
| ^~~~~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/toolchain/common.h:195:55: note: in definition of macro 'Z_DECL_ALIGN'
195 | #define Z_DECL_ALIGN(type) __aligned(__alignof(type)) type
| ^~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:223:9: note: in expansion of macro 'SYS_INIT_NAMED'
223 | SYS_INIT_NAMED(init_fn, init_fn, level, prio)
| ^~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:612:1: note: in expansion of macro 'SYS_INIT'
612 | SYS_INIT(disk_flash_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
| ^~~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:141:44: error: section attribute not allowed for '__init_disk_flash_init'
141 | #define Z_INIT_ENTRY_NAME(init_id) _CONCAT(__init_, init_id)
| ^~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/toolchain/common.h:137:26: note: in definition of macro '_DO_CONCAT'
137 | #define _DO_CONCAT(x, y) x ## y
| ^
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:141:36: note: in expansion of macro '_CONCAT'
141 | #define Z_INIT_ENTRY_NAME(init_id) _CONCAT(__init_, init_id)
| ^~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:241:17: note: in expansion of macro 'Z_INIT_ENTRY_NAME'
241 | Z_INIT_ENTRY_NAME(name) = {.init_fn = {.sys = (init_fn_)}, \
| ^~~~~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:223:9: note: in expansion of macro 'SYS_INIT_NAMED'
223 | SYS_INIT_NAMED(init_fn, init_fn, level, prio)
| ^~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:612:1: note: in expansion of macro 'SYS_INIT'
612 | SYS_INIT(disk_flash_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
| ^~~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:239:42: warning: 'used' attribute ignored [-Wattributes]
239 | static const Z_DECL_ALIGN(struct init_entry) \
| ^~~~~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/toolchain/common.h:195:55: note: in definition of macro 'Z_DECL_ALIGN'
195 | #define Z_DECL_ALIGN(type) __aligned(__alignof(type)) type
| ^~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:223:9: note: in expansion of macro 'SYS_INIT_NAMED'
223 | SYS_INIT_NAMED(init_fn, init_fn, level, prio)
| ^~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:612:1: note: in expansion of macro 'SYS_INIT'
612 | SYS_INIT(disk_flash_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
| ^~~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:141:44: error: alignment may not be specified for '__init_disk_flash_init'
141 | #define Z_INIT_ENTRY_NAME(init_id) _CONCAT(__init_, init_id)
| ^~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/toolchain/common.h:137:26: note: in definition of macro '_DO_CONCAT'
137 | #define _DO_CONCAT(x, y) x ## y
| ^
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:141:36: note: in expansion of macro '_CONCAT'
141 | #define Z_INIT_ENTRY_NAME(init_id) _CONCAT(__init_, init_id)
| ^~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:241:17: note: in expansion of macro 'Z_INIT_ENTRY_NAME'
241 | Z_INIT_ENTRY_NAME(name) = {.init_fn = {.sys = (init_fn_)}, \
| ^~~~~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:223:9: note: in expansion of macro 'SYS_INIT_NAMED'
223 | SYS_INIT_NAMED(init_fn, init_fn, level, prio)
| ^~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:612:1: note: in expansion of macro 'SYS_INIT'
612 | SYS_INIT(disk_flash_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
| ^~~~~~~~
In file included from D:/ncs/v2.9.0/zephyr/include/zephyr/device.h:13,
from D:/ncs/v2.9.0/zephyr/include/zephyr/sw_isr_table.h:18,
from D:/ncs/v2.9.0/zephyr/include/zephyr/arch/arm/irq.h:19,
from D:/ncs/v2.9.0/zephyr/include/zephyr/arch/arm/arch.h:24,
from D:/ncs/v2.9.0/zephyr/include/zephyr/arch/cpu.h:19,
from D:/ncs/v2.9.0/zephyr/include/zephyr/kernel_includes.h:36,
from D:/ncs/v2.9.0/zephyr/include/zephyr/kernel.h:17,
from D:/ncs/v2.9.0/zephyr/include/zephyr/drivers/disk.h:30,
from D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:12:
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:612:10: error: 'disk_flash_init' undeclared (first use in this function)
612 | SYS_INIT(disk_flash_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
| ^~~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:241:64: note: in definition of macro 'SYS_INIT_NAMED'
241 | Z_INIT_ENTRY_NAME(name) = {.init_fn = {.sys = (init_fn_)}, \
| ^~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:612:1: note: in expansion of macro 'SYS_INIT'
612 | SYS_INIT(disk_flash_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
| ^~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:533:1: error: type of 'DEFINE_FLASHDISKS_CACHE' defaults to 'int' [-Werror=implicit-int]
533 | PM_FOREACH_AFFILIATED_TO_disk(DEFINE_FLASHDISKS_CACHE)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:141:44: error: declaration for parameter '__init_disk_flash_init' but no such parameter
141 | #define Z_INIT_ENTRY_NAME(init_id) _CONCAT(__init_, init_id)
| ^~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/toolchain/common.h:137:26: note: in definition of macro '_DO_CONCAT'
137 | #define _DO_CONCAT(x, y) x ## y
| ^
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:141:36: note: in expansion of macro '_CONCAT'
141 | #define Z_INIT_ENTRY_NAME(init_id) _CONCAT(__init_, init_id)
| ^~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:241:17: note: in expansion of macro 'Z_INIT_ENTRY_NAME'
241 | Z_INIT_ENTRY_NAME(name) = {.init_fn = {.sys = (init_fn_)}, \
| ^~~~~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/include/zephyr/init.h:223:9: note: in expansion of macro 'SYS_INIT_NAMED'
223 | SYS_INIT_NAMED(init_fn, init_fn, level, prio)
| ^~~~~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:612:1: note: in expansion of macro 'SYS_INIT'
612 | SYS_INIT(disk_flash_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
| ^~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:572:30: error: declaration for parameter 'flash_disks' but no such parameter
572 | static struct flashdisk_data flash_disks[] = {
| ^~~~~~~~~~~
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:614: error: expected '{' at end of input
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:614: warning: control reaches end of non-void function [-Wreturn-type]
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c: At top level:
D:/ncs/v2.9.0/zephyr/drivers/disk/flashdisk.c:464:37: warning: 'flash_disk_ops' defined but not used [-Wunused-const-variable=]
464 | static const struct disk_operations flash_disk_ops = {
| ^~~~~~~~~~~~~~
=== main.c === /* * Copyright (c) 2012-2014 Wind River Systems, Inc. * * SPDX-License-Identifier: Apache-2.0 */ #include <stdio.h> #include <zephyr/kernel.h> #include <zephyr/device.h> #include <zephyr/drivers/gpio.h> #include <zephyr/bluetooth/bluetooth.h> #include <zephyr/bluetooth/hci.h> #include <zephyr/bluetooth/uuid.h> #include <zephyr/bluetooth/gatt.h> #include <zephyr/bluetooth/gap.h> #include <zephyr/usb/usb_device.h> #include <zephyr/usb/class/usb_dfu.h> #include <zephyr/sys/reboot.h> #include <zephyr/dfu/mcuboot.h> #include <zephyr/logging/log.h> #include <zephyr/fs/fs.h> #include <zephyr/storage/flash_map.h> #include <ff.h> #include <zephyr/drivers/disk.h> #include <zephyr/storage/disk_access.h> uint8_t test_buf[512]; char file_read_buf[64]; static FATFS fat_fs; struct fs_file_t file; struct fs_dirent dirent; struct fs_mount_t fatfs_mnt = { .type = FS_FATFS, .fs_data = &fat_fs, .mnt_point = "/NAND:", .storage_dev = "NAND" }; int ble_start_advertising(void) { struct bt_le_adv_param adv_param = BT_LE_ADV_PARAM_INIT(BT_LE_ADV_OPT_CONNECTABLE | BT_LE_ADV_OPT_USE_IDENTITY, BT_GAP_ADV_FAST_INT_MIN_2, BT_GAP_ADV_FAST_INT_MAX_2, NULL); struct bt_data ad[] = { BT_DATA_BYTES(BT_DATA_FLAGS, BT_LE_AD_NO_BREDR), BT_DATA(BT_DATA_NAME_COMPLETE, "FYZKS_WDS_DFU", sizeof("FYZKS_WDS_DFU") - 1), }; int err = bt_le_adv_start(&adv_param, ad, ARRAY_SIZE(ad), NULL, 0); if (err) { printk("Advertising failed (err %d)\n", err); return err; } printk("Advertising started\n"); return 0; } static void bt_ready(int err) { if (err) { printf("Bluetooth init failed (err %d)\n", err); return; } printf("Bluetooth initialized\n"); } int ble_init(void) { int err; err = bt_enable(bt_ready); if (err) { printf("Bluetooth initialization failed (err %d)\n", err); return err; } printf("Bluetooth initialized\n"); return 0; } int main(void) { int ret ; ret = usb_enable(NULL); if(ret!=0) { printf("usb failed ..\n"); } if (boot_is_img_confirmed()) { printf("Firmware is already confirmed\n"); } else { printf("Firmware update detected, confirming new image\n"); if (boot_write_img_confirmed()) { printf("Failed to confirm new image\n"); } else { printf("New image confirmed successfully\n"); } } // Init BLE ret = ble_init(); if (ret) { printf("Bluetooth enable failed (ret %d)\n", ret); return 0; } // Start advertising ret = ble_start_advertising(); if (ret) { printf("Advertising failed to start (ret %d)\n", ret); return 0; } ret = disk_access_init("NAND"); if (ret != 0) { printf("Disk init failed (%d)\n", ret); } // Get disk status uint32_t sector_count, sector_size; ret = disk_access_ioctl("NAND", DISK_IOCTL_GET_SECTOR_COUNT, §or_count); if (ret == 0) { printf("Sector count: %u,\n", sector_count); } else { printf("Failed to get sector count: %d\n", ret); } ret = disk_access_ioctl("NAND", DISK_IOCTL_GET_SECTOR_SIZE, §or_size); if (ret == 0) { printf("Sector size: %u\n", sector_size); } else { printf("Failed to get sector size: %d\n", ret); } // Try to read first sector to verify disk access ret = disk_access_read("NAND", test_buf, 0, 1); if (ret == 0) { printf("Disk read test successful\n"); } else { printf("Disk read test failed: %d\n", ret); //return 0; } ret = fs_mount(&fatfs_mnt); if (ret < 0) { printf("FATFS mount failed (%d)\n", ret); // Try to format the flash if mount fails printf("Attempting to format...\n"); ret = fs_mkfs(FS_FATFS, "NAND", NULL, 0); if (ret < 0) { printf("Format failed (%d)\n", ret); return 0; } // Try mounting again after format ret = fs_mount(&fatfs_mnt); if (ret < 0) { printf("Mount failed after format (%d)\n", ret); return 0; } } printf("mount successfully....%s\n", fatfs_mnt.mnt_point); fs_file_t_init(&file); if (fs_stat("/NAND:/new_folder", &dirent) != 0) // if directory not exists { fs_mkdir("/NAND:/new_folder"); } if (fs_stat("/NAND:/new_folder/file.txt", &dirent) != 0) // file not exists { ret = fs_open(&file, "/NAND:/new_folder/file.txt", FS_O_CREATE | FS_O_WRITE); if (ret < 0) { printf("Failed to open file for writing: %d\n", ret); return 0; } if(ret == 0) { const char *msg = "Hello abcdefghi..."; fs_write(&file, msg, strlen(msg)); fs_sync(&file); fs_close(&file); ret = fs_open(&file,"/NAND:/new_folder/file.txt", FS_O_READ); if (ret < 0) { printf("Failed to open file for reading: %d\n", ret); } } } else { printf("File already exists, skipping write\n"); } ret = fs_read(&file, file_read_buf, sizeof(file_read_buf) - 1); printf("File content: %s,--%d\n", file_read_buf,ret); fs_close(&file); k_msleep(100); while(1) { printf("Hello World!........\n"); k_msleep(500); } return 0; } === prj.conf === # Use CDC_ACM as console CONFIG_UART_CONSOLE=y CONFIG_STDOUT_CONSOLE=y # ===== CONSOLE SYSTEM ===== CONFIG_CONSOLE=y # Enable the console subsystem CONFIG_SERIAL=y # Enable serial driver support (needed for USB CDC ACM) # ===== USB DEVICE STACK ===== CONFIG_USB_DEVICE_STACK=y # Enable USB device functionality CONFIG_USB_CDC_ACM=y # Enable CDC ACM class (virtual serial port) CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT=y # Start USB immediately when device boots # ===== USB DEVICE IDENTIFICATION ===== CONFIG_USB_DEVICE_PRODUCT="nRF5240 Custom" CONFIG_USB_DEVICE_VID=0x1915 CONFIG_USB_DEVICE_PID=0x521F CONFIG_USB_DEVICE_MANUFACTURER="Custom Board" CONFIG_USB_DEVICE_SN="CONSOLE001" # ===== IMPROVED PRINTF SUPPORT ===== CONFIG_NEWLIB_LIBC=y # Use newlib instead of minimal libc CONFIG_NEWLIB_LIBC_FLOAT_PRINTF=y # Enable floating point printf (optional) # ===== DEBUGGING AND LOGGING ===== CONFIG_LOG=y # Enable logging subsystem # DFU via USB CONFIG_USB_DFU_CLASS=y CONFIG_USB_DFU_WILL_DETACH=y CONFIG_USB_DFU_ENABLE_UPLOAD=y CONFIG_USB_DFU_REBOOT=y # MCUBoot CONFIG_BOOTLOADER_MCUBOOT=y CONFIG_MCUBOOT_IMG_MANAGER=y CONFIG_IMG_MANAGER=y CONFIG_MCUBOOT_BOOTUTIL_LIB=y # Reboot Support CONFIG_REBOOT=y # Required for partitions and DFU to work properly CONFIG_FLASH=y CONFIG_FLASH_MAP=y CONFIG_IMG_ERASE_PROGRESSIVELY=y # ? # Bluetooth + DFU over BLE CONFIG_BT=y CONFIG_BT_PERIPHERAL=y CONFIG_MCUMGR=y #** CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU=y CONFIG_NCS_SAMPLE_MCUMGR_BT_OTA_DFU_SPEEDUP=y # /////////////////// CONFIG_SPI=y CONFIG_NORDIC_QSPI_NOR=y # FAT FS CONFIG_FILE_SYSTEM=y CONFIG_FS_FATFS_LFN=y CONFIG_DISK_ACCESS=y CONFIG_FAT_FILESYSTEM_ELM=y CONFIG_DISK_DRIVER_FLASH=y CONFIG_FS_FATFS_MKFS=y CONFIG_FS_FATFS_MOUNT_MKFS=y CONFIG_FILE_SYSTEM_MKFS=y CONFIG_USB_MASS_STORAGE=y # to open as drive CONFIG_MASS_STORAGE_DISK_NAME="NAND" CONFIG_SETTINGS=y #? === overlay === / { chosen { zephyr,console = &cdc_acm_uart0; zephyr,shell-uart = &cdc_acm_uart0; zephyr,primary-slot = &slot0_partition; zephyr,secondary-slot = &slot1_partition; }; }; &pinctrl { qspi_default: qspi_default { group1 { psels = <NRF_PSEL(QSPI_SCK, 0, 21)>, <NRF_PSEL(QSPI_IO0, 0, 20)>, <NRF_PSEL(QSPI_IO1, 0, 24)>, <NRF_PSEL(QSPI_IO2, 0, 22)>, <NRF_PSEL(QSPI_IO3, 0, 23)>, <NRF_PSEL(QSPI_CSN, 0, 25)>; }; }; qspi_sleep: qspi_sleep { group1 { psels = <NRF_PSEL(QSPI_SCK, 0, 21)>, <NRF_PSEL(QSPI_IO0, 0, 20)>, <NRF_PSEL(QSPI_IO1, 0, 24)>, <NRF_PSEL(QSPI_IO2, 0, 22)>, <NRF_PSEL(QSPI_IO3, 0, 23)>; low-power-enable; }; group2 { psels = <NRF_PSEL(QSPI_CSN, 0, 25)>; low-power-enable; bias-pull-up; }; }; }; &qspi { status = "okay"; pinctrl-0 = <&qspi_default>; pinctrl-1 = <&qspi_sleep>; pinctrl-names = "default", "sleep"; p25q16h: p25q16h@0 { compatible = "nordic,qspi-nor"; reg = <0>; sck-frequency = <104000000>; quad-enable-requirements = "S2B1v1"; jedec-id = [85 60 15]; sfdp-bfp = [ e5 20 f1 ff ff ff ff 00 44 eb 08 6b 08 3b 80 bb ee ff ff ff ff ff 00 ff ff ff 00 ff 0c 20 0f 52 10 d8 08 81 ]; size = <16777216>; //size is in bits has-dpd; t-enter-dpd = <3000>; t-exit-dpd = <8000>; partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; fatfs_part: partition@0 { label = "fatfs"; reg = <0x00000000 0x00200000>; // 2MB }; }; }; }; / { disk0: disk { compatible = "zephyr,flash-disk"; disk-name = "NAND"; partition = <&fatfs_part>; sector-size = <512>; cache-size = <4096>; }; }; &flash0 { partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; boot_partition: partition@0 { label = "mcuboot"; reg = <0x00000000 0x0000C000>; }; slot0_partition: partition@c000 { label = "image-0"; reg = <0x0000C000 0x00076000>; }; slot1_partition: partition@82000 { label = "image-1"; reg = <0x00082000 0x00076000>; }; /* * The flash starting at 0x000f8000 and ending at * 0x000fffff is reserved for use by the application. */ /* * Storage partition will be used by FCB/LittleFS/NVS * if enabled. */ storage_partition: partition@f8000 { label = "storage"; reg = <0x000f8000 0x00008000>; }; }; }; &usbd { status = "okay"; }; &zephyr_udc0 { cdc_acm_uart0: cdc_acm_uart0 { compatible = "zephyr,cdc-acm-uart"; label = "CDC_ACM_0"; }; };