This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Changing Flash parameters in overlay file

My project is using nRF52840.   Early software development used an nRF52840-DK to develop most of the software.   Software is based on Zephyr using nRF Connect version 1.6.1.     I'm using the "littlefs" file system.   I got most things working using the nRF52840-DK.     I now have my custom board and it uses a slightly different (and larger) qspi-nor flash device.   

I'm still using the nRF52840-DK board file, but "modify" some of the parameters using an overlay file.    I know I need to change some of the parameters w.r.t. the flash.    I was able to modify the jedec-id for the new device, but am looking for some documentation that defines the parameters (keywords) in the board definition file (what some of them mean and format of values)   

Can you point me to these definitions (so I don't have to read through a lot of code :-))?

Thanks!

  • Hi Simon,

    If "CONFIG_APP_WIPE_STORAGE=y" is included in prj.conf I get an error when Cmake executes.

    I then checked: http://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/kconfig/index-all.html

    and didn't see it listed as a legal CONFIG option, so I assumed it had been removed.

    The call returns -5 (0xfffffffb)

    Sorry, line 1051 should be 1851...

    Thanks!

  • I stepped back and used the littlefs sample project to just test the Flash/LittleFS interface of my new board.   Since the board is new, the flash has never been written, so when booting, the mount fails (as expected with an error at lfs.c line 997 (Corrupted dir pair at (0x0, 0x1))) and it appears LittleFS attempts to format the device.    It looks like it prepares a superblock, then attempts to write it.    A failure occurs during formatting (returning -28).    Looking this up in lfs.h shows that -28 indicates LFS_ERR_NOSPC (no space left on device).     Stepping through, it looks like the error is being thrown at line 1692 of lfs.c due to the comparison at line 1689.  I'm not sure why this is happening yet.    The device is new, so is there some other (erase?) procedure that needs to be performed before running this test?    I would think that formatting would prepare/initialize any information about the device needed for the file system?   

    I removed the comment from the CONFIG_APP_WIPE_STORAGE=y line in prj.conf thinking that perhaps it might erase the device during the formatting process, but got the same error (-28).

    Note that CONFIG_APP_WIPE_STORAGE=y works here, but if I put it in my prj.conf running Cmake fails!   Both are using NCS 1.6.1  Running without the APP_WIPE config statement causes an error -5 (LFS_ERR_IO - Error during device operation).    As mentioned earlier, the device on the new board is very similar to the one on nRF52840DK, except larger.

    Thanks!

  • Hi again

    Okay, so it seems like the error you're seeing is that the device tries to mount with the settings/parameters you're using, but is not able to because the settings aren't stored correctly. CONFIG_APP_WIPE_STORAGE does not seem to be the way to go, seeing as the littleFS device hasn't been written to at all before. It should be sufficient to set up the device, let it fail to mount as LittleFS will have to format the device, and then reset it when the device is formatted correctly. If you then try to mount (automount should be fine as well), the device should be able to mount.

    If you're still running into errors, can you tell me in detail what changes you've made to the example project and maybe provide a link to the datasheet of the Flash device you're trying to format for?

    Best regards,

    Simon

  • Hi Simon,

    Thanks for your assistance!

    The only change I made to the example project was to add a line in the .overlay file for nrf52840kd_nrf52840 to change the jedec-id for the device I'm using.

    So the line:      jedec-id = [01 20 18];   was added as line 27 of that file.

    I know the size parameters will need to be changed, but figured that could be done after the basic operation was verified since the new part is larger than the one on the nRF52840-DK.

    The device I'm using is a Cypress S25FL128SAGNFI001  (https://www.digikey.com/en/products/detail/cypress-semiconductor-corp/S25FL128SAGNFI001/13167436)      

    The datasheet is: https://www.cypress.com/file/448601/download

    Thanks!

  • Hi

    Just to clarify, the project you're using is the littleFS File System Sample application in Zephyr, correct? I assume you have noticed that on an nRF52840 DK, the file system will be placed in the SoC flash by default. Have you not made any changes to make it use the external flash device except adding the jedec-id in your overlay file?

    Best regards,

    Simon

Related