[STM32F4] stm32移植嵌入式数据库FlashDB

[复制链接]
1355|6
 楼主| 过期的塔头 发表于 2025-1-31 01:26 | 显示全部楼层 |阅读模式
介绍
FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。

FlashDB 提供两种数据库模式:

键值数据库 :是一种非关系数据库,它将数据存储为键值对集合,其中键作为唯一标识符。KVDB 操作简洁,可扩展性强。
时序数据库 :时间序列数据库,它将数据按照 时间顺序存储 。TSDB 数据具有时间戳,数据存储量大,插入及查询性能高。

二、作用
键值数据库 :产品参数    存储用户配置信息    存储小文件管理
时序数据库 :
存储动态产生的结构化数据:如 温湿度传感器采集的环境监测信息,智能手环实时记录的人体健康信息等
记录运行日志:存储产品历史的运行日志,异常告警的记录等

三、移植
FlashDB 底层的 Flash 管理及操作依赖于 RT-Thread 的 FAL Flash 抽象层开源软件包 ,该开源库也支持运行在 裸机平台 。所以只需要将所用到的 Flash 对接到 FAL ,即可完成整个移植工作。
8715679bb649d1406.png


FAL 底层将不同的 Flash 存储介质进行了统一封装,并提供了分区表机制,暴露给上层用户。

FlashDB 的每个数据库就是基于 FAL 提供的分区机制,每个数据库都坐落在某个 FAL 的分区上,相当于一个分区对应一个数据库。
77087679bb6513dd07.png


在定义 Flash 设备表前,需要先定义 Flash 设备。可以是片内 flash, 也可以是片外基于 SFUD 的 spi flash。

本次使用的是stm32f103c8t6单片机上的片内Flash。当然也可以在扩展的spi-flash上,也能在linux系统上扩展使用。

tpgf 发表于 2025-3-4 08:36 | 显示全部楼层
所使用的单片机型号、其Flash存储的类型(如片内Flash、片外基于SPI或QSPI的Flash等)及容量会影响后续的移植工作
磨砂 发表于 2025-3-4 17:59 | 显示全部楼层
从官方或其他可靠来源获取FlashDB的源码包,通常包含[size=0.875]FAL[size=0.875]FlashDB核心文件、示例代码等
晓伍 发表于 2025-3-4 19:47 | 显示全部楼层
根据实际使用的Flash芯片,在[size=0.875]fal_cfg.h文件中定义Flash设备的结构体,包括设备名称、起始地址、长度、宽度等信息
八层楼 发表于 2025-3-4 21:33 | 显示全部楼层
根据具体的硬件平台和Flash芯片,修改[size=0.875]fal_flash_sfud_port.c等文件,以实现FAL对Flash的操作接口。这可能涉及到SPI接口的配置、读写函数的实现等,需要参考芯片手册和FAL的文档进行正确的配置
观海 发表于 2025-3-4 23:21 | 显示全部楼层
根据需要选择使用键值数据库模式或时序数据库模式,并在[size=0.875]fdb_cfg.h文件中进行相应的配置
guanjiaer 发表于 2025-3-5 19:11 | 显示全部楼层
在单片机工程中,将整理好的[size=0.875]FAL[size=0.875]FlashDB相关文件添加到工程目录中,并在工程设置中正确配置头文件路径和源文件路径
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

999

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部