This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

FDS GC seems not to work

Using SDK 13 FDS, I store 6468 byte, that is 1617 words, including FDS header. Of course this size is total. In detail in byte size, this size consists of

(12(header)+ 576) * 7
(12 + 774) * 1
(12 + 691) * 2
(12 + 144) * 1

I set FDS_VIRTUAL_PAGE_SIZE to 1024 and FDS_VIRTUAL_PAGES to 3.

Then, first write with fds_record_write() is success.

However, second write, that is update, with fds_record_update() fails with FDS_ERR_NO_SPACE_IN_FLASH.

I call fds_gc everytime after fds_record_write () or fds_record_update() call.

I assume that fds_record_update() marks the current record as deleted one and write data to new record area, then calling fds_gc() makes the record area marked as deleted available again.

But when I print out debug log in page_has_space() in fds.c, write_offset of page is only incremented, and FDS doesn't seems to reuse deleted page.

Is my thought correct? If so, this phenomenon is bug? If not, how should I update my data?

Thank you.

Related