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.

    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?

  • Hi,

    Thanks for checking. I don't think it's a configuration issue since 2 out of the three pages get tagged. Have you verified that pm_init() which initializes FDS is returning NRF_SUCCESS? Also, does the program appear to work normally apart from this? E.g., does it remember the bonding information across connections?

  • Hi.

    Yes. pm_init () is initialized without error. NRF_SUCCESS is returned.

    There is nothing wrong with the operation. It stores the bonding information.

Reply
  • Hi.

    Yes. pm_init () is initialized without error. NRF_SUCCESS is returned.

    There is nothing wrong with the operation. It stores the bonding information.

Children
  • Hi,

    Good that the bonding information gets stored. I guess the problem is that the last page is not being used, so you have one instead of two data pages to hold bonding information. Please check if fds_evt_handler()  in peer_data_storage.c receives the FDS_EVT_INIT event on startup. FDS is supposed to signal this event when all pages have been tagged. Note: the event is not included in the switch case by default, but you can add a case for it temporarily to place a breakpoint.  

  • Hi,

    Thank you for answer.

    Please check if fds_evt_handler()  in peer_data_storage.c receives the FDS_EVT_INIT event on startup.

    The program started and an FDS_EVT_INIT event occurred in fds_evt_handler.

  • Hi,

    Do you have a stripped-down version of your project that I can use to reproduce this on a 52DK? I need to debug this to understand what's going on.