当前位置: 首页 > 工具软件 > FlashDB > 使用案例 >

FlashDB 文件系统

燕宏胜
2023-12-01

FlashDB文件系统支持片上存储、外部存储器、操作系统文件系统接口。

FlashDB文件系统支持的底层接口有:FAL、C语言标准文件操作接口、POSIX 标准文件接口。

FlashDB 主要适用于少量数据存储的应用场景

在MCU的移植过程中主要使用FAL作为底层接口。

FAL存储底层接口说明

FAL 的作用是实现存储系统分区管理,可以对指定分区进行读写访问操作。

FAL 可以同时支持多个类型的存储器:片上FLASH、外部Nor Flash、等其他类型的存储器。

FAL移植步骤:

1.定义Flash Device 的参数类型,实现FLASH 初始化、读、写、擦除接口:

const struct fal_flash_dev stm32_onchip_flash =
{
    .name       = "stm32_onchip",        //设备名
    .addr       = 0x08000000,            //存储器的起始地址
    .len        = 256*1024,              //存储器的大小
    .blk_size   = 2*1024,                //最小的可擦除页的尺寸
    .ops        = {init, read, write, erase},    //flash 驱动接口
    .write_gran = 32                    //最小的允许的写入粒度
};

2. 在fal_cfg.h文件中定义 存储设备表 与存储分区表:

#ifndef _FAL_CFG_H_
#define _FAL_CFG_H_

#include <rtconfig.h>
#include <board.h>

#define NOR_FLASH_DEV_NAME             "norflash0"

/* ===================== Flash device Configuration ========================= */
extern const struct fal_flash_dev stm32f2_onchip_flash;
extern struct fal_flash_dev nor_flash0;

/* flash device table */
#define FAL_FLASH_DEV_TABLE                                          \
{                                                                    \
    &stm32f2_onchip_flash,                                           \
    &nor_flash0,                                                     \
}
/* ====================== Partition Configuration ========================== */
#ifdef FAL_PART_HAS_TABLE_CFG
/* partition table */
#define FAL_PART_TABLE                                                               \
{                                                                                    \
    {FAL_PART_MAGIC_WORD,        "bl",     "stm32_onchip",         0,   64*1024, 0}, \
    {FAL_PART_MAGIC_WORD,       "app",     "stm32_onchip",   64*1024,  704*1024, 0}, \
    {FAL_PART_MAGIC_WORD, "easyflash", NOR_FLASH_DEV_NAME,         0, 1024*1024, 0}, \
    {FAL_PART_MAGIC_WORD,  "download", NOR_FLASH_DEV_NAME, 1024*1024, 1024*1024, 0}, \
}
#endif /* FAL_PART_HAS_TABLE_CFG */

#endif /* _FAL_CFG_H_ */

3.另外对于SPI Flash 可以使用SFUD(spi flash 万能驱动) 

FlashDB 模组说明

支持两种类型的数据库:

键值数据库(KVDB)

        字符串可以直接进行存储。

        其他类型的数据可以用blob(标记数据、数据长度)数据块进行存储。

 时序数据(TSDB

        可以存储时间戳的数据信息,并可以按照时间戳的顺序输出数据结果。

定义FlashDB 配置文件


#ifndef _FDB_CFG_H_
#define _FDB_CFG_H_

/* using KVDB feature */
#define FDB_USING_KVDB

#ifdef FDB_USING_KVDB
/* Auto update KV to latest default when current KVDB version number is changed. @see fdb_kvdb.ver_num */
/* #define FDB_KV_AUTO_UPDATE */
#endif

/* using TSDB (Time series database) feature */
#define FDB_USING_TSDB

/* Using FAL storage mode */
#define FDB_USING_FAL_MODE

/* the flash write granularity, unit: bit
 * only support 1(nor flash)/ 8(stm32f2/f4)/ 32(stm32f1) */
#define FDB_WRITE_GRAN                 32

/* MCU Endian Configuration, default is Little Endian Order. */
/* #define FDB_BIG_ENDIAN  */ 

/* log print macro. default EF_PRINT macro is printf() */
/* #define FDB_PRINT(...)              my_printf(__VA_ARGS__) */

/* print debug information */
#define FDB_DEBUG_ENABLE

#endif /* _FDB_CFG_H_ */

 类似资料: