External SPI Flash Memory + File System + NRF 52832

Hi,

I am trying to implement a lightweight file system in my external flash memory (ISSI). After the implementation of file system, I want to store a .bin file and later access the file through c program. I am a beginner in nrf52 board and need some assistance in understanding the implementation method for the above.

  1. I need some direction for implementing file system in nrf52832. I am using the following Software/Hardware tools:
  • nRF52832
  • NRF CONNECT SDK 2.5.1
  • SPI FLash Memory: IS25LP128-JBLE
  • vscode
  • Windows 11 64 bits

       2. I would also like to if I can implement FATFS on the SPI flash memory using the nrf 52832. Is there a link for the lastest version of FAT FS code.

       3. I need some help in understanding if I can use supported files from nrf SDK v 2.5.1 for nrf52832 board? IS there some alteration needed before I upload them to my nrf 52832 board.

Best,

AP

Parents
  • Will this work for nrf 52832 board?

    As I have gone through the document and for external flash : "This type of configuration requires external flash device to be available on DK board. Currently following boards support the configuration: nrf52840dk_nrf52840 by nrf52840dk_nrf52840_qspi configuration." . SInce I have a nrf 52832dk board it does not support this board right?

  • Hi dejans,

    I cannot add "CONFIG_SPI_NOR_SFDP_DEVICETREE=y and CONFIG_FLASH_JESD216_API=y" because the external spi_nor flash issi,is25lp128 doesnit have an SFDP table. Therefore I have avoided these parameters.

    I was able to resolve the errors for littlefs in spi_nor flash memory and flash the files to my device.

    This is my build and flash log to my device:1050370044 (nrf52dk) 

     *  Executing task: nRF Connect: Build: littlefs/build (active) 
    
    Building littlefs
    west build --build-dir c:/Users/prasa/Desktop/nrf52dk/littlefs/build c:/Users/prasa/Desktop/nrf52dk/littlefs
    
    [0/1] Re-running CMake...
    Loading Zephyr default modules (Zephyr base (cached)).
    -- Application: C:/Users/prasa/Desktop/nrf52dk/littlefs
    -- CMake version: 3.20.5
    -- Found Python3: C:/Users/prasa/Desktop/nrf52dk/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:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/.cache
    -- Zephyr version: 3.4.99 (C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr)
    -- Found west (found suitable version "1.1.0", minimum required is "0.14.0")
    -- Board: nrf52dk_nrf52832
    -- Found host-tools: zephyr 0.16.1 (C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk)
    -- Found toolchain: zephyr 0.16.1 (C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk)
    -- Found BOARD.dts: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.dts
    -- Found devicetree overlay: c:/Users/prasa/Desktop/nrf52dk/littlefs/nrf52dk_nrf52832.overlay
    'label' is marked as deprecated in 'properties:' in C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/dts/bindings\mtd\jedec,spi-nor.yaml for node /soc/spi@40023000/IS25LP128@0.
    -- Generated zephyr.dts: C:/Users/prasa/Desktop/nrf52dk/littlefs/build/zephyr/zephyr.dts
    -- Generated devicetree_generated.h: C:/Users/prasa/Desktop/nrf52dk/littlefs/build/zephyr/include/generated/devicetree_generated.h
    -- Including generated dts.cmake file: C:/Users/prasa/Desktop/nrf52dk/littlefs/build/zephyr/dts.cmake
    
    warning: Deprecated symbol SETTINGS_FS is enabled.
    
    Parsing C:/Users/prasa/Desktop/nrf52dk/littlefs/Kconfig
    Loaded configuration 'C:/Users/prasa/Desktop/nrf52dk/littlefs/build/zephyr/.config'
    No change to configuration in 'C:/Users/prasa/Desktop/nrf52dk/littlefs/build/zephyr/.config'
    No change to Kconfig header in 'C:/Users/prasa/Desktop/nrf52dk/littlefs/build/zephyr/include/generated/autoconf.h'
    -- Found Python3: C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/bin/python.exe (found version "3.8.2") found components: Interpreter 
    
    === child image mcuboot -  begin ===
    loading initial cache file C:/Users/prasa/Desktop/nrf52dk/littlefs/build/mcuboot/child_image_preload.cmake
    Loading Zephyr default modules (Zephyr base (cached)).
    -- Application: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/bootloader/mcuboot/boot/zephyr
    -- CMake version: 3.20.5
    -- Cache files will be written to: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/.cache
    -- Zephyr version: 3.4.99 (C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr)
    -- Found west (found suitable version "1.1.0", minimum required is "0.14.0")
    -- Board: nrf52dk_nrf52832
    -- Found host-tools: zephyr 0.16.1 (C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk)
    -- Found toolchain: zephyr 0.16.1 (C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk)
    -- Found BOARD.dts: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.dts
    -- Found devicetree overlay: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/bootloader/mcuboot/boot/zephyr/app.overlay
    -- Generated zephyr.dts: C:/Users/prasa/Desktop/nrf52dk/littlefs/build/mcuboot/zephyr/zephyr.dts
    -- Generated devicetree_generated.h: C:/Users/prasa/Desktop/nrf52dk/littlefs/build/mcuboot/zephyr/include/generated/devicetree_generated.h
    -- Including generated dts.cmake file: C:/Users/prasa/Desktop/nrf52dk/littlefs/build/mcuboot/zephyr/dts.cmake
    Parsing C:/Users/prasa/Desktop/nrf52dk/v2.5.0/bootloader/mcuboot/boot/zephyr/Kconfig
    Loaded configuration 'C:/Users/prasa/Desktop/nrf52dk/littlefs/build/mcuboot/zephyr/.config'
    No change to configuration in 'C:/Users/prasa/Desktop/nrf52dk/littlefs/build/mcuboot/zephyr/.config'
    No change to Kconfig header in 'C:/Users/prasa/Desktop/nrf52dk/littlefs/build/mcuboot/zephyr/include/generated/autoconf.h'
    CMake Warning at C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/CMakeLists.txt:893 (message):
      No SOURCES given to Zephyr library: drivers__spi
    
      Excluding target from build.
    
    
    MCUBoot bootloader key file: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/bootloader/mcuboot/root-rsa-2048.pem
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Users/prasa/Desktop/nrf52dk/littlefs/build/mcuboot
    === child image mcuboot -  end ===
    
    CMake Warning at C:/Users/prasa/Desktop/nrf52dk/v2.5.0/nrf/modules/mcuboot/CMakeLists.txt:320 (message):
      
    
              ---------------------------------------------------------
              --- WARNING: Using default MCUBoot key, it should not ---
              --- be used for production.                           ---
              ---------------------------------------------------------
              
    
    
    
    CMake Warning at C:/Users/prasa/Desktop/nrf52dk/v2.5.0/nrf/cmake/partition_manager.cmake:79 (message):
      
    
              ---------------------------------------------------------------------
              --- WARNING: Using a bootloader without pm_static.yml.            ---
              --- There are cases where a deployed product can consist of       ---
              --- multiple images, and only a subset of these images can be     ---
              --- upgraded through a firmware update mechanism. In such cases,  ---
              --- the upgradable images must have partitions that are static    ---
              --- and are matching the partition map used by the bootloader     ---
              --- programmed onto the device.                                   ---
              ---------------------------------------------------------------------
              
    
    Call Stack (most recent call first):
      C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/cmake/modules/kernel.cmake:247 (include)
      C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/cmake/modules/zephyr_default.cmake:138 (include)
      C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:66 (include)
      C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/share/zephyr-package/cmake/ZephyrConfig.cmake:97 (include_boilerplate)
      CMakeLists.txt:8 (find_package)
    
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Users/prasa/Desktop/nrf52dk/littlefs/build
    [0/149] Performing build step for 'mcuboot_subimage'
    [1/29] Generating misc/generated/syscalls.json, misc/generated/struct_tags.json
    [2/29] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/storage/flash_map/flash_map_layout.c.obj
    [3/29] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/storage/flash_map/flash_map.c.obj
    [4/29] Building C object zephyr/CMakeFiles/zephyr.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/nrf/subsys/partition_manager/flash_map_partition_manager.c.obj
    [5/29] Generating linker_zephyr_pre0.cmd
    [6/29] Building C object zephyr/lib/libc/common/CMakeFiles/lib__libc__common.dir/source/stdlib/malloc.c.obj
    [7/29] Building C object CMakeFiles/app.dir/main.c.obj
    [8/29] Building C object CMakeFiles/app.dir/flash_map_extended.c.obj
    [9/29] Building C object CMakeFiles/app.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/bootloader/mcuboot/boot/bootutil/src/image_validate.c.obj
    [10/29] Building C object CMakeFiles/app.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/bootloader/mcuboot/boot/bootutil/src/tlv.c.obj
    [11/29] Linking C static library zephyr\libzephyr.a
    [12/29] Linking C static library zephyr\lib\libc\common\liblib__libc__common.a
    [13/29] Building C object CMakeFiles/app.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/bootloader/mcuboot/boot/bootutil/src/image_rsa.c.obj
    [14/29] Building C object CMakeFiles/app.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/bootloader/mcuboot/boot/bootutil/src/bootutil_misc.c.obj
    [15/29] Building C object CMakeFiles/app.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/bootloader/mcuboot/boot/bootutil/src/swap_misc.c.obj
    [16/29] Building C object CMakeFiles/app.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/bootloader/mcuboot/boot/bootutil/src/loader.c.obj
    [17/29] Building C object CMakeFiles/app.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/bootloader/mcuboot/boot/bootutil/src/swap_scratch.c.obj
    [18/29] Building C object CMakeFiles/app.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/bootloader/mcuboot/boot/bootutil/src/swap_move.c.obj
    [19/29] Building C object CMakeFiles/app.dir/nrf_cleanup.c.obj
    [20/29] Linking C static library app\libapp.a
    [21/29] Building C object zephyr/soc/soc/arm/common/cortex_m/CMakeFiles/soc__arm__common__cortex_m.dir/arm_mpu_regions.c.obj
    [22/29] Linking C static library zephyr\soc\soc\arm\common\cortex_m\libsoc__arm__common__cortex_m.a
    [23/29] Building C object modules/mcuboot/boot/bootutil/zephyr/CMakeFiles/mcuboot_util.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/bootloader/mcuboot/boot/bootutil/src/bootutil_public.c.obj
    [24/29] Linking C static library modules\mcuboot\boot\bootutil\zephyr\libmcuboot_util.a
    [25/29] Linking C executable zephyr\zephyr_pre0.elf
    [26/29] Generating linker.cmd
    [27/29] Generating isr_tables.c, isrList.bin
    [28/29] Building C object zephyr/CMakeFiles/zephyr_final.dir/isr_tables.c.obj
    [29/29] Linking C executable zephyr\zephyr.elf
    Memory region         Used Size  Region Size  %age Used
               FLASH:       32120 B        48 KB     65.35%
                 RAM:       23744 B        64 KB     36.23%
            IDT_LIST:          0 GB         2 KB      0.00%
    [85/149] Building C object zephyr/drivers/console/CMakeFiles/drivers__console.dir/uart_console.c.obj
    [87/147] Linking C static library zephyr\drivers\console\libdrivers__console.a
    [88/147] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/soc_flash_nrf.c.obj
    [89/147] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/spi_nor.c.obj
    [90/147] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/flash_page_layout.c.obj
    [91/147] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/jesd216.c.obj
    [92/147] Linking C static library zephyr\drivers\flash\libdrivers__flash.a
    [93/147] Building C object zephyr/drivers/pinctrl/CMakeFiles/drivers__pinctrl.dir/pinctrl_nrf.c.obj
    [94/147] Building C object zephyr/drivers/pinctrl/CMakeFiles/drivers__pinctrl.dir/common.c.obj
    [95/147] Linking C static library zephyr\drivers\pinctrl\libdrivers__pinctrl.a
    [96/147] Building C object zephyr/drivers/gpio/CMakeFiles/drivers__gpio.dir/gpio_nrfx.c.obj
    [97/147] Linking C static library zephyr\drivers\gpio\libdrivers__gpio.a
    [98/147] Building C object zephyr/drivers/serial/CMakeFiles/drivers__serial.dir/uart_nrfx_uarte.c.obj
    [99/147] Building C object zephyr/drivers/spi/CMakeFiles/drivers__spi.dir/spi_nrfx_common.c.obj
    [100/147] Linking C static library zephyr\drivers\serial\libdrivers__serial.a
    [101/147] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/sys_clock_init.c.obj
    [102/147] Building C object zephyr/drivers/spi/CMakeFiles/drivers__spi.dir/spi_nrfx_spi.c.obj
    [103/147] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/nrf_rtc_timer.c.obj
    [104/147] Linking C static library zephyr\drivers\spi\libdrivers__spi.a
    [105/147] Building C object modules/segger/CMakeFiles/modules__segger.dir/SEGGER_RTT_zephyr.c.obj
    [106/147] Linking C static library zephyr\drivers\timer\libdrivers__timer.a
    [107/147] Linking C static library modules\segger\libmodules__segger.a
    [108/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/banner.c.obj
    [109/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/main_weak.c.obj
    [110/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/busy_wait.c.obj
    [111/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/init.c.obj
    [112/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mem_slab.c.obj
    [113/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/errno.c.obj
    [114/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/device.c.obj
    [115/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/fatal.c.obj
    [116/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/kheap.c.obj
    [117/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/idle.c.obj
    [118/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/msg_q.c.obj
    [119/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread.c.obj
    [120/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mailbox.c.obj
    [121/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mutex.c.obj
    [122/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/queue.c.obj
    [123/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/system_work_q.c.obj
    [124/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/work.c.obj
    [125/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sem.c.obj
    [126/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sched.c.obj
    [127/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/stack.c.obj
    [128/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/condvar.c.obj
    [129/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/xip.c.obj
    [130/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mempool.c.obj
    [131/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timer.c.obj
    [132/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timeout.c.obj
    [133/147] Building C object zephyr/kernel/CMakeFiles/kernel.dir/dynamic_disabled.c.obj
    [134/147] Linking C static library zephyr\kernel\libkernel.a
    [135/147] Linking C executable zephyr\zephyr_pre0.elf
    [136/147] Generating linker.cmd
    [137/147] Generating isr_tables.c, isrList.bin
    [138/147] Building C object zephyr/CMakeFiles/zephyr_final.dir/isr_tables.c.obj
    [139/147] Linking C executable zephyr\zephyr.elf
    Memory region         Used Size  Region Size  %age Used
               FLASH:       62132 B     237056 B     26.21%
                 RAM:       11372 B        64 KB     17.35%
            IDT_LIST:          0 GB         2 KB      0.00%
    [140/147] Generating zephyr/mcuboot_primary.hex
    [141/147] Generating zephyr/mcuboot_primary_app.hex
    [142/147] Generating ../../zephyr/app_signed.hex
    image.py: sign the payload
    [143/147] Generating ../../zephyr/app_update.bin
    image.py: sign the payload
    [144/147] Generating ../../zephyr/dfu_application.zip
    [145/147] Generating ../../zephyr/app_test_update.hex
    image.py: sign the payload
    [146/147] Generating ../../zephyr/app_moved_test_update.hex
    [147/147] Generating zephyr/merged.hex
     *  Terminal will be reused by tasks, press any key to close it. 
    
     *  Executing task: nRF Connect: Flash: littlefs/build (active) 
    
    Flashing build to 1050370044
    west flash -d c:\Users\prasa\Desktop\nrf52dk\littlefs\build --skip-rebuild --dev-id 1050370044 --erase
    
    -- west flash: using runner nrfjprog
    -- runners.nrfjprog: mass erase requested
    -- runners.nrfjprog: Flashing file: c:\Users\prasa\Desktop\nrf52dk\littlefs\build\zephyr\merged.hex
    [ #################### ]   0.150s | Erase file - Done erasing                                                          
    [ #################### ]   1.724s | Program file - Done programming                                                    
    [ #################### ]   0.639s | Verify file - Done verifying                                                       
    Enabling pin reset.
    Applying pin reset.
    -- runners.nrfjprog: Board with serial number 1050370044 flashed successfully.
     *  Terminal will be reused by tasks, press any key to close it. 


    The external flash memory is not properly connected with my nrf52dk device as I noticed some warning in the above flash log and device log.

    vCOM0 (COM4) log:

    *** Booting nRF Connect SDK v2.5.0 ***
    I: Starting bootloader
    I: Primary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
    I: Secondary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
    I: Boot source: none
    I: Image index: 0, Swap type: none
    I: Bootloader chainload address offset: 0xc000
    �E: Device id 00 00 00 does not match config 9d 60 18
    I: littlefs partition at /lfs1
    I: LittleFS version 2.5, disk version 2.0
    E: can't open flash area 0
    E: fs mount error (-19)
    E: Automount /lfs1 failed: -19
    *** Booting nRF Connect SDK v2.5.0 ***
    Sample program to r/w files on littlefs
    E: FAIL: unable to find flash area 0: -19


    The flash memory was not accessed during this flash. How do I correct this error and connect my external flash to nrf52dk? (the pins are connect to SCK=P0.22,SO=P0.23,SI=P0.24,CE=P0.25)

    MY OVERLAY:

    /delete-node/ &storage_partition;
    
    
    / {
        chosen {
            nordic,pm-ext-flash = &IS25LP128;
        };
    };
    
    
    &spi2 {
        compatible = "nordic,nrf-spi";
    
        status = "okay";
    
        pinctrl-0 = <&spi2_default>;
    
        pinctrl-1 = <&spi2_sleep>;
    
        pinctrl-names = "default", "sleep";
    
        cs-gpios = <&gpio0 25 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
        
        IS25LP128: IS25LP128@0 {
            compatible = "jedec,spi-nor";
            status = "okay";
            label = "25LP128";
            reg = <0>;
            spi-max-frequency = <8000000>; /* Adjust based on your flash specifications */
            size = <0x8000000>; /* Adjust based on your flash size */
            has-dpd;
            t-enter-dpd = <3000>;
            t-exit-dpd = <30000>;
            jedec-id = [ 9D 60 18 ]; /* Adjust based on your flash JEDEC ID */
            //page_size = <2048>;
            //block_size = <131072>;
    
            };
        };
    
    &pinctrl {
        spi2_default: spi2_default {
            group1 {
                psels = <NRF_PSEL(SPIM_SCK, 0, 22)>, /* gpio 0 pin P0.25 */
                        <NRF_PSEL(SPIM_MISO, 0, 24)>, /* gpio 0 pin P0.24 */
                        <NRF_PSEL(SPIM_MOSI, 0, 23)>; /* gpio 0 pin P0.23 */
            };
        };
    
        spi2_sleep: spi2_sleep {
            group1 {
                psels = <NRF_PSEL(SPIM_SCK, 0, 22)>, /* gpio 0 pin P0.25 */
                        <NRF_PSEL(SPIM_MISO, 0, 24)>, /* gpio 0 pin P0.24 */
                        <NRF_PSEL(SPIM_MOSI, 0, 23)>; /* gpio 0 pin P0.23 */
            };
        };
    };
    
    
    &IS25LP128 {
        partitions {
    		compatible = "fixed-partitions";
    		#address-cells = <1>;
    		#size-cells = <1>;
    
    		lfs1_part: partition@0 {
    			label = "storage";
    			reg = <0x00000000 0x00800000>;
    		};
    	};
    };
    / {
    	fstab {
    		compatible = "zephyr,fstab";
    		lfs1: lfs1 {
    			compatible = "zephyr,fstab,littlefs";
    			mount-point = "/lfs1";
    			partition = <&lfs1_part>;
    			automount;
    			read-size = <16>;
    			prog-size = <16>;
    			cache-size = <64>;
    			lookahead-size = <32>;
    			block-cycles = <512>;
    		};
    	};
    };
    /delete-node/ &{/pin-controller/pwm0_default/group1/};
    /delete-node/ &{/pin-controller/pwm0_sleep/group1/};
    


    Best regards,

    Aditi Prasad

  • Hi,

    Could you connect your pins SCK=P0.22, SO=P0.23, SI=P0.24 and CE=P0.25 to the logic analyzer and provide logic trace?

    Best regards,
    Dejan

  • Hi,

    At the moment I do not have access to a logic analyzer but I will try to aquire one. Meanwhile I was checking if my flash memory connection directly to the microcontroller could cause some error?

    As there is no resistors attached to the spi pins but as far I have seen in the flash memory a voltage range of 1.7v to 3.6v of the microcontroller should be enough to function the spi pins of the flash (https://www.mouser.de/datasheet/2/198/IS25LP032-064-128-463542.pdf). 

    Should I connect the HOLD and RESET pins to P0.11, P0.12 resp or conenct them to VDD here.

    This is the connection I have right now.
       

    Best regards,

    Aditi Prasad

  • Hi,

    There should be no need for additional resistors. It should also be fine to connect flash directly to the SoC. Regarding the pins, you could connect them directly to VDD.

    Best regards,
    Dejan

  • Hi Dejan,

    This is my logic trace for the pins SCK=P0.22=Channel7, SO=P0.23=Channel3, SI=P0.24=channel5 and CE=P0.25=channel1



    My prj.conf :

    # Optionally force the file system to be recreated
    CONFIG_APP_WIPE_STORAGE=y
    
    # fs_dirent structures are big.
    CONFIG_MAIN_STACK_SIZE=4096
    
    # Let __ASSERT do its job
    CONFIG_DEBUG=y
    
    CONFIG_LOG=y
    CONFIG_LOG_MODE_MINIMAL=y
    
    CONFIG_FLASH=y
    CONFIG_FLASH_MAP=y
    CONFIG_FLASH_PAGE_LAYOUT=y
    
    CONFIG_FILE_SYSTEM=y
    CONFIG_FILE_SYSTEM_LITTLEFS=y
    
    # CONFIG_SETTINGS=y
    # CONFIG_SETTINGS_FILE=y
    # CONFIG_SETTINGS_FILE_PATH="/lfs/settings/run"
    
    CONFIG_SPI=y
    CONFIG_SPI_NOR=y
    CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096
    
    CONFIG_PM_PARTITION_REGION_LITTLEFS_EXTERNAL=y
    
    CONFIG_PARTITION_MANAGER_ENABLED=y
    # CONFIG_BOOTLOADER_MCUBOOT=y
    
    CONFIG_SETTINGS=y
    CONFIG_SETTINGS_FS=y
    CONFIG_SETTINGS_FILE=y
    # CONFIG_SETTINGS_FS_DIR="/lfs/settings"
    #CONFIG_SETTINGS_FS_FILE="/lfs/settings/run"
    #CONFIG_SETTINGS_FILE_PATH="/lfs/settings/run"
    CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY=n
    
    CONFIG_PM_PARTITION_REGION_SETTINGS_STORAGE_EXTERNAL=y
    #CONFIG_PM_PARTITION_REGION_NVS_STORAGE_EXTERNAL=y
    CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y
    CONFIG_SETTINGS_NVS=y
    CONFIG_NVS=y
    

    My overlay file:

    /delete-node/ &storage_partition;
    
    
    / {
        chosen {
            nordic,pm-ext-flash = &IS25LP128;
        };
    };
    
    / {
    	fstab {
    		compatible = "zephyr,fstab";
    		lfs1: lfs1 {
    			compatible = "zephyr,fstab,littlefs";
    			mount-point = "/lfs1";
    			partition = <&lfs1_part>;
    			automount;
    			read-size = <16>;
    			prog-size = <16>;
    			cache-size = <64>;
    			lookahead-size = <32>;
    			block-cycles = <512>;
    		};
    	};
    };
    
    &spi2 {
        compatible = "nordic,nrf-spi";
        status = "okay";
        pinctrl-0 = <&spi2_default>;
        pinctrl-1 = <&spi2_sleep>;
        pinctrl-names = "default", "sleep";
        cs-gpios = <&gpio0 22 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;   
        IS25LP128: IS25LP128@0 {
            compatible = "jedec,spi-nor";
            status = "okay";
            label = "25LP128";
            reg = <0>;
            spi-max-frequency = <8000000>; /* Adjust based on your flash specifications */
            size = <0x8000000>; /* Adjust based on your flash size */
            has-dpd;
            t-enter-dpd = <3000>;
            t-exit-dpd = <30000>;
            jedec-id = [ 9D 60 18 ]; /* Adjust based on your flash JEDEC ID */
            //page_size = <2048>;
            //block_size = <131072>;
            };
        };
    
    &pinctrl {
        spi2_default: spi2_default {
            group1 {
                psels = <NRF_PSEL(SPIM_SCK, 0, 25)>, /* gpio 0 pin P0.25 */
                        <NRF_PSEL(SPIM_MISO, 0, 24)>, /* gpio 0 pin P0.24 */
                        <NRF_PSEL(SPIM_MOSI, 0, 23)>; /* gpio 0 pin P0.23 */
            };
        };
    
        spi2_sleep: spi2_sleep {
            group1 {
                psels = <NRF_PSEL(SPIM_SCK, 0, 25)>, /* gpio 0 pin P0.25 */
                        <NRF_PSEL(SPIM_MISO, 0, 24)>, /* gpio 0 pin P0.24 */
                        <NRF_PSEL(SPIM_MOSI, 0, 23)>; /* gpio 0 pin P0.23 */
            };
        };
    };
    
    
    &IS25LP128 {
        partitions {
    		compatible = "fixed-partitions";
    		#address-cells = <1>;
    		#size-cells = <1>;
    
    		lfs1_part: partition@0 {
    			label = "storage";
    			reg = <0x00000000 0x00200000>;
    		};
    	};
    };
    
    &i2c0 {
    	status = "disabled";
    };
    &i2c1 {
    	status = "disabled";
    };
    &spi1 {
    	status = "disabled";
    };
    &spi0 {
    	status = "disabled";
    };
    
    &uart0 {
    	status = "disabled";
    };
    &flash0{
        status = "disabled";
    };
    &led0 {
    	status = "disabled";
    };
    &led1 {
    	status = "disabled";
    };
    &led2 {
    	status = "disabled";
    };
    &led3 {
    	status = "disabled";
    };
    &pwm_led0 {
    	status = "disabled";
    };
    &button0 {
    	status = "disabled";
    };
    &button1 {
    	status = "disabled";
    };
    &button2 {
    	status = "disabled";
    };
    &button3 {
    	status = "disabled";
    };
    /*
    &arduino_header {
    	status = "disabled";
    };
    */
    


    My dts file:

    /*
     * Copyright (c) 2017 Shawn Nock <[email protected]>
     * Copyright (c) 2017 Linaro Limited
     *
     * SPDX-License-Identifier: Apache-2.0
     */
    
    /dts-v1/;
    #include <nordic/nrf52832_qfaa.dtsi>
    #include "nrf52dk_nrf52832-pinctrl.dtsi"
    #include <zephyr/dt-bindings/input/input-event-codes.h>
    
    / {
    	model = "Nordic nRF52 DK NRF52832";
    	compatible = "nrf52-dk-nrf5283nordic,2"; 
    
    	chosen {
    		zephyr,console = &uart0;
    		zephyr,shell-uart = &uart0;
    		zephyr,uart-mcumgr = &uart0;
    		zephyr,bt-mon-uart = &uart0;
    		zephyr,bt-c2h-uart = &uart0;
    		zephyr,sram = &sram0;
    		zephyr,flash = &flash0;
    		zephyr,code-partition = &slot0_partition;
    	};
    
    	leds {
    		compatible = "gpio-leds";
    		led0: led_0 {
    			gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
    			label = "Green LED 0";
    		};
    		led1: led_1 {
    			gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
    			label = "Green LED 1";
    		};
    		led2: led_2 {
    			gpios = <&gpio0 19 GPIO_ACTIVE_LOW>;
    			label = "Green LED 2";
    		};
    		led3: led_3 {
    			gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
    			label = "Green LED 3";
    		};
    	};
    
    	pwmleds {
    		compatible = "pwm-leds";
    		pwm_led0: pwm_led_0 {
    			pwms = <&pwm0 0 PWM_MSEC(20) PWM_POLARITY_INVERTED>;
    		};
    	};
    
    	buttons {
    		compatible = "gpio-keys";
    		button0: button_0 {
    			gpios = <&gpio0 13 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Push button switch 0";
    			zephyr,code = <INPUT_KEY_0>;
    		};
    		button1: button_1 {
    			gpios = <&gpio0 14 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Push button switch 1";
    			zephyr,code = <INPUT_KEY_1>;
    		};
    		button2: button_2 {
    			gpios = <&gpio0 15 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Push button switch 2";
    			zephyr,code = <INPUT_KEY_2>;
    		};
    		button3: button_3 {
    			gpios = <&gpio0 16 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Push button switch 3";
    			zephyr,code = <INPUT_KEY_3>;
    		};
    	};
    
    	arduino_header: connector {
    		compatible = "arduino-header-r3";
    		#gpio-cells = <2>;
    		gpio-map-mask = <0xffffffff 0xffffffc0>;
    		gpio-map-pass-thru = <0 0x3f>;
    		gpio-map = <0 0 &gpio0 3 0>,	/* A0 */
    			   <1 0 &gpio0 4 0>,	/* A1 */
    			   <2 0 &gpio0 28 0>,	/* A2 */
    			   <3 0 &gpio0 29 0>,	/* A3 */
    			   <4 0 &gpio0 30 0>,	/* A4 */
    			   <5 0 &gpio0 31 0>,	/* A5 */
    			   <6 0 &gpio0 11 0>,	/* D0 */
    			   <7 0 &gpio0 12 0>,	/* D1 */
    			   <8 0 &gpio0 13 0>,	/* D2 */
    			   <9 0 &gpio0 14 0>,	/* D3 */
    			   <10 0 &gpio0 15 0>,	/* D4 */
    			   <11 0 &gpio0 16 0>,	/* D5 */
    			   <12 0 &gpio0 17 0>,	/* D6 */
    			   <13 0 &gpio0 18 0>,	/* D7 */
    			   <14 0 &gpio0 19 0>,	/* D8 */
    			   <15 0 &gpio0 20 0>,	/* D9 */
    			   <16 0 &gpio0 22 0>,	/* D10 */
    			   <17 0 &gpio0 23 0>,	/* D11 */
    			   <18 0 &gpio0 24 0>,	/* D12 */
    			   <19 0 &gpio0 25 0>,	/* D13 */
    			   <20 0 &gpio0 26 0>,	/* D14 */
    			   <21 0 &gpio0 27 0>;	/* D15 */
    	};
    
    	arduino_adc: analog-connector {
    		compatible = "arduino,uno-adc";
    		#io-channel-cells = <1>;
    		io-channel-map = <0 &adc 1>,	/* A0 = P0.3 = AIN1 */
    				 <1 &adc 2>,	/* A1 = P0.4 = AIN2 */
    				 <2 &adc 4>,	/* A2 = P0.28 = AIN4 */
    				 <3 &adc 5>,	/* A3 = P0.29 = AIN5 */
    				 <4 &adc 6>,	/* A4 = P0.30 = AIN6 */
    				 <5 &adc 7>;	/* A5 = P0.31 = AIN7 */
    	};
    
    	/* These aliases are provided for compatibility with samples */
    	aliases {
    		led0 = &led0;
    		led1 = &led1;
    		led2 = &led2;
    		led3 = &led3;
    		pwm-led0 = &pwm_led0;
    		sw0 = &button0;
    		sw1 = &button1;
    		sw2 = &button2;
    		sw3 = &button3;
    		bootloader-led0 = &led0;
    		mcuboot-button0 = &button0;
    		mcuboot-led0 = &led0;
    		watchdog0 = &wdt0;
    	};
    };
    
    &adc {
    	status = "okay";
    };
    
    &uicr {
    	gpio-as-nreset;
    };
    
    &gpiote {
    	status = "okay";
    };
    
    &gpio0 {
    	status = "okay";
    };
    
    arduino_serial: &uart0 {
    	status = "okay";
    	compatible = "nordic,nrf-uarte";
    	current-speed = <115200>;
    	pinctrl-0 = <&uart0_default>;
    	pinctrl-1 = <&uart0_sleep>;
    	pinctrl-names = "default", "sleep";
    };
    
    arduino_i2c: &i2c0 {
    	compatible = "nordic,nrf-twi";
    	status = "okay";
    	pinctrl-0 = <&i2c0_default>;
    	pinctrl-1 = <&i2c0_sleep>;
    	pinctrl-names = "default", "sleep";
    };
    
    &i2c1 {
    	compatible = "nordic,nrf-twi";
    	/* Cannot be used together with spi1. */
    	/* status = "okay"; */
    	pinctrl-0 = <&i2c1_default>;
    	pinctrl-1 = <&i2c1_sleep>;
    	pinctrl-names = "default", "sleep";
    };
    
    &pwm0 {
    	status = "okay";
    	pinctrl-0 = <&pwm0_default>;
    	pinctrl-1 = <&pwm0_sleep>;
    	pinctrl-names = "default", "sleep";
    };
    
    &spi0 {
    	compatible = "nordic,nrf-spi";
    	/* Cannot be used together with i2c0. */
    	/* status = "okay"; */
    	pinctrl-0 = <&spi0_default>;
    	pinctrl-1 = <&spi0_sleep>;
    	pinctrl-names = "default", "sleep";
    };
    
    &spi1 {
    	compatible = "nordic,nrf-spi";
    	status = "okay";
    	pinctrl-0 = <&spi1_default>;
    	pinctrl-1 = <&spi1_sleep>;
    	pinctrl-names = "default", "sleep";
    };
    
    arduino_spi: &spi2 {
    	compatible = "nordic,nrf-spi";
    	status = "okay";
    	cs-gpios = <&arduino_header 16 GPIO_ACTIVE_LOW>, /* D10 */
    				<&gpio0 25 GPIO_ACTIVE_LOW>; /* D10 */
    	pinctrl-0 = <&spi2_default>;
    	pinctrl-1 = <&spi2_sleep>;
    	pinctrl-names = "default", "sleep";
        };
    
    &flash0 {
    
    	partitions {
    		compatible = "fixed-partitions";
    		#address-cells = <1>;
    		#size-cells = <1>;
    
    		boot_partition: partition@0 {
    			label = "mcuboot";
    			reg = <0x00000000 0xc000>;
    		};
    		slot0_partition: partition@c000 {
    			label = "image-0";
    			reg = <0x0000C000 0x37000>;
    		};
    		slot1_partition: partition@43000 {
    			label = "image-1";
    			reg = <0x00043000 0x37000>;
    		};
    		storage_partition: partition@7a000 {
    			label = "storage";
    			reg = <0x0007a000 0x00006000>;
    		};
    	};
    };
    

    My build log:

     *  Executing task: nRF Connect: Build [pristine]: little_fs/build (active) 
    
    Building little_fs
    west build --build-dir c:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build c:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs --pristine --board nrf52dk_nrf52832 --no-sysbuild -- -DNCS_TOOLCHAIN_VERSION=NONE -DBOARD_ROOT=c:/users/prasa/desktop/nrf52dk/v2.5.0/little_fs;c:/users/prasa/desktop/nrf52dk/littlefs -DCONF_FILE=c:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/prj.conf -DDTC_OVERLAY_FILE=c:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/nrf52dk_nrf52832.overlay
    
    -- west build: generating a build system
    Loading Zephyr default modules (Zephyr base).
    -- Application: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs
    -- CMake version: 3.20.5
    -- Found Python3: C:/Users/prasa/Desktop/nrf52dk/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:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/.cache
    -- Zephyr version: 3.4.99 (C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr)
     *  Terminal will be reused by tasks, press any key to close it. 
    
     *  Executing task: nRF Connect: Generate config nrf52dk_nrf52832 for c:\Users\prasa\Desktop\nrf52dk\v2.5.0\little_fs 
    
    Building little_fs
    west build --build-dir c:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1 c:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs --pristine --board nrf52dk_nrf52832 --no-sysbuild -- -DNCS_TOOLCHAIN_VERSION=NONE -DBOARD_ROOT=c:/users/prasa/desktop/nrf52dk/v2.5.0/little_fs
    
    -- west build: generating a build system
    Loading Zephyr default modules (Zephyr base).
    -- Application: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs
    -- CMake version: 3.20.5
    -- Found Python3: C:/Users/prasa/Desktop/nrf52dk/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:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/.cache
    -- Zephyr version: 3.4.99 (C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr)
    -- Found west (found suitable version "1.1.0", minimum required is "0.14.0")
    -- Board: nrf52dk_nrf52832
    -- Found host-tools: zephyr 0.16.1 (C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk)
    -- Found toolchain: zephyr 0.16.1 (C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk)
    -- Found Dtc: C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6") 
    -- Found BOARD.dts: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.dts
    -- Found devicetree overlay: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/nrf52dk_nrf52832.overlay
    'label' is marked as deprecated in 'properties:' in C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/dts/bindings\mtd\jedec,spi-nor.yaml for node /soc/spi@40023000/IS25LP128@0.
    -- Generated zephyr.dts: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1/zephyr/zephyr.dts
    -- Generated devicetree_generated.h: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1/zephyr/include/generated/devicetree_generated.h
    -- Including generated dts.cmake file: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1/zephyr/dts.cmake
    
    warning: UART_CONSOLE (defined at drivers/console/Kconfig:43) was assigned the value 'y' but got the
    value 'n'. Check these unsatisfied dependencies: SERIAL_HAS_DRIVER (=n). See
    http://docs.zephyrproject.org/latest/kconfig.html#CONFIG_UART_CONSOLE and/or look up UART_CONSOLE 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.
    
    Parsing C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/Kconfig
    Loaded configuration 'C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832_defconfig'
    Merged configuration 'C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/prj.conf'
    Configuration saved to 'C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1/zephyr/.config'
    Kconfig header saved to 'C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1/zephyr/include/generated/autoconf.h'
    -- Found GnuLd: c:/users/prasa/desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd.exe (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: C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc.exe
    CMake Warning at C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/CMakeLists.txt:893 (message):
      No SOURCES given to Zephyr library: drivers__console
    
      Excluding target from build.
    
    
    CMake Warning at C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/CMakeLists.txt:893 (message):
      No SOURCES given to Zephyr library: drivers__serial
    
      Excluding target from build.
    
    
    -- Found partition manager static configuration: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/pm_static.yml
    Partition 'littlefs_storage' is not included in the dynamic resolving since it is statically defined.
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1
    -- west build: building application
    [2/161] Generating include/generated/version.h
    -- Zephyr version: 3.4.99 (C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr), build: v3.4.99-ncs1
    [160/161] Linking C executable zephyr\zephyr.elf
    Memory region         Used Size  Region Size  %age Used
               FLASH:       59984 B       512 KB     11.44%
                 RAM:       11180 B        64 KB     17.06%
            IDT_LIST:          0 GB         2 KB      0.00%
    [161/161] Generating zephyr/merged.hex
     *  Terminal will be reused by tasks, press any key to close it. 


    I am no longer getting a flash result in my com4 port.

    Best regards,

    Aditi Prasad

Reply
  • Hi Dejan,

    This is my logic trace for the pins SCK=P0.22=Channel7, SO=P0.23=Channel3, SI=P0.24=channel5 and CE=P0.25=channel1



    My prj.conf :

    # Optionally force the file system to be recreated
    CONFIG_APP_WIPE_STORAGE=y
    
    # fs_dirent structures are big.
    CONFIG_MAIN_STACK_SIZE=4096
    
    # Let __ASSERT do its job
    CONFIG_DEBUG=y
    
    CONFIG_LOG=y
    CONFIG_LOG_MODE_MINIMAL=y
    
    CONFIG_FLASH=y
    CONFIG_FLASH_MAP=y
    CONFIG_FLASH_PAGE_LAYOUT=y
    
    CONFIG_FILE_SYSTEM=y
    CONFIG_FILE_SYSTEM_LITTLEFS=y
    
    # CONFIG_SETTINGS=y
    # CONFIG_SETTINGS_FILE=y
    # CONFIG_SETTINGS_FILE_PATH="/lfs/settings/run"
    
    CONFIG_SPI=y
    CONFIG_SPI_NOR=y
    CONFIG_SPI_NOR_FLASH_LAYOUT_PAGE_SIZE=4096
    
    CONFIG_PM_PARTITION_REGION_LITTLEFS_EXTERNAL=y
    
    CONFIG_PARTITION_MANAGER_ENABLED=y
    # CONFIG_BOOTLOADER_MCUBOOT=y
    
    CONFIG_SETTINGS=y
    CONFIG_SETTINGS_FS=y
    CONFIG_SETTINGS_FILE=y
    # CONFIG_SETTINGS_FS_DIR="/lfs/settings"
    #CONFIG_SETTINGS_FS_FILE="/lfs/settings/run"
    #CONFIG_SETTINGS_FILE_PATH="/lfs/settings/run"
    CONFIG_PM_EXTERNAL_FLASH_MCUBOOT_SECONDARY=n
    
    CONFIG_PM_PARTITION_REGION_SETTINGS_STORAGE_EXTERNAL=y
    #CONFIG_PM_PARTITION_REGION_NVS_STORAGE_EXTERNAL=y
    CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y
    CONFIG_SETTINGS_NVS=y
    CONFIG_NVS=y
    

    My overlay file:

    /delete-node/ &storage_partition;
    
    
    / {
        chosen {
            nordic,pm-ext-flash = &IS25LP128;
        };
    };
    
    / {
    	fstab {
    		compatible = "zephyr,fstab";
    		lfs1: lfs1 {
    			compatible = "zephyr,fstab,littlefs";
    			mount-point = "/lfs1";
    			partition = <&lfs1_part>;
    			automount;
    			read-size = <16>;
    			prog-size = <16>;
    			cache-size = <64>;
    			lookahead-size = <32>;
    			block-cycles = <512>;
    		};
    	};
    };
    
    &spi2 {
        compatible = "nordic,nrf-spi";
        status = "okay";
        pinctrl-0 = <&spi2_default>;
        pinctrl-1 = <&spi2_sleep>;
        pinctrl-names = "default", "sleep";
        cs-gpios = <&gpio0 22 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;   
        IS25LP128: IS25LP128@0 {
            compatible = "jedec,spi-nor";
            status = "okay";
            label = "25LP128";
            reg = <0>;
            spi-max-frequency = <8000000>; /* Adjust based on your flash specifications */
            size = <0x8000000>; /* Adjust based on your flash size */
            has-dpd;
            t-enter-dpd = <3000>;
            t-exit-dpd = <30000>;
            jedec-id = [ 9D 60 18 ]; /* Adjust based on your flash JEDEC ID */
            //page_size = <2048>;
            //block_size = <131072>;
            };
        };
    
    &pinctrl {
        spi2_default: spi2_default {
            group1 {
                psels = <NRF_PSEL(SPIM_SCK, 0, 25)>, /* gpio 0 pin P0.25 */
                        <NRF_PSEL(SPIM_MISO, 0, 24)>, /* gpio 0 pin P0.24 */
                        <NRF_PSEL(SPIM_MOSI, 0, 23)>; /* gpio 0 pin P0.23 */
            };
        };
    
        spi2_sleep: spi2_sleep {
            group1 {
                psels = <NRF_PSEL(SPIM_SCK, 0, 25)>, /* gpio 0 pin P0.25 */
                        <NRF_PSEL(SPIM_MISO, 0, 24)>, /* gpio 0 pin P0.24 */
                        <NRF_PSEL(SPIM_MOSI, 0, 23)>; /* gpio 0 pin P0.23 */
            };
        };
    };
    
    
    &IS25LP128 {
        partitions {
    		compatible = "fixed-partitions";
    		#address-cells = <1>;
    		#size-cells = <1>;
    
    		lfs1_part: partition@0 {
    			label = "storage";
    			reg = <0x00000000 0x00200000>;
    		};
    	};
    };
    
    &i2c0 {
    	status = "disabled";
    };
    &i2c1 {
    	status = "disabled";
    };
    &spi1 {
    	status = "disabled";
    };
    &spi0 {
    	status = "disabled";
    };
    
    &uart0 {
    	status = "disabled";
    };
    &flash0{
        status = "disabled";
    };
    &led0 {
    	status = "disabled";
    };
    &led1 {
    	status = "disabled";
    };
    &led2 {
    	status = "disabled";
    };
    &led3 {
    	status = "disabled";
    };
    &pwm_led0 {
    	status = "disabled";
    };
    &button0 {
    	status = "disabled";
    };
    &button1 {
    	status = "disabled";
    };
    &button2 {
    	status = "disabled";
    };
    &button3 {
    	status = "disabled";
    };
    /*
    &arduino_header {
    	status = "disabled";
    };
    */
    


    My dts file:

    /*
     * Copyright (c) 2017 Shawn Nock <[email protected]>
     * Copyright (c) 2017 Linaro Limited
     *
     * SPDX-License-Identifier: Apache-2.0
     */
    
    /dts-v1/;
    #include <nordic/nrf52832_qfaa.dtsi>
    #include "nrf52dk_nrf52832-pinctrl.dtsi"
    #include <zephyr/dt-bindings/input/input-event-codes.h>
    
    / {
    	model = "Nordic nRF52 DK NRF52832";
    	compatible = "nrf52-dk-nrf5283nordic,2"; 
    
    	chosen {
    		zephyr,console = &uart0;
    		zephyr,shell-uart = &uart0;
    		zephyr,uart-mcumgr = &uart0;
    		zephyr,bt-mon-uart = &uart0;
    		zephyr,bt-c2h-uart = &uart0;
    		zephyr,sram = &sram0;
    		zephyr,flash = &flash0;
    		zephyr,code-partition = &slot0_partition;
    	};
    
    	leds {
    		compatible = "gpio-leds";
    		led0: led_0 {
    			gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
    			label = "Green LED 0";
    		};
    		led1: led_1 {
    			gpios = <&gpio0 18 GPIO_ACTIVE_LOW>;
    			label = "Green LED 1";
    		};
    		led2: led_2 {
    			gpios = <&gpio0 19 GPIO_ACTIVE_LOW>;
    			label = "Green LED 2";
    		};
    		led3: led_3 {
    			gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
    			label = "Green LED 3";
    		};
    	};
    
    	pwmleds {
    		compatible = "pwm-leds";
    		pwm_led0: pwm_led_0 {
    			pwms = <&pwm0 0 PWM_MSEC(20) PWM_POLARITY_INVERTED>;
    		};
    	};
    
    	buttons {
    		compatible = "gpio-keys";
    		button0: button_0 {
    			gpios = <&gpio0 13 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Push button switch 0";
    			zephyr,code = <INPUT_KEY_0>;
    		};
    		button1: button_1 {
    			gpios = <&gpio0 14 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Push button switch 1";
    			zephyr,code = <INPUT_KEY_1>;
    		};
    		button2: button_2 {
    			gpios = <&gpio0 15 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Push button switch 2";
    			zephyr,code = <INPUT_KEY_2>;
    		};
    		button3: button_3 {
    			gpios = <&gpio0 16 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
    			label = "Push button switch 3";
    			zephyr,code = <INPUT_KEY_3>;
    		};
    	};
    
    	arduino_header: connector {
    		compatible = "arduino-header-r3";
    		#gpio-cells = <2>;
    		gpio-map-mask = <0xffffffff 0xffffffc0>;
    		gpio-map-pass-thru = <0 0x3f>;
    		gpio-map = <0 0 &gpio0 3 0>,	/* A0 */
    			   <1 0 &gpio0 4 0>,	/* A1 */
    			   <2 0 &gpio0 28 0>,	/* A2 */
    			   <3 0 &gpio0 29 0>,	/* A3 */
    			   <4 0 &gpio0 30 0>,	/* A4 */
    			   <5 0 &gpio0 31 0>,	/* A5 */
    			   <6 0 &gpio0 11 0>,	/* D0 */
    			   <7 0 &gpio0 12 0>,	/* D1 */
    			   <8 0 &gpio0 13 0>,	/* D2 */
    			   <9 0 &gpio0 14 0>,	/* D3 */
    			   <10 0 &gpio0 15 0>,	/* D4 */
    			   <11 0 &gpio0 16 0>,	/* D5 */
    			   <12 0 &gpio0 17 0>,	/* D6 */
    			   <13 0 &gpio0 18 0>,	/* D7 */
    			   <14 0 &gpio0 19 0>,	/* D8 */
    			   <15 0 &gpio0 20 0>,	/* D9 */
    			   <16 0 &gpio0 22 0>,	/* D10 */
    			   <17 0 &gpio0 23 0>,	/* D11 */
    			   <18 0 &gpio0 24 0>,	/* D12 */
    			   <19 0 &gpio0 25 0>,	/* D13 */
    			   <20 0 &gpio0 26 0>,	/* D14 */
    			   <21 0 &gpio0 27 0>;	/* D15 */
    	};
    
    	arduino_adc: analog-connector {
    		compatible = "arduino,uno-adc";
    		#io-channel-cells = <1>;
    		io-channel-map = <0 &adc 1>,	/* A0 = P0.3 = AIN1 */
    				 <1 &adc 2>,	/* A1 = P0.4 = AIN2 */
    				 <2 &adc 4>,	/* A2 = P0.28 = AIN4 */
    				 <3 &adc 5>,	/* A3 = P0.29 = AIN5 */
    				 <4 &adc 6>,	/* A4 = P0.30 = AIN6 */
    				 <5 &adc 7>;	/* A5 = P0.31 = AIN7 */
    	};
    
    	/* These aliases are provided for compatibility with samples */
    	aliases {
    		led0 = &led0;
    		led1 = &led1;
    		led2 = &led2;
    		led3 = &led3;
    		pwm-led0 = &pwm_led0;
    		sw0 = &button0;
    		sw1 = &button1;
    		sw2 = &button2;
    		sw3 = &button3;
    		bootloader-led0 = &led0;
    		mcuboot-button0 = &button0;
    		mcuboot-led0 = &led0;
    		watchdog0 = &wdt0;
    	};
    };
    
    &adc {
    	status = "okay";
    };
    
    &uicr {
    	gpio-as-nreset;
    };
    
    &gpiote {
    	status = "okay";
    };
    
    &gpio0 {
    	status = "okay";
    };
    
    arduino_serial: &uart0 {
    	status = "okay";
    	compatible = "nordic,nrf-uarte";
    	current-speed = <115200>;
    	pinctrl-0 = <&uart0_default>;
    	pinctrl-1 = <&uart0_sleep>;
    	pinctrl-names = "default", "sleep";
    };
    
    arduino_i2c: &i2c0 {
    	compatible = "nordic,nrf-twi";
    	status = "okay";
    	pinctrl-0 = <&i2c0_default>;
    	pinctrl-1 = <&i2c0_sleep>;
    	pinctrl-names = "default", "sleep";
    };
    
    &i2c1 {
    	compatible = "nordic,nrf-twi";
    	/* Cannot be used together with spi1. */
    	/* status = "okay"; */
    	pinctrl-0 = <&i2c1_default>;
    	pinctrl-1 = <&i2c1_sleep>;
    	pinctrl-names = "default", "sleep";
    };
    
    &pwm0 {
    	status = "okay";
    	pinctrl-0 = <&pwm0_default>;
    	pinctrl-1 = <&pwm0_sleep>;
    	pinctrl-names = "default", "sleep";
    };
    
    &spi0 {
    	compatible = "nordic,nrf-spi";
    	/* Cannot be used together with i2c0. */
    	/* status = "okay"; */
    	pinctrl-0 = <&spi0_default>;
    	pinctrl-1 = <&spi0_sleep>;
    	pinctrl-names = "default", "sleep";
    };
    
    &spi1 {
    	compatible = "nordic,nrf-spi";
    	status = "okay";
    	pinctrl-0 = <&spi1_default>;
    	pinctrl-1 = <&spi1_sleep>;
    	pinctrl-names = "default", "sleep";
    };
    
    arduino_spi: &spi2 {
    	compatible = "nordic,nrf-spi";
    	status = "okay";
    	cs-gpios = <&arduino_header 16 GPIO_ACTIVE_LOW>, /* D10 */
    				<&gpio0 25 GPIO_ACTIVE_LOW>; /* D10 */
    	pinctrl-0 = <&spi2_default>;
    	pinctrl-1 = <&spi2_sleep>;
    	pinctrl-names = "default", "sleep";
        };
    
    &flash0 {
    
    	partitions {
    		compatible = "fixed-partitions";
    		#address-cells = <1>;
    		#size-cells = <1>;
    
    		boot_partition: partition@0 {
    			label = "mcuboot";
    			reg = <0x00000000 0xc000>;
    		};
    		slot0_partition: partition@c000 {
    			label = "image-0";
    			reg = <0x0000C000 0x37000>;
    		};
    		slot1_partition: partition@43000 {
    			label = "image-1";
    			reg = <0x00043000 0x37000>;
    		};
    		storage_partition: partition@7a000 {
    			label = "storage";
    			reg = <0x0007a000 0x00006000>;
    		};
    	};
    };
    

    My build log:

     *  Executing task: nRF Connect: Build [pristine]: little_fs/build (active) 
    
    Building little_fs
    west build --build-dir c:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build c:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs --pristine --board nrf52dk_nrf52832 --no-sysbuild -- -DNCS_TOOLCHAIN_VERSION=NONE -DBOARD_ROOT=c:/users/prasa/desktop/nrf52dk/v2.5.0/little_fs;c:/users/prasa/desktop/nrf52dk/littlefs -DCONF_FILE=c:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/prj.conf -DDTC_OVERLAY_FILE=c:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/nrf52dk_nrf52832.overlay
    
    -- west build: generating a build system
    Loading Zephyr default modules (Zephyr base).
    -- Application: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs
    -- CMake version: 3.20.5
    -- Found Python3: C:/Users/prasa/Desktop/nrf52dk/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:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/.cache
    -- Zephyr version: 3.4.99 (C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr)
     *  Terminal will be reused by tasks, press any key to close it. 
    
     *  Executing task: nRF Connect: Generate config nrf52dk_nrf52832 for c:\Users\prasa\Desktop\nrf52dk\v2.5.0\little_fs 
    
    Building little_fs
    west build --build-dir c:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1 c:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs --pristine --board nrf52dk_nrf52832 --no-sysbuild -- -DNCS_TOOLCHAIN_VERSION=NONE -DBOARD_ROOT=c:/users/prasa/desktop/nrf52dk/v2.5.0/little_fs
    
    -- west build: generating a build system
    Loading Zephyr default modules (Zephyr base).
    -- Application: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs
    -- CMake version: 3.20.5
    -- Found Python3: C:/Users/prasa/Desktop/nrf52dk/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:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/.cache
    -- Zephyr version: 3.4.99 (C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr)
    -- Found west (found suitable version "1.1.0", minimum required is "0.14.0")
    -- Board: nrf52dk_nrf52832
    -- Found host-tools: zephyr 0.16.1 (C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk)
    -- Found toolchain: zephyr 0.16.1 (C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk)
    -- Found Dtc: C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6") 
    -- Found BOARD.dts: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.dts
    -- Found devicetree overlay: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/nrf52dk_nrf52832.overlay
    'label' is marked as deprecated in 'properties:' in C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/dts/bindings\mtd\jedec,spi-nor.yaml for node /soc/spi@40023000/IS25LP128@0.
    -- Generated zephyr.dts: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1/zephyr/zephyr.dts
    -- Generated devicetree_generated.h: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1/zephyr/include/generated/devicetree_generated.h
    -- Including generated dts.cmake file: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1/zephyr/dts.cmake
    
    warning: UART_CONSOLE (defined at drivers/console/Kconfig:43) was assigned the value 'y' but got the
    value 'n'. Check these unsatisfied dependencies: SERIAL_HAS_DRIVER (=n). See
    http://docs.zephyrproject.org/latest/kconfig.html#CONFIG_UART_CONSOLE and/or look up UART_CONSOLE 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.
    
    Parsing C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/Kconfig
    Loaded configuration 'C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832_defconfig'
    Merged configuration 'C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/prj.conf'
    Configuration saved to 'C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1/zephyr/.config'
    Kconfig header saved to 'C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1/zephyr/include/generated/autoconf.h'
    -- Found GnuLd: c:/users/prasa/desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd.exe (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: C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc.exe
    CMake Warning at C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/CMakeLists.txt:893 (message):
      No SOURCES given to Zephyr library: drivers__console
    
      Excluding target from build.
    
    
    CMake Warning at C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/CMakeLists.txt:893 (message):
      No SOURCES given to Zephyr library: drivers__serial
    
      Excluding target from build.
    
    
    -- Found partition manager static configuration: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/pm_static.yml
    Partition 'littlefs_storage' is not included in the dynamic resolving since it is statically defined.
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/little_fs/build_1
    -- west build: building application
    [2/161] Generating include/generated/version.h
    -- Zephyr version: 3.4.99 (C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr), build: v3.4.99-ncs1
    [160/161] Linking C executable zephyr\zephyr.elf
    Memory region         Used Size  Region Size  %age Used
               FLASH:       59984 B       512 KB     11.44%
                 RAM:       11180 B        64 KB     17.06%
            IDT_LIST:          0 GB         2 KB      0.00%
    [161/161] Generating zephyr/merged.hex
     *  Terminal will be reused by tasks, press any key to close it. 


    I am no longer getting a flash result in my com4 port.

    Best regards,

    Aditi Prasad

Children
  • Hi,

    MOSI signal on channel 3 does not look correct. In addition, you specify that your MISO is on pin P0.23 but you have configured it in the overlay to be on P0.24. Similarly, for MOSI you say that it is on P0.24 but it is configured in your overlay on P0.23. You could check if your MISO and MOSI pins are correctly connected and configured.

    Best regards,
    Dejan

  • Hi Dejan,

    I made some changes to my connections on my NRF52k:

    CLK: P0.25

    MISO: P0.24 (connected to SO on Flash)

    MOSI: P0.23 (connected to SI on Flash)

    CE: P0.22

    My overlay:

    /delete-node/ &storage_partition;
    
    / {
        chosen {
            nordic,pm-ext-flash = &IS25LP128;
        };
    };
    
    / {
    	fstab {
    		compatible = "zephyr,fstab";
    		lfs1: lfs1 {
    			compatible = "zephyr,fstab,littlefs";
    			mount-point = "/lfs1";
    			partition = <&lfs1_part>;
    			automount;
    			read-size = <16>;
    			prog-size = <16>;
    			cache-size = <64>;
    			lookahead-size = <32>;
    			block-cycles = <512>;
    		};
    	};
    };
    
    &spi2 {
        compatible = "nordic,nrf-spi";
    
        status = "okay";
    
        pinctrl-0 = <&spi2_default>;
    
        pinctrl-1 = <&spi2_sleep>;
    
        pinctrl-names = "default", "sleep";
    
        cs-gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
        
        IS25LP128: IS25LP128@0 {
            compatible = "jedec,spi-nor";
            status = "okay";
            label = "25LP128";
            reg = <0>;
            spi-max-frequency = <133000000>; /* Adjust based on your flash specifications */
            size = <0x8000000>; /* Adjust based on your flash size */
            has-dpd;
            t-enter-dpd = <3000>;
            t-exit-dpd = <30000>;
            jedec-id = [ 9D 60 18 ]; /* Adjust based on your flash JEDEC ID */
            //wp-gpios = < &gpio0 12 GPIO_ACTIVE_LOW>;
            //hold-gpios = < &gpio0 11 GPIO_ACTIVE_LOW>;
    
            //page_size = <2048>;
            //block_size = <131072>;
    
            };
        };
    
    &pinctrl {
        spi2_default: spi2_default {
            group1 {
                psels = <NRF_PSEL(SPIM_SCK, 0, 25)>, /* gpio 0 pin P0.25 */
                        <NRF_PSEL(SPIM_MISO, 0, 24)>, /* gpio 0 pin P0.24 */
                        <NRF_PSEL(SPIM_MOSI, 0, 23)>; /* gpio 0 pin P0.23 */
            };
        };
    
        spi2_sleep: spi2_sleep {
            group1 {
                psels = <NRF_PSEL(SPIM_SCK, 0, 25)>, /* gpio 0 pin P0.25 */
                        <NRF_PSEL(SPIM_MISO, 0, 24)>, /* gpio 0 pin P0.24 */
                        <NRF_PSEL(SPIM_MOSI, 0, 23)>; /* gpio 0 pin P0.23 */
            };
        };
    };
    
    &IS25LP128 {
        partitions {
    		compatible = "fixed-partitions";
    		#address-cells = <1>;
    		#size-cells = <1>;
    
    		lfs1_part: partition@0 {
    			label = "storage";
                reg = <0x00000000 0x02000000>;
    		};
    	};
    };
    
    

    Prj.conf:

    #
    # Copyright (c) 2019 Peter Bigot Consulting, LLC
    #
    # SPDX-License-Identifier: Apache-2.0
    #
    
    # Optionally force the file system to be recreated
    # CONFIG_APP_WIPE_STORAGE=y
    
    # fs_dirent structures are big.
    CONFIG_MAIN_STACK_SIZE=4096
    
    # Let __ASSERT do its job
    CONFIG_DEBUG=y
    
    CONFIG_LOG=y
    CONFIG_LOG_MODE_MINIMAL=y
    
    CONFIG_FLASH=y
    CONFIG_FLASH_MAP=y
    CONFIG_FLASH_PAGE_LAYOUT=y
    
    CONFIG_FILE_SYSTEM=y
    CONFIG_FILE_SYSTEM_LITTLEFS=y
    
    CONFIG_PARTITION_MANAGER_ENABLED=y
    CONFIG_PM_PARTITION_REGION_LITTLEFS_EXTERNAL=y
    CONFIG_PM_PARTITION_REGION_SETTINGS_STORAGE_EXTERNAL=y
    CONFIG_PM_PARTITION_REGION_NVS_STORAGE_EXTERNAL=y
    CONFIG_PM_OVERRIDE_EXTERNAL_DRIVER_CHECK=y
    
    # CONFIG_BOOTLOADER_MCUBOOT=y
    

    The trace: 

    Flash log:

     *  Executing task: nRF Connect: Build [pristine]: littlefs/build (active) 
    
    Building littlefs
    west build --build-dir c:/Users/prasa/Desktop/nrf52dk_backup/littlefs/build c:/Users/prasa/Desktop/nrf52dk_backup/littlefs --pristine --board nrf52dk_nrf52832 --no-sysbuild -- -DNCS_TOOLCHAIN_VERSION=NONE -DCONF_FILE=c:/Users/prasa/Desktop/nrf52dk_backup/littlefs/prj.conf -DDTC_OVERLAY_FILE=c:/Users/prasa/Desktop/nrf52dk_backup/littlefs/nrf52dk_nrf52832.overlay
    
    -- west build: generating a build system
    Loading Zephyr default modules (Zephyr base).
    -- Application: C:/Users/prasa/Desktop/nrf52dk_backup/littlefs
    -- CMake version: 3.20.5
    -- Found Python3: C:/Users/prasa/Desktop/nrf52dk/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:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/.cache
    -- Zephyr version: 3.4.99 (C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr)
    -- Found west (found suitable version "1.1.0", minimum required is "0.14.0")
    -- Board: nrf52dk_nrf52832
    -- Found host-tools: zephyr 0.16.1 (C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk)
    -- Found toolchain: zephyr 0.16.1 (C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk)
    -- Found Dtc: C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6") 
    -- Found BOARD.dts: C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832.dts
    -- Found devicetree overlay: c:/Users/prasa/Desktop/nrf52dk_backup/littlefs/nrf52dk_nrf52832.overlay
    'label' is marked as deprecated in 'properties:' in C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/dts/bindings\mtd\jedec,spi-nor.yaml for node /soc/spi@40023000/IS25LP128@0.
    -- Generated zephyr.dts: C:/Users/prasa/Desktop/nrf52dk_backup/littlefs/build/zephyr/zephyr.dts
    -- Generated devicetree_generated.h: C:/Users/prasa/Desktop/nrf52dk_backup/littlefs/build/zephyr/include/generated/devicetree_generated.h
    -- Including generated dts.cmake file: C:/Users/prasa/Desktop/nrf52dk_backup/littlefs/build/zephyr/dts.cmake
    
    warning: PM_PARTITION_REGION_SETTINGS_STORAGE_EXTERNAL (defined at C:/Users/prasa/Desktop/nrf52dk/v2
    .5.0/nrf\subsys\partition_manager\Kconfig.template.partition_region:2) was assigned the value 'y'
    but got the value 'n'. Check these unsatisfied dependencies: (SETTINGS_FCB || SETTINGS_NVS) (=n).
    See http://docs.zephyrproject.org/latest/kconfig.html#CONFIG_PM_PARTITION_REGION_SETTINGS_STORAGE_EX
    TERNAL and/or look up PM_PARTITION_REGION_SETTINGS_STORAGE_EXTERNAL 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: PM_PARTITION_REGION_NVS_STORAGE_EXTERNAL (defined at C:/Users/prasa/Desktop/nrf52dk/v2.5.0/
    nrf\subsys\partition_manager\Kconfig.template.partition_region:2) was assigned the value 'y' but got
    the value 'n'. Check these unsatisfied dependencies: NVS (=n). See
    http://docs.zephyrproject.org/latest/kconfig.html#CONFIG_PM_PARTITION_REGION_NVS_STORAGE_EXTERNAL
    and/or look up PM_PARTITION_REGION_NVS_STORAGE_EXTERNAL 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.
    
    Parsing C:/Users/prasa/Desktop/nrf52dk_backup/littlefs/Kconfig
    Loaded configuration 'C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr/boards/arm/nrf52dk_nrf52832/nrf52dk_nrf52832_defconfig'
    Merged configuration 'c:/Users/prasa/Desktop/nrf52dk_backup/littlefs/prj.conf'
    Configuration saved to 'C:/Users/prasa/Desktop/nrf52dk_backup/littlefs/build/zephyr/.config'
    Kconfig header saved to 'C:/Users/prasa/Desktop/nrf52dk_backup/littlefs/build/zephyr/include/generated/autoconf.h'
    -- Found GnuLd: c:/users/prasa/desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk/arm-zephyr-eabi/bin/../lib/gcc/arm-zephyr-eabi/12.2.0/../../../../arm-zephyr-eabi/bin/ld.bfd.exe (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: C:/Users/prasa/Desktop/nrf52dk/toolchains/c57af46cb7/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc.exe
    -- Found partition manager static configuration: C:/Users/prasa/Desktop/nrf52dk_backup/littlefs/pm_static.yml
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/Users/prasa/Desktop/nrf52dk_backup/littlefs/build
    -- west build: building application
    [1/156] Generating ../../zephyr/include/generated/ncs_version.h
    [2/156] Generating include/generated/version.h
    -- Zephyr version: 3.4.99 (C:/Users/prasa/Desktop/nrf52dk/v2.5.0/zephyr), build: v3.4.99-ncs1
    [3/156] Generating misc/generated/syscalls.json, misc/generated/struct_tags.json
    [4/156] Generating include/generated/kobj-types-enum.h, include/generated/otype-to-str.h, include/generated/otype-to-size.h
    [5/156] Generating include/generated/driver-validation.h
    [6/156] Generating include/generated/syscall_dispatch.c, include/generated/syscall_list.h
    [7/156] Building C object zephyr/CMakeFiles/offsets.dir/arch/arm/core/offsets/offsets.c.obj
    [8/156] Generating include/generated/offsets.h
    [9/156] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap_helper.S.obj
    [10/156] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/isr_wrapper.S.obj
    [11/156] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/__/common/tls.c.obj
    [12/156] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/thread.c.obj
    [13/156] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/exc_exit.S.obj
    [14/156] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fault_s.S.obj
    [15/156] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fault.c.obj
    [16/156] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/fpu.c.obj
    [17/156] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/reset.S.obj
    [18/156] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/irq_init.c.obj
    [19/156] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/nmi_on_reset.S.obj
    [20/156] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/swap.c.obj
    [21/156] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/prep_c.c.obj
    [22/156] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/nmi.c.obj
    [23/156] Building C object zephyr/arch/common/CMakeFiles/arch__common.dir/sw_isr_common.c.obj
    [24/156] Building C object zephyr/arch/common/CMakeFiles/isr_tables.dir/isr_tables.c.obj
    [25/156] Linking C static library zephyr\arch\common\libisr_tables.a
    [26/156] Linking C static library zephyr\arch\common\libarch__common.a
    [27/156] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/fatal.c.obj
    [28/156] Building ASM object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/cpu_idle.S.obj
    [29/156] Building C object zephyr/arch/arch/arm/core/aarch32/CMakeFiles/arch__arm__core__aarch32.dir/irq_manage.c.obj
    [30/156] Building C object zephyr/arch/arch/arm/core/aarch32/mpu/CMakeFiles/arch__arm__core__aarch32__mpu.dir/arm_core_mpu.c.obj
    [31/156] Linking C static library zephyr\arch\arch\arm\core\aarch32\libarch__arm__core__aarch32.a
    [32/156] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/__aeabi_read_tp.S.obj
    [33/156] Building C object zephyr/arch/arch/arm/core/aarch32/mpu/CMakeFiles/arch__arm__core__aarch32__mpu.dir/arm_mpu.c.obj
    [34/156] Linking C static library zephyr\arch\arch\arm\core\aarch32\mpu\libarch__arm__core__aarch32__mpu.a
    [35/156] Building C object zephyr/lib/libc/picolibc/CMakeFiles/lib__libc__picolibc.dir/libc-hooks.c.obj
    [36/156] Building C object zephyr/lib/libc/common/CMakeFiles/lib__libc__common.dir/source/stdlib/abort.c.obj
    [37/156] Linking C static library zephyr\lib\libc\picolibc\liblib__libc__picolibc.a
    [38/156] Building C object zephyr/lib/libc/common/CMakeFiles/lib__libc__common.dir/source/stdlib/malloc.c.obj
    [39/156] Linking C static library zephyr\lib\libc\common\liblib__libc__common.a
    [40/156] Building C object zephyr/soc/soc/arm/common/cortex_m/CMakeFiles/soc__arm__common__cortex_m.dir/arm_mpu_regions.c.obj
    [41/156] Building C object zephyr/soc/soc/arm/nordic_nrf/nrf52/CMakeFiles/soc__arm__nordic_nrf__nrf52.dir/soc.c.obj
    [42/156] Linking C static library zephyr\soc\soc\arm\common\cortex_m\libsoc__arm__common__cortex_m.a
    [43/156] Linking C static library zephyr\soc\soc\arm\nordic_nrf\nrf52\libsoc__arm__nordic_nrf__nrf52.a
    [44/156] Building C object zephyr/subsys/fs/CMakeFiles/subsys__fs.dir/fs.c.obj
    [45/156] Building C object CMakeFiles/app.dir/src/main.c.obj
    [46/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/fdtable.c.obj
    [47/156] Linking C static library app\libapp.a
    [48/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_packaged.c.obj
    [49/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/dec.c.obj
    [50/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/timeutil.c.obj
    [51/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/hex.c.obj
    [52/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/rb.c.obj
    [53/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/printk.c.obj
    [54/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/sem.c.obj
    [55/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/thread_entry.c.obj
    [56/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/onoff.c.obj
    [57/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/bitarray.c.obj
    [58/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap-validate.c.obj
    [59/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/notify.c.obj
    [60/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/heap.c.obj
    [61/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/multi_heap.c.obj
    [62/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/assert.c.obj
    [63/156] Building C object zephyr/CMakeFiles/zephyr.dir/misc/generated/configs.c.obj
    [64/156] Building ASM object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/common/soc_nrf_common.S.obj
    [65/156] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_complete.c.obj
    [66/156] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_base_addresses.c.obj
    [67/156] Building C object zephyr/CMakeFiles/zephyr.dir/soc/arm/nordic_nrf/validate_enabled_instances.c.obj
    [68/156] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_minimal.c.obj
    [69/156] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/tracing/tracing_none.c.obj
    [70/156] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/storage/flash_map/flash_map_layout.c.obj
    [71/156] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/storage/flash_map/flash_map.c.obj
    [72/156] Building C object zephyr/CMakeFiles/zephyr.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/nrf/subsys/partition_manager/flash_map_partition_manager.c.obj
    [73/156] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/thread_abort.c.obj
    [74/156] Linking C static library zephyr\libzephyr.a
    [75/156] Building C object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/scb.c.obj
    [76/156] Generating linker_zephyr_pre0.cmd
    [77/156] Building ASM object zephyr/arch/arch/arm/core/aarch32/cortex_m/CMakeFiles/arch__arm__core__aarch32__cortex_m.dir/vector_table.S.obj
    [78/156] Linking C static library zephyr\arch\arch\arm\core\aarch32\cortex_m\libarch__arm__core__aarch32__cortex_m.a
    [79/156] Building C object zephyr/drivers/console/CMakeFiles/drivers__console.dir/uart_console.c.obj
    [80/156] Building C object zephyr/subsys/fs/CMakeFiles/subsys__fs.dir/fs_impl.c.obj
    [81/156] Linking C static library zephyr\drivers\console\libdrivers__console.a
    [82/156] Building C object zephyr/subsys/fs/CMakeFiles/subsys__fs.dir/littlefs_fs.c.obj
    [83/156] Building C object zephyr/drivers/clock_control/CMakeFiles/drivers__clock_control.dir/clock_control_nrf.c.obj
    [84/156] Linking C static library zephyr\subsys\fs\libsubsys__fs.a
    [85/156] Linking C static library zephyr\drivers\clock_control\libdrivers__clock_control.a
    [86/156] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/flash_page_layout.c.obj
    [87/156] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/soc_flash_nrf.c.obj
    [88/156] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/spi_nor.c.obj
    [89/156] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/jesd216.c.obj
    [90/156] Linking C static library zephyr\drivers\flash\libdrivers__flash.a
    [91/156] Building C object zephyr/CMakeFiles/zephyr_pre0.dir/misc/empty_file.c.obj
    [92/156] Building C object zephyr/drivers/gpio/CMakeFiles/drivers__gpio.dir/gpio_nrfx.c.obj
    [93/156] Building C object zephyr/drivers/pinctrl/CMakeFiles/drivers__pinctrl.dir/common.c.obj
    [94/156] Linking C static library zephyr\drivers\gpio\libdrivers__gpio.a
    [95/156] Building C object zephyr/drivers/serial/CMakeFiles/drivers__serial.dir/uart_nrfx_uarte.c.obj
    [96/156] Linking C static library zephyr\drivers\serial\libdrivers__serial.a
    [97/156] Building C object zephyr/drivers/pinctrl/CMakeFiles/drivers__pinctrl.dir/pinctrl_nrf.c.obj
    [98/156] Linking C static library zephyr\drivers\pinctrl\libdrivers__pinctrl.a
    [99/156] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/sys_clock_init.c.obj
    [100/156] Building C object zephyr/drivers/spi/CMakeFiles/drivers__spi.dir/spi_nrfx_spi.c.obj
    [101/156] Building C object zephyr/drivers/spi/CMakeFiles/drivers__spi.dir/spi_nrfx_common.c.obj
    [102/156] Linking C static library zephyr\drivers\spi\libdrivers__spi.a
    [103/156] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/nrf_rtc_timer.c.obj
    [104/156] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/modules/hal/nordic/nrfx/mdk/system_nrf52.c.obj
    [105/156] Linking C static library zephyr\drivers\timer\libdrivers__timer.a
    [106/156] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/nrfx_glue.c.obj
    [107/156] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/modules/hal/nordic/nrfx/helpers/nrfx_gppi_ppi.c.obj
    [108/156] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/modules/hal/nordic/nrfx/drivers/src/nrfx_nvmc.c.obj
    [109/156] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/modules/hal/nordic/nrfx/helpers/nrfx_flag32_allocator.c.obj
    [110/156] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/modules/hal/nordic/nrfx/drivers/src/nrfx_clock.c.obj
    [111/156] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/modules/hal/nordic/nrfx/drivers/src/nrfx_gpiote.c.obj
    [112/156] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/modules/hal/nordic/nrfx/drivers/src/nrfx_spi.c.obj
    [113/156] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/modules/hal/nordic/nrfx/drivers/src/nrfx_ppi.c.obj
    [114/156] Building C object modules/littlefs/CMakeFiles/modules__littlefs.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/modules/fs/littlefs/lfs_util.c.obj
    [115/156] Linking C static library modules\hal_nordic\nrfx\libmodules__hal_nordic__nrfx.a
    [116/156] Building C object modules/littlefs/CMakeFiles/modules__littlefs.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/modules/fs/littlefs/lfs.c.obj
    [117/156] Building C object modules/littlefs/CMakeFiles/modules__littlefs.dir/zephyr_lfs_crc.c.obj
    [118/156] Building C object modules/segger/CMakeFiles/modules__segger.dir/C_/Users/prasa/Desktop/nrf52dk/v2.5.0/modules/debug/segger/SEGGER/SEGGER_RTT.c.obj
    [119/156] Linking C static library modules\littlefs\libmodules__littlefs.a
    [120/156] Building C object modules/segger/CMakeFiles/modules__segger.dir/SEGGER_RTT_zephyr.c.obj
    [121/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/main_weak.c.obj
    [122/156] Linking C static library modules\segger\libmodules__segger.a
    [123/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/init.c.obj
    [124/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/errno.c.obj
    [125/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/busy_wait.c.obj
    [126/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/fatal.c.obj
    [127/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/banner.c.obj
    [128/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/device.c.obj
    [129/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/idle.c.obj
    [130/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mem_slab.c.obj
    [131/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/kheap.c.obj
    [132/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread.c.obj
    [133/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/version.c.obj
    [134/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mailbox.c.obj
    [135/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/queue.c.obj
    [136/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sem.c.obj
    [137/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mutex.c.obj
    [138/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/msg_q.c.obj
    [139/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/work.c.obj
    [140/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/stack.c.obj
    [141/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sched.c.obj
    [142/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/system_work_q.c.obj
    [143/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/condvar.c.obj
    [144/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/xip.c.obj
    [145/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/dynamic_disabled.c.obj
    [146/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mempool.c.obj
    [147/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timeout.c.obj
    [148/156] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timer.c.obj
    [149/156] Linking C static library zephyr\kernel\libkernel.a
    [150/156] Linking C executable zephyr\zephyr_pre0.elf
    [154/156] Building C object zephyr/CMakeFiles/zephyr_final.dir/misc/empty_file.c.obj
    [155/156] Linking C executable zephyr\zephyr.elf
    Memory region         Used Size  Region Size  %age Used
               FLASH:       62040 B       512 KB     11.83%
                 RAM:       11372 B        64 KB     17.35%
            IDT_LIST:          0 GB         2 KB      0.00%
    [156/156] Generating zephyr/merged.hex
     *  Terminal will be reused by tasks, press any key to close it. 
    
     *  Executing task: nRF Connect: Build: littlefs/build (active) 
    
    Building littlefs
    west build --build-dir c:/Users/prasa/Desktop/nrf52dk_backup/littlefs/build c:/Users/prasa/Desktop/nrf52dk_backup/littlefs
    
    ninja: no work to do.
     *  Terminal will be reused by tasks, press any key to close it. 
    
     *  Executing task: nRF Connect: Flash: littlefs/build (active) 
    
    Flashing build to 1050370044
    west flash -d c:\Users\prasa\Desktop\nrf52dk_backup\littlefs\build --skip-rebuild --dev-id 1050370044 --erase
    
    -- west flash: using runner nrfjprog
    -- runners.nrfjprog: mass erase requested
    -- runners.nrfjprog: Flashing file: c:\Users\prasa\Desktop\nrf52dk_backup\littlefs\build\zephyr\merged.hex
    [ ######               ]   0.000s | Erase file - Check image                                                      [ #################### ]   0.062s | Erase file - Done erasing                                                          
    [ ######               ]   0.000s | Program file - Checking image                                                 [ #####                ]   0.000s | Check image validity - Initialize device info                                 [ ##########           ]   0.000s | Check image validity - Check region 0 settings                                [ ###############      ]   0.000s | Check image validity - block 1 of 2                                           [ #################### ]   0.016s | Check image validity - Finished                                               [ #############        ]   0.000s | Program file - Programming                                                    [ ##########           ]   0.000s | Programming image - block 1 of 1                                              [ #################### ]   0.000s | Programming image - Write successful                                          [ #################### ]   1.120s | Program file - Done programming                                                    
    [ ######               ]   0.000s | Verify file - Check image                                                     [ #####                ]   0.000s | Check image validity - Initialize device info                                 [ ##########           ]   0.000s | Check image validity - Check region 0 settings                                [ ###############      ]   0.411s | Check image validity - block 1 of 2                                           [ #################### ]   0.017s | Check image validity - Finished                                               [ #############        ]   0.000s | Verify file - Verifying                                                       [ ##########           ]   0.000s | Verifying image - block 1 of 1                                                [ #################### ]   0.000s | Verifying image - Verify successful                                           [ #################### ]   0.415s | Verify file - Done verifying                                                       
    Enabling pin reset.
    Applying pin reset.
    -- runners.nrfjprog: Board with serial number 1050370044 flashed successfully.
     *  Terminal will be reused by tasks, press any key to close it. 
    
     *  Executing task: nRF Connect: Build: littlefs/build (active) 
    
    Building littlefs
    west build --build-dir c:/Users/prasa/Desktop/nrf52dk_backup/littlefs/build c:/Users/prasa/Desktop/nrf52dk_backup/littlefs
    
    ninja: no work to do.
     *  Terminal will be reused by tasks, press any key to close it. 
    
     *  Executing task: nRF Connect: Flash: littlefs/build (active) 
    
    Flashing build to 1050370044
    west flash -d c:\Users\prasa\Desktop\nrf52dk_backup\littlefs\build --skip-rebuild --dev-id 1050370044 --erase
    
    -- west flash: using runner nrfjprog
    -- runners.nrfjprog: mass erase requested
    -- runners.nrfjprog: Flashing file: c:\Users\prasa\Desktop\nrf52dk_backup\littlefs\build\zephyr\merged.hex
    [ ######               ]   0.000s | Erase file - Check image                                                      [ #################### ]   0.062s | Erase file - Done erasing                                                          
    [ ######               ]   0.000s | Program file - Checking image                                                 [ #####                ]   0.000s | Check image validity - Initialize device info                                 [ ##########           ]   0.000s | Check image validity - Check region 0 settings                                [ ###############      ]   0.000s | Check image validity - block 1 of 2                                           [ #################### ]   0.017s | Check image validity - Finished                                               [ #############        ]   0.000s | Program file - Programming                                                    [ ##########           ]   0.000s | Programming image - block 1 of 1                                              [ #################### ]   0.000s | Programming image - Write successful                                          [ #################### ]   1.123s | Program file - Done programming                                                    
    [ ######               ]   0.000s | Verify file - Check image                                                     [ #####                ]   0.000s | Check image validity - Initialize device info                                 [ ##########           ]   0.000s | Check image validity - Check region 0 settings                                [ ###############      ]   0.411s | Check image validity - block 1 of 2                                           [ #################### ]   0.017s | Check image validity - Finished                                               [ #############        ]   0.000s | Verify file - Verifying                                                       [ ##########           ]   0.000s | Verifying image - block 1 of 1                                                [ #################### ]   0.000s | Verifying image - Verify successful                                           [ #################### ]   0.416s | Verify file - Done verifying                                                       
    Enabling pin reset.
    Applying pin reset.
    -- runners.nrfjprog: Board with serial number 1050370044 flashed successfully.
     *  Terminal will be reused by tasks, press any key to close it. 

    I am getting a different device id read after flashing:

    E: Device id 32 01 06 does not match config 9d 60 18
    I: littlefs partition at /lfs1
    I: LittleFS version 2.5, disk version 2.0
    E: can't open flash area 3
    E: fs mount error (-19)
    E: Automount /lfs1 failed: -19
    *** Booting nRF Connect SDK v2.5.0 ***
    Sample program to r/w files on littlefs
    E: FAIL: unable to find flash area 3: -19
    

    BR,
    AP

  • Hi,

    For SPI support, you could try to add CONFIG_SPI_NOR=y to your configuration file.

    You could also verify that your jedec-id is correct.

    Regarding your trace, could you zoom in, and provide it again?

    Best regards,
    Dejan

  • Hi Dejan,

    CONFIG_SPI_NOR doesnot resolve the error.

    Jedec-id is correct : [9D 60 18]

    Trace:

    The single trigger after the sck goes low should be correct. Can I put a delay before receiving this input (miso)? If so, where should I place this code?

    COM 4:

    E: Device id 99 00 83 does not match config 9d 60 18
    I: littlefs partition at /lfs1
    I: LittleFS version 2.5, disk version 2.0
    E: can't open flash area 1
    E: fs mount error (-19)
    E: Automount /lfs1 failed: -19
    *** Booting nRF Connect SDK v2.5.0 ***
    Sample program to r/w files on littlefs
    E: FAIL: unable to find flash area 1: -19
    
    FAIL: statvfs: -19

    Br,

    AP

  • Hi,

    It looks like Device id does not match your configured id. I am referring to this line:



    Best regards,
    Dejan

Related