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

garbage collection

I need to run gc because I get rc =FDS_ERR_NO_SPACE_IN_FLASH.

So I run gc simple as written in https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.sdk5.v15.3.0/lib_fds_functionality.html?cp=5_1_3_55_1_2#lib_fds_functionality_gc 

I just write this

rc = fds_record_update(&record_desc, &record);
if(rc == FDS_ERR_NO_SPACE_IN_FLASH) // no space in the FLASH
{
  ret_code_t rc = fds_gc();// try to do garbage collection
  if (rc != FDS_SUCCESS)
  {
   /* error handle */
}

}

But just when I do the fds_gc() I get hard fault.

What do I miss here?

Bar.

  • I did anther test.

    Every time before and after fds_gc I active fds_stat(&stat); , and compare the statistic in state.

    I actrive the function in this way:

     rc = fds_stat(&stat); // TEST TEST TEST to see if gc work

     rc = fds_gc();

     rc = fds_stat(&stat); // TEST TEST TEST to see if gc work

    When it wasn't on the limit of the FLASH the gc work fine and if there was dirty record it remove them.

    But when I get to rc == FDS_ERR_NO_SPACE_IN_FLASH and try the same I get before the gc this statistic:

    pages_available= 0x3

    open_records= 0x0

    valid_records= 0x56

    dirty_records=0x55

    words_used= 0x07FA

    largest_contig=0x4

    freeable_words=0x03F5

    corruption=false

    But there it go to hardfault.

    The number looks logical because for ease record I update it in the past, and there is still free words.

    Is this give any clue?

    Bar.

  • Hi Bar

    Sorry, but I'll need you to describe what exactly your project is supposed to do and how to set it up correctly, as it will take an immense amount of time to get into it as is. Step by step would be best. And still, tell me if you want this case set to private!

    Best regards,

    Simon

Related