代码拉取完成,页面将自动刷新
测试环境是使用NORFLASH,循环从0-1000写1000条数据,写到630时爆发一次失败,但631后面又成功。
下面是运行日志,写入第629条数据时,返回成功,写入第630条数据时,返回失败。写入第631条数据时,返回又成功了!
[FlashDB][kv][128KB] (Sources\lib\FlashDB\src\fdb_kvdb.c:1150) Trigger a GC check after created KV.
[FlashDB][kv][128KB] (Sources\lib\FlashDB\src\fdb_kvdb.c:1046) The remain empty sector is 1, GC threshold is 1.
[11:12:37][ACL]write ok: 00000629
[FlashDB][kv][128KB] (Sources\lib\FlashDB\src\fdb_kvdb.c:840) Trigger a GC check after alloc KV failed.
[FlashDB][kv][128KB] (Sources\lib\FlashDB\src\fdb_kvdb.c:977) Warning: Alloc an KV (size 96) failed when new KV. Now will GC then retry.
[FlashDB][kv][128KB] (Sources\lib\FlashDB\src\fdb_kvdb.c:1046) The remain empty sector is 1, GC threshold is 1.
[FlashDB][kv][128KB] (Sources\lib\FlashDB\src\fdb_kvdb.c:840) Trigger a GC check after alloc KV failed.
[11:12:37][ACL]write failed: 00000630, ret=7
[FlashDB][kv][128KB] (Sources\lib\FlashDB\src\fdb_kvdb.c:1046) The remain empty sector is 0, GC threshold is 1.
[11:12:37][ACL]write ok: 00000631
在上面的操作结束后,调用fdb_kv_print()打印kvdb的状态,发现最后一行可疑日志:
mode: next generation
size: 64790/61440 bytes.
其中size: 64790大于61440,怀疑是否是后续的写入已经越界了?
并且我把kvdb里已有的数据,调用fdb_kv_del()全部删除后,无法再次调用fdb_kv_set_blob()写入数据,返回7(FDB_SAVED_FULL)。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
上面那个 size 打印确实不正常
有没有用 demo 里的示例工程去测试
demo示例只添加1条数据,没有问题
重新擦除flash之后再从新测试,还会复现在630写入失败的问题吗?多测试几次都能复现一样的错误,说明软件哪里有BUG
可以复现
如果有条件允许,在线DEBUG一下628到631这期间的各个变量是否异常,找出问题点
登录 后才可以发表评论