I am using the FDS module to store some application data in flash. It is my understanding that every time the data is updated using fds_record_update, a different memory area is used. This is, the update does not overwrite the same area, but it copies the data in a different location. Our firmware would often update the stored data, thus, it is a concern for us that the flash page will be overloaded. This is why I am performing a garbage collection on every update:
err_code = fds_gc();
However, I am checking the memory registers with the memory view at position 0x7E000 and I can see that the data is not cleared to 0xFF. All the previous updates are still there after running the garbage collector. It was my understanding that calling fds_gc() will set the past update records to 0xFF, but it doesn't. Why is that?
I am on a PCA10040 and sdk v16.
At what point do you check the registers? The garbage collection is asynchronous and will generate the FDS_EVT_GC event when it has completed the garbage collection. The garbage collection will not have been performed when the program returns from fds_gc(), as this only signalize that the garbage collection has been queued successfully ( if it returns with an success).