1、为什么使用FlashDB?
因为1)FlashDB能够延缓Flash寿命(因为Flash能写万次,所以这个理由勉强还行)2)足够可靠(很重要)3)易于检索,便于扩展(Key-Value设计)。
2、STM32 HAL这么流行,为什么没官方版?
因为,FlashDB是基于RTThread的FAL库,所以没有直接面向HAL的。
3、移植过程。
1)下载源码
FlashDB: 一款支持 KV 数据和时序数据的超轻量级数据库
为了得到FAL库、FlashDB库、官方提前预备的移植源码。
FAL库-头文件:fal.h、fal_def.h、fal_cfg.h
FAL库-C文件:fal.c、fal_partition.c、fal_flash.c、fal_flash_stm32f1_port.c
FlashBD-头文件:flashdb.h、fdb_low_lvl.h、fdb_def.h、fdb_cfg.h
FlashBD-C文件:fdb.c、fdb_utils.c、fdb_tsdb.c、fdb_kvdb.c、fdb_file.c
2)先移植FAL后FlashDB
2-1)移植FAL
第一步:修改fal_flash_stm32f1_port.c
按照图示进行修改。
另外,FLASGDB提供的示例有问题,如图所示,这里必须修改,否则无法运行。
2-2)修改fal_cfg.h
定义Flash分区表。起始地址设定要注意固件的大小,即给固件留出空间,以免出现BUG;结束地址不能超过片上Flash的最大地址。结束地址减去起始地址的差值为FlashDB存储空间的大小。各位需要根据实际情况进行设定。
2-3)修改fdb_cfg.h
按照图中提示进行修改即可。
4、可供测试的移植示例。
功能:验证能否读写Flash,确保FlashDB是否能够工作。示例使用的是VCT6,C8T6的可以根据实际的Flash大小(64*1024)及片大小(1*1024)进行修改。
链接如下:链接:https://pan.baidu.com/s/1D9onyeMNOwg2n6BI-GO5gw?pwd=xtcc
提取码:xtcc