Hi
I was using FDS without SoftDevice to implement the log system of our product.
But the system was stuck after hundreds of records writing/deleting. Finally I located it would happen when the fds_gc() was invoked. It went into HardFault_Handler.
I also reproduced this issue by only using the FDS example code in nRF5_SDK_15.3.0_59ac345 to do the same thing.
I searched this issue in DevZone and found some similar ones. But it seems there are no solutions for that.
Here is the test code added in examples\peripheral\flash_fds\cli.c to reproduce the issue:
static void logadd(nrf_cli_t const * p_cli, size_t argc, char ** argv)
{
static uint8_t data[30] = {"write data into flash"};
int num = strtol(argv[1], NULL, 10);
int index;
if (num > 1000)
return;
for (index = 0; index < num; index++)
{
record_write(p_cli, 0x100, 0x101, data, strlen(data));
record_delete(p_cli, 0x100, 0x102);
record_write(p_cli, 0x100, 0x102, data, strlen(data));
}
}
When the test log number is 400, the issue will happen.
Is there some known bugs for GC of FDS? Or is there something wrong in my code?
Thank you.