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

nRF52810 FDS memory area address

Hi

I want to know the address of the memory used by FDS.

I set the following

I think , this setting uses 3 pages.

However, there are tags at 0x2D000 and 0x2E000.

Why not use 0x2C000?

I need to exclude the FDS memory area to calculate the checksum. That's why I need to know the exact usage address of the FDS memory.

Parents
  • Hi,

    I think you can use the CODE_START and CODE_SIZE macros from the app_util.h header assuming you are trying to determine the address range of your FW image programmatically. 

    However, there are tags at 0x2D000 and 0x2E000.

     Isn't 0x2F000 tagged as well?

  • Hi.

    Address 0x2F000 is not tagged.

  • Hi,

    There is supposed to be 1 page tagged for swap as well (Page tag) so it seems like FDS did not complete the initialization for some reason.  What are you using FDS for in your application?

  • Hi.

    I use it in peer manager.

    Probably used by Softdevice.

  • Hi,

    Ok, so the peer manager uses FDS to manage bonding information in flash. So there must be something that prevents FDS from completing the initialization. Possibly the flash complete event from the Softdevice is not reaching fstorage->fds. Have you tried to reboot the device and see if maybe the last page gets tagged on the 2nd or 3rd run?

Reply
  • Hi,

    Ok, so the peer manager uses FDS to manage bonding information in flash. So there must be something that prevents FDS from completing the initialization. Possibly the flash complete event from the Softdevice is not reaching fstorage->fds. Have you tried to reboot the device and see if maybe the last page gets tagged on the 2nd or 3rd run?

Children
  • Hi. 

    After rebooting, no tag was given to address 0x2F000.

    It was tagged at the address below.

    0x2D000  -  0xDEADC0DE 0xF11E01FF Page used for swap during garbage collection.
    0x2E000  -  0xDEADC0DE 0xF11E01FE Page used to store data.

    I think the bonding information is stored at address 0x2E000.

  • Hi,

    So I see you have the swap page now, that's a good sign. Is FDS_VIRTUAL_PAGES_RESERVED define set to '1' in your project by any chance. That would explain why the last page isn't used.

  • Hi.

    I can't find FDS_VIRTUAL_PAGES_RESERVED anywhere.

    I use nRF82810 & S112 SDK 15.0.0.

    However, I found this..

    Did this affect address?

  • Hi,

    Sorry, seems like that option was introduced in a more recent SDK release. Can you try another unmodified SDK examples such as the ble_app_hrs to compare the result?

    moon.kim said:
    Did this affect address?

     FDS requires one flash page for swap which can't be used for data. That is why the total number of pages is being substracted by '1' here.

  • Hi.

    In the SDK example, a tag is created at address 0x2F000.

    I compared sdk_config.h and fsd_internal_defs.h, but nothing different.

    What more should I check?