xql923
xql923
发现,源程序中所有使用__fdb_flash_read(fdb_db_t db, uint32_t addr, void *buf, size_t size)函数都没有判断返回数值,判断是否执行正确,全部按照正确的处理。 附件源程序是我针对读取数据的修改。 [src.zip](https://github.com/armink/FlashDB/files/5834852/src.zip)
主要修改如下: (1)在文件fdb_utils.c中函数:_fdb_flash_read(fdb_db_t db, uint32_t addr, void *buf, size_t size)中,增加判断: int ret = fal_partition_read(db->storage.part, addr, (uint8_t *) buf, size); if (ret < 0) { result = FDB_READ_ERR; } (2)、在fdb_kvdb.c文件中,find_kv(fdb_kvdb_t db, const...
> 程序一般做法为删除之前的 9:00-10:00 的数据 如果用所谓的单调时间而不是系统时间,那么通过数据的时间查询就没有意义了
> 程序一般做法为删除之前的 9:00-10:00 的数据 按照你之前的回答,不能直接删除数据,所谓删除只能是修改tsl的状态,是吗?
朱工你好,请问,是否是这样做: static bool set_status_cb(fdb_tsl_t tsl, void *arg) { fdb_tsdb_t db = arg; FDB_INFO("set the TSL (time %ld) status from %d to %d\n", tsl->time, tsl->status, FDB_TSL_USER_STATUS1); fdb_tsl_set_status(db, tsl, FDB_TSL_USER_STATUS1); return false;...
另外一个问题,如果不删除之前的数据会导致什么后果?因为如果是日志信息,所有的我都不想删除。
朱工你好,谢谢你的回复,你在例程中这样写道: * NOTE: The actions to modify the state must be in order. * FDB_TSL_WRITE -> FDB_TSL_USER_STATUS1 -> FDB_TSL_DELETED -> FDB_TSL_USER_STATUS2 是否必须按照这个顺序来设置TSL的状态,比如需要设置tsl为 FDB_TSL_DELETED ,首先要设置为FDB_TSL_USER_STATUS1,再次设置FDB_TSL_DELETED?
嗯,好的,谢谢朱工! FlashDB很好用,在其进行初始化时,需要对每一个secotr写一个控制信息,如果分区空间比较大,比如3M Bytes,那么初始化时间就比较长,有没有办法改进一下,以减少初始化时间?
> 第一次格式化的时间好像没法省吧,这个也就只有第一次才存在问题 谢谢朱工,谢谢!