教程较长,按需阅读
前言
FlashDB 是一款超轻量级的嵌入式数据库。它结合了 Flash 的特性,具有较强的性能及可靠性。
FlashDB提供了键值数据库和时序数据库两种数据库模式,不仅资源占用极低,内存占用几乎为 0,而且存储容量大,非常适合用于物联网产品。
移植
根据 FlashDB开发文档,FlashDB 底层的 Flash 管理及操作依赖于 RT-Thread 的 FAL (Flash Abstraction Layer) Flash 抽象层开源软件包,所以将所用到的 Flash 对接到 FAL ,即可完成整个移植工作。
FlashDB移植的关键是FAL的移植。本文在片外flash上搭建FAL,并移植FlashDB。
下面我们就开始实际操作,从将flash挂载到spi总线上开始,最终完成FlashDB数据库的搭建。新手可以跟着一步一步做,有一些开发经验的朋友可以选择性地阅读。
1.开启SPI总线
新建一个空白的RT-Thread项目,本文基于STM32F103芯片。
首先在drivers目录下打开board.h
文件,找到SPI对应部分。根据指导,一步一步做下去。
操作步骤
step1:打开RT-Thread Settings,点击更多配置来到组件一栏,勾选如下。
step2:board.h
文件中,打开SPI宏定义。
step3:使用stm32cubemx产生初始化函数,将其粘贴于board.c
文件末尾。
然后选择芯片型号——>填写项目名称,双击IOC文件后如图操作。
复制初始化函数到board.c
文件。(ps:初始化函数在哪个文件中,名字叫什么,在board.h文件对应部分都是可以找到的哦)
step4:在drivers目录下的stm32f1xx_hal_conf.h
文件中打开SPI驱动。
验证
配置完成,让我们编译下载一下,看看有没有成功。
使用list_device
指令查看设备,可以看到SPI总线已经存在了。
2.挂载片外flash
接下来,我们将片外flash(W25Q128)挂到SPI总线上。
代码
此处,参考RT-Thread官方开发文档,在application目录下,新增flash.c
文件。
#include <rtthread.h>
#include <board.h>
#include <rtdevice.h>
#include "drv_spi.h"
#include "spi_flash.h"
#include "spi_flash_sfud.h"
#define DBG_TAG "flash"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>
#define W25Q_SPI_BUS_NAME "spi1" /* 上一步骤 打开的是SPI1,这里也写1,一定要对应*/
#