一、驱动层:SFUD(Serial Flash Universal Driver) 是一款开源的串行 SPI Flash 通用驱动库
二、中间层:FAL(FLASH ABSTRACTION LAYER))FLASH 抽象层
三、应用层:FlashDB(FlashDB 是一款超轻量级的嵌入式数据库)
后记1:FlashDB嵌入式数据库之TSDB数据存储解析


SFUD--串行Flash万能驱动库

  • SFUD是个啥?
  • 好了讲讲移植吧
  • 这就移植好了,来看看打印日志
  • 总结一下

SFUD是个啥?

SFUD–串行Flash万能驱动库
官方链接: https://www.oschina.net/p/SFUD?hmsr=aladdin1e1.

SFUD 是什么
SFUD 是一款开源的串行 SPI Flash 通用驱动库。由于现有市面的串行 Flash 种类居多,各个 Flash 的规格及命令存在差异, SFUD 就是为了解决这些 Flash 的差异现状而设计,让我们的产品能够支持不同品牌及规格的 Flash,提高了涉及到 Flash 功能的软件的可重用性及可扩展性,同时也可以规避 Flash 缺货或停产给产品所带来的风险。
主要特点:面向对象(同时支持多个 Flash 对象)、可灵活裁剪、扩展性强、支持 4 字节地址
资源占用
标准占用:RAM:0.2KB ROM:5.5KB
最小占用:RAM:0.1KB ROM:3.6KB
设计思路:这里要首先跟大家介绍一个标准: SFDP ,它是 JEDEC (固态技术协会)制定的串行 Flash 功能的参数表标准,最新版 V1.6B (点击这里查看)。该标准规定了,每个 Flash 中会存在一个参数表,该表中会存放 Flash 容量、写粗粒度、擦除命令、地址模式等 Flash 规格参数。目前,除了部分厂家旧款 Flash 型号会不支持该标准,其他绝大多数新出厂的 Flash 均已支持 SFDP 标准。所以该库在初始化时会优先读取 SFDP 表参数,如果该 Flash 不支持 SFDP,则查询配置文件 ( /sfud/inc/sfud_flash_def.h ) 中提供的 Flash 参数信息表 中是否支持该款 Flash。如果不支持,则可以在配置文件中添加该款 Flash 的参数信息。获取到了 Flash 的规格参数后,就可以实现对 Flash 的全部操作。

目前支持的FLASH类型列表

总结一下:SFUD就是一个SPI-FLASH的底层驱动,只要是遵循 JEDEC (固态技术协会)的芯片都是可以适配的,目前我理解的好处就是如果更换了硬件,只要是这个表里面的,就不需要改代码!!!

好了讲讲移植吧

  • 先把源文件放入工程中
    Github链接: https://github.com/armink/SFUD.
    先去下载库,然后放入自己的工程中(先不动),基本上就是这个样子的
  • 接着就是修改头文件了
    基本上不需要修改什么,先把配置文件改一下

#ifndef _SFUD_CFG_H_
#define _SFUD_CFG_H_#define SFUD_DEBUG_MODE     //使能SFUD的打印日志#define SFUD_USING_SFDP        //使能SFDP:JEDEC标准(JESD216)标准接口   注意:关闭后只会查询该库在 /sfud/inc/sfud_flash_def.h 中提供的 Flash 信息表。\这样虽然会降低软件的适配性,但减少代码量。#define SFUD_USING_FLASH_INFO_TABLE //是否使用该库自带的 Flash 参数信息表注意:关闭后该库只驱动支持 SFDP 规范的 Flash,也会适当的降低部分代码量。\另外 2.3.2 及 2.3.3 这两个宏定义至少定义一种,也可以两种方式都选择//支持多路外设
enum {SFUD_W25Q_DEVICE_INDEX = 0,
};//把实际使用的硬件和外设接口对应配置好
#define SFUD_FLASH_DEVICE_TABLE                                                \
{                                                                              \[SFUD_W25Q_DEVICE_INDEX] = {.name = "W25Q64JV", .spi.name = "SPI3"},       \
}#endif /* _SFUD_CFG_H_ */

这里的.name = “W25Q64JV” 就是自己取的名字,方便记忆的,我最开始以为是要和SFUD_FLASH_CHIP_TABLE的表里对应呢,原来根本没关系的,谁编写。

这就移植好了,来看看打印日志

总结一下

1.其实这个驱动库的原理是先通过通用的命令读取设备的信息
SFUD The flash device manufacturer ID is 0xEF, memory type ID is 0x40, capacity ID is 0x17.
2.就是上面这行,获取了厂家代码,设备型号,容量信息,然后去库中比配就知道用的是哪个厂家的哪个设备了(我用的是winbond的w25q64)
3.最后就是用读取的信息匹配相应的CMD,调用底层的擦、读、写操作了,所以可以做到自适应
4.其实这个库使用的还是比较多的,好多中间层会调用这个库作为底层接口,接着下一篇…
5.介绍了三部曲之一的SFUD底层适配层,接下来是FAL中间层.

SFUD简介和移植感受相关推荐

  1. ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植

    目录 ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植 Atmel两个官方lib介绍 一.CryptoAuthLib简介 Lib中最主要的三种对象类型: 二. ...

  2. DirectFB简介以及移植[一]【转】

    转自:https://blog.csdn.net/wavemcu/article/details/39251805 ****************************************** ...

  3. 爱联模组接入华为hilink总结——开发简介和移植(一)

    下面我讲述的爱联固件版本都是9.0.1.131前的,131后的版本都是带有PIN码的连接的,后面也都会使用带pin码的,为啥我现在不用,因为华为APP(在2020/2/14这个时间点)还没有上线带PI ...

  4. rt-thread ------fal移植

    系列文章目录 rt-thread 之 生成工程模板 文章目录 系列文章目录 前言 一.fal是什么? 二.移植 1.片内flash fal移植 step1:使能`RT-Thread Component ...

  5. Python之Pyforest:Pyforest的简介、安装、使用方法之详细攻略

    Python之Pyforest:Pyforest的简介.安装.使用方法之详细攻略 目录 pyforest简介 pyforest安装 pyforest使用方法 pyforest简介 pyforest,感 ...

  6. SimpleFOC移植STM32(二)—— 开环控制

    目录 注意事项 一.硬件介绍 1.1.硬件准备 1.1.1.SimpleMotor方案 1.1.2.SimpleFOCShield V2.0.3方案 1.2.硬件连接 1.2.1.原理图 1.2.2. ...

  7. 呆呆和你谈谈入职CVTE一个月的感受

    呆呆和你谈谈入职CVTE一个月的感受 你盼世界,我盼望你无bug.Hello 大家好!我是霖呆呆! 啊啊啊啊啊...至6.18日入职新公司CVTE已经一个多月了,在<你盼世界,我盼望你无bug| ...

  8. SimpleFOC移植STM32(六)—— 双电机控制和力矩反馈

    目录 一.说明 二.硬件介绍 2.1.原理图 2.2.准备清单 2.3.接线 三.程序演示 3.1.设置参数 3.2.编译下载 3.3.根据设置的控制模式操作 四.双电机控制总结 五.力矩反馈 5.1 ...

  9. ATECC508A芯片开发笔记(十一):NXP 平台移植ATECCx08 CryptoAuthLib库(I2C)

    目录 ATECC508A芯片开发笔记(十一):NXP 平台移植x08库(I2C) 一.CryptoAuthLib 二.Nxp RT10xx平台上移植CryptoAuthLib 2.1.在官网下载最新的 ...

最新文章

  1. 基于用户投票的排名算法(一):Delicious和Hacker
  2. php 根据坐标计算范围内,php计算经纬度是否在区域内
  3. Xilinx Vivado的使用详细介绍(1):创建工程、编写代码、行为仿真、Testbench
  4. 北大清华的状元之争:一个典型的囚徒困境
  5. 【ZJOI2010】数字计数 数位dp
  6. python中的series的结构_pandas 数据结构之Series的使用方法
  7. 力扣题目——1557. 可以到达所有点的最少点数目
  8. 小乌龟解决反向线上代码冲突
  9. VS Code 代码格式化
  10. 四大国有银行股份制改革的确切时间
  11. 傲腾内存 可以用ghost系统_光影精灵傲腾版笔记本安装win10系统操作教程
  12. 移动智能终端安全防护 笔记
  13. LNMP添加、删除虚拟主机
  14. [javascript] 实现展开全文和收起全文效果
  15. 老男孩数据库学习记录
  16. 为什么我们计算的RSI和同花顺通达信计算的值不一样
  17. js判断当前手机的操作系统
  18. Kali安装w3af详细教程
  19. WRTNode刷写戴维营提供的Uboot
  20. sql截取时分:15小时26分钟

热门文章

  1. 统一NER模型【W2NER】的中文效果测试(含代码)
  2. cc-project详细文档
  3. 每天汇总----10.18
  4. R语言点阵图dotplot参数详解
  5. 首页仪表盘echart_封装万能表单组件
  6. 【线上实习项目】大拿老师助力你的校招
  7. 你还在描等高线地形图?我已经用这款软件做完了地形分析
  8. 饥荒怎么解锁机器人_【饥荒解锁全人物】饥荒角色怎么解锁_角色解锁_饥荒人物解锁条件【图】_游戏城...
  9. tkinter滚动事件详解
  10. html 中的空格和nbps;