sample fat_fs

Hi,

I'm trying the  sample fat_fs  on the nRF5340 DK

1) It does build, but there is awarning

CMake Warning at D:\nRfConnect\v1.8.0\zephyr\CMakeLists.txt:722 (message):
No SOURCES given to Zephyr library: drivers__disk

2) looked with the debugger: in the main() it reaches the  LOG_ERR("Storage init ERROR!");

void main(void)

if (disk_access_init(disk_pdrv) != 0) {
LOG_ERR("Storage init ERROR!");
 
Could you please comment on the above 2 points ?
What steps should i make to have a SD-card running,  is using sample fat_fs the way to go ?
Best Regards,
Theo
Parents
  • Hi Simon,

    Thanks for the help.

    i added  nrf5340dk_nrf5340_cpuapp.overlay   with the same content as nrf52840_blip.overlay

    (added in VisualStudioCode  at input files,  the tool places the file   nrf5340dk_nrf5340_cpuapp.overlay  in the  fat_fs-directory, not in the fat_fs/boards directory)

    i placed the same content from nrf52840_blip.overlay   into the  nrf5340dk_nrf5340_cpuapp.overlay

    it showed 2 problems:   wiggle-line under &spi1  and a wiggle-line under sdhc@0

    I altered &spi1 into &spi2   now the 2 problems where gone.  so did a prestine-build, and looked in the zephyr.dts

    in there i found:

    spi2: spi@b000 {
    #address-cells = < 0x1 >;
    #size-cells = < 0x0 >;
    reg = < 0xb000 0x1000 >;
    interrupts = < 0xb 0x1 >;
    status = "okay";
    label = "SPI_2";
    compatible = "nordic,nrf-spim";
    sck-pin = < 0x2f >;
    miso-pin = < 0x2e >;
    mosi-pin = < 0x2d >;
    cs-gpios = < &gpio0 0x11 0x0 >;
    sdhc0: sdhc@0 {
    compatible = "zephyr,mmc-spi-slot";
    reg = < 0x0 >;
    status = "okay";
    label = "SDHC0";
    spi-max-frequency = < 0x16e3600 >;
    };

    So now the pins ..   does sck-pin <0x2f> means   47 -> 47-32=15   so P1.15    correct??   (and so on for 0x2e, 0x2d)

    in the nrf5340 dk schematic i find   p1.15  on GPIO_IF2 D13  ... so ok 

    But now the cs-gpios   &gpio0 0x11 0x0        does this mean gpio0   -> P0.00    or  0x11->17-> P0.17  

    P0.00 would be OK  (GPIO_IF3 / d14)   but  P0.17 is QSPI_clk (SB21)  so ocuppied.

    i will try  to connect a sd-card on the pins  P1.15, P1.14, P1.13   and the CS on P0.00  ..

    Then bonus question:  could i alter the pins to different location?, how is that being done in the software ?

    Looking forward on your comments Simon,  thanks.

    Best Regards,

    Theo

  • Hi Simon,

    Thanks again for the valuable info.  (definitely more studying on my side :-)

    I connected all  and using p0.17 for the cs., and double, double checked.

    unfortunately, no cigar.., still not working..   it still hits the LOG_ERR("Storage init ERROR!");  (as with my original question 2) )

    maybe relevant to mention .. ??

    in de 'input-files'  there are a few problems signaled:

    -in the file 'nrf5340dk_nrf5340_cpuapp.dts'  a wiggle-line (at line-13)   compatible = "nordic,nrf5340-dk-nrf5340-cpuapp";

    -in the file ''nrf5340_cpuapp_qkaa.dtst 3-wigglles (at line 24)

    compatible = "nordic,nRF5340-CPUAPP-QKAA", "nordic,nRF5340-CPUAPP", "nordic,nRF53", "simple-bus";

     wiggles under all exept "simple-bus".

    --

    then to be sure the connections i made to the sd-card  ( im using: https://www.sparkfun.com/products/544 )

    p1.15  connected to 'sck'

    p1.14 connected to 'DO'

    p1.13 connected to 'DI'

    p0.17 connected to 'CS'

    vdd   connected to 'VCC'

    gnd connected to 'GND'

    Please your comments again.. (lets nail this :-)

    Best Regards,

    Theo

  • Could you try setting the cs-gpios to GPIO_ACTIVE_LOW (0x01) instead, like it's done in Any one tested with Strontium micro HCSD card? I foll.... and in central_nfc_pairing/nrf52840dk_nrf52840.overlay, so it looks like this: cs-gpios = < &gpio0 17 GPIO_ACTIVE_LOW>;.

    Also, try to add CONFIG_GPIO=y and CONFIG_SPI_NRFX_RAM_BUFFER_SIZE=8 in the prj.conf as mentioned in NRF9160 SD card access via SPI and Reading SD card on nRF9160dk.

    Hopefully this will make it work

    TF mulder said:

    maybe relevant to mention .. ??

    in de 'input-files'  there are a few problems signaled:

    -in the file 'nrf5340dk_nrf5340_cpuapp.dts'  a wiggle-line (at line-13)   compatible = "nordic,nrf5340-dk-nrf5340-cpuapp";

    -in the file ''nrf5340_cpuapp_qkaa.dtst 3-wigglles (at line 24)

    compatible = "nordic,nRF5340-CPUAPP-QKAA", "nordic,nRF5340-CPUAPP", "nordic,nRF53", "simple-bus";

     wiggles under all exept "simple-bus".

    All the fields you mention where the squiggly lines appears are already defined by default by the nRF5340DK board/soc dts board files (see https://github.com/nrfconnect/sdk-zephyr/tree/v2.7.99-ncs1/boards/arm/nrf5340dk_nrf5340 and https://github.com/nrfconnect/sdk-zephyr/tree/v2.7.99-ncs1/dts/arm/nordic), so it shouldn't be any issue. What you need ot pay attention to is to look for warnings/errors in the build log output, not the warnings the VS Code extensions generates, so if the build log don't contain any warnings/error you are completely fine. We are aware that the warnings generated by the VS Code extension may cause confusion for customer, as most of them are relevant for when creating a custom board, but not for default board where we've consciously decided to break them, I discussed this with the developers some weeks ago and they are aware of this, and hopefully we can come up with a solution to get rid of them. Read more about this in Device Tree Overlay throws up warnings

    Best regards,

    Simon

  • Hi Simon,

    Again nothing helps.., i now looked on a oscilloscope to the signals.., there is nothing there, (as if the GPIO-pins are just not cofigured)..

    Where can i check/see the true configurations of the pins?

    And ofcouse:

    there is still the warning of my original question:

    1) It does build, but there is awarning

    CMake Warning at D:\nRfConnect\v1.8.0\zephyr\CMakeLists.txt:722 (message):
    No SOURCES given to Zephyr library: drivers__disk

    Looking forward to your answer..

    Best Regards,

    Theo

  • Hmm.. I'm sorry it's that much hassle getting it to work

    I will take a deep dive next week and see if I can get to the bottom of it

    Best regards,

    Simon

  • Hi Simon,

    Yes, please do so, ...much appreciated !!

    One point i noticed:  in the Device Tree/ GPIO  there i could not find the  cs-gpios, while the 3-Spi signals can be seen in that list.

    Im looking forward, to your deep-dive result.

    Best Regards,

    Theo

Reply Children
  • Okay, I took a deep dive, but before I add a lot of explanations and what could possibly be the cause, could you test one quick thing? Add these two configs to the file zephyr/samples/subsys/fs/fat_fs/prj.conf.

    I think the warning "No SOURCES given to Zephyr library: drivers__disk" will go away when setting CONFIG_DISK_DRIVER_SDMMC=y

    Check the file zephyr/samples/subsys/fs/fat_fs/build/zephyr/.config and make these two configs are present and that CONFIG_SDMMC_VOLUME_NAME (this should get enabled automatically when enabling CONFIG_DISK_DRIVER_SDMMC) is equal to "SD" (or whatever disk_pdrv is set equal to).

    If it still doesn't work, please get back to me

  • Hi Simon,

    i used:  'create new aplication from sample', 'freestanding'

    and put in the directory D:\Projects\Nordic_Semi\nRF5340DK\MyApps\fat_fs

    D:\Projects\Nordic_Semi\nRF5340DK\MyApps\fat_fs\prj.conf  contains now:

    CONFIG_DISK_ACCESS=y
    CONFIG_LOG=y
    CONFIG_FILE_SYSTEM=y
    CONFIG_FAT_FILESYSTEM_ELM=y
    CONFIG_PRINTK=y
    CONFIG_MAIN_STACK_SIZE=2048

    CONFIG_DISK_DRIVER_SDMMC=y
    CONFIG_SPI=y

    saved all, and did a prestine build:

    this is still there:  

    CMake Warning at D:\nRfConnect\v1.9.0\zephyr\CMakeLists.txt:764 (message):
    No SOURCES given to Zephyr library: drivers__disk

    and in the file  D:\Projects\Nordic_Semi\nRF5340DK\MyApps\fat_fs\build\zephyr\  .conf

    there is indeed:

    CONFIG_SDMMC_VOLUME_NAME="SD"

    Best Regards,

    Theo

    PS: i will go and check if i get signals ??

  • Hi Simon,

    I tried again..   the warning

    CMake Warning at D:\nRfConnect\v1.9.0\zephyr\CMakeLists.txt:764 (message):
    No SOURCES given to Zephyr library: drivers__disk

    is now gone..

    My mistake sorry

    but i do not see the  cs-gpios  signal in the Device Tree/ GPIO

    Best Regards,

    Theo

    PS: i will go and check if i get signals ??

  • When i have nothing in the nrf5340dk_nfr5340_cpuapp.overlay .. THEN i get the  

    CMake Warning at D:\nRfConnect\v1.9.0\zephyr\CMakeLists.txt:764 (message):
    No SOURCES given to Zephyr library: drivers__disk

    back again. 

  • Do you use NCS v1.9.0 now? Earlier I saw the path "D:\nRfConnect\v1.8.0", now I see the path "D:\nRfConnect\v1.9.0", please inform me of the NCS version you're using.

    Try going into the folder <ncs location>/nrf and run git describe --tags.

    TF mulder said:
    One point i noticed:  in the Device Tree/ GPIO  there i could not find the  cs-gpios, while the 3-Spi signals can be seen in that list.
    TF mulder said:

    this is still there:  

    CMake Warning at D:\nRfConnect\v1.9.0\zephyr\CMakeLists.txt:764 (message):
    No SOURCES given to Zephyr library: drivers__disk

    I added an overlay file and  these two configs to the prj.conf and built, and I could indeed see the cs-gpios under spi2 in fat_fs/build/zephyr/zephyr.dts

    fat_fs_modified.zip

    When building this sample using  west build -b nrf5340dk_nrf5340_cpuapp -d build_53 -p in NCS v1.9.0, I did not get any "No SOURCES given to Zephyr library: drivers__disk", check the build output below

     west build -b nrf5340dk_nrf5340_cpuapp -d build_53 -p
    -- west build: generating a build system
    Including boilerplate (Zephyr base): C:/v1.8.0/zephyr/cmake/app/boilerplate.cmake
    -- Application: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs
    -- Using NCS Toolchain 1.9.0 for building. (C:/v1.9.0/toolchain/cmake)
    -- Zephyr version: 2.7.99 (C:/v1.8.0/zephyr), build: v2.7.99-ncs1
    -- Found Python3: C:/v1.9.0/toolchain/opt/bin/python.exe (found suitable exact version "3.8.2") found components: Interpreter 
    -- Found west (found suitable version "0.12.0", minimum required is "0.7.1")
    -- Board: nrf5340dk_nrf5340_cpuapp
    -- Cache files will be written to: C:/v1.8.0/zephyr/.cache
    -- Found dtc: C:/v1.9.0/toolchain/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6")
    -- Found toolchain: gnuarmemb (C:/v1.9.0/toolchain/opt)
    -- Found BOARD.dts: C:/v1.8.0/zephyr/boards/arm/nrf5340dk_nrf5340/nrf5340dk_nrf5340_cpuapp.dts
    -- Found devicetree overlay: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/boards/nrf5340dk_nrf5340_cpuapp.overlay
    -- Generated zephyr.dts: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53/zephyr/zephyr.dts
    -- Generated devicetree_unfixed.h: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53/zephyr/include/generated/devicetree_unfixed.h
    -- Generated device_extern.h: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53/zephyr/include/generated/device_extern.h
    -- Including generated dts.cmake file: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53/zephyr/dts.cmake
    Parsing C:/v1.8.0/zephyr/Kconfig
    Loaded configuration 'C:/v1.8.0/zephyr/boards/arm/nrf5340dk_nrf5340/nrf5340dk_nrf5340_cpuapp_defconfig'
    Merged configuration 'C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/prj.conf'
    Configuration saved to 'C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53/zephyr/.config'
    Kconfig header saved to 'C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53/zephyr/include/generated/autoconf.h'
    -- The C compiler identification is GNU 9.2.1
    -- The CXX compiler identification is GNU 9.2.1
    -- The ASM compiler identification is GNU
    -- Found assembler: C:/v1.9.0/toolchain/opt/bin/arm-none-eabi-gcc.exe
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53
    -- west build: building application
    [169/179] Linking C executable zephyr\zephyr_pre0.elf
    
    [173/179] Linking C executable zephyr\zephyr_pre1.elf
    
    [179/179] Linking C executable zephyr\zephyr.elf
    Memory region         Used Size  Region Size  %age Used
               FLASH:       49284 B         1 MB      4.70%
                SRAM:       10792 B       448 KB      2.35%
            IDT_LIST:          0 GB         2 KB      0.00%

    When I removed  these two configs I did get the warning however

    west build -b nrf5340dk_nrf5340_cpuapp -d build_53 -p
    -- west build: making build dir C:\v1.8.0\zephyr\samples\subsys\fs\fat_fs\build_53 pristine
    -- west build: generating a build system
    Including boilerplate (Zephyr base): C:/v1.8.0/zephyr/cmake/app/boilerplate.cmake
    -- Application: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs
    -- Using NCS Toolchain 1.9.0 for building. (C:/v1.9.0/toolchain/cmake)
    -- Zephyr version: 2.7.99 (C:/v1.8.0/zephyr), build: v2.7.99-ncs1
    -- Found Python3: C:/v1.9.0/toolchain/opt/bin/python.exe (found suitable exact version "3.8.2") found components: Interpreter 
    -- Found west (found suitable version "0.12.0", minimum required is "0.7.1")
    -- Board: nrf5340dk_nrf5340_cpuapp
    -- Cache files will be written to: C:/v1.8.0/zephyr/.cache
    -- Found dtc: C:/v1.9.0/toolchain/opt/bin/dtc.exe (found suitable version "1.4.7", minimum required is "1.4.6")
    -- Found toolchain: gnuarmemb (C:/v1.9.0/toolchain/opt)
    -- Found BOARD.dts: C:/v1.8.0/zephyr/boards/arm/nrf5340dk_nrf5340/nrf5340dk_nrf5340_cpuapp.dts
    -- Found devicetree overlay: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/boards/nrf5340dk_nrf5340_cpuapp.overlay
    -- Generated zephyr.dts: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53/zephyr/zephyr.dts
    -- Generated devicetree_unfixed.h: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53/zephyr/include/generated/devicetree_unfixed.h
    -- Generated device_extern.h: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53/zephyr/include/generated/device_extern.h
    -- Including generated dts.cmake file: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53/zephyr/dts.cmake
    Parsing C:/v1.8.0/zephyr/Kconfig
    Loaded configuration 'C:/v1.8.0/zephyr/boards/arm/nrf5340dk_nrf5340/nrf5340dk_nrf5340_cpuapp_defconfig'
    Merged configuration 'C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/prj.conf'
    Configuration saved to 'C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53/zephyr/.config'
    Kconfig header saved to 'C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53/zephyr/include/generated/autoconf.h'
    -- The C compiler identification is GNU 9.2.1
    -- The CXX compiler identification is GNU 9.2.1
    -- The ASM compiler identification is GNU
    -- Found assembler: C:/v1.9.0/toolchain/opt/bin/arm-none-eabi-gcc.exe
    CMake Warning at ../../../../CMakeLists.txt:764 (message):
      No SOURCES given to Zephyr library: drivers__disk
    
      Excluding target from build.
    
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/v1.8.0/zephyr/samples/subsys/fs/fat_fs/build_53
    -- west build: building application
    [164/174] Linking C executable zephyr\zephyr_pre0.elf
    
    [168/174] Linking C executable zephyr\zephyr_pre1.elf
    
    [174/174] Linking C executable zephyr\zephyr.elf
    Memory region         Used Size  Region Size  %age Used
               FLASH:       42664 B         1 MB      4.07%
                SRAM:       10608 B       448 KB      2.31%
            IDT_LIST:          0 GB         2 KB      0.00%

    TF mulder said:
    PS: i will go and check if i get signals ??

    Yes, try that.

    If you still experience that disk_access_init(disk_pdrv) causes "Storage init ERROR!" to get printed, it means that the function returns an error (a non-null value). To get to the bottom of that you should try to debug the application and the call stack of disk_access_init and find the exact line that returns the error. Here is the call stack:

    Try to debug your program (set CONFIG_DEBUG_OPTIMIZATIONS=y in the prj.conf and follow the Segger Ozone guide or nRF Connect for VS Code, 5: Debugging) to figure out where in the call stack above a non-null error is returned.

    Best regards,

    Simon

Related