SFUD 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
SFUD 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
SFUD 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
SFUD 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
SFUD 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

SFUD (Serial Flash Universal Driver)  串行 Flash 万能驱动库


0、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 的参数信息(添加方法详细见 2.5 添加库目前不支持的 Flash)。获取到了 Flash 的规格参数后,就可以实现对 Flash 的全部操作。

1、为什么选择 SFUD

  • 避免项目因 Flash 缺货、Flash 停产或产品扩容而带来的风险;

  • 越来越多的项目将固件存储到串行 Flash 中,例如:ESP8266 的固件、主板中的 BIOS 及其他常见电子产品中的固件等等,但是各种 Flash 规格及命令不统一。使用 SFUD 即可避免,在相同功能的软件平台基础下,无法适配不同 Flash 种类的硬件平台的问题,提高软件的可重用性;

  • 简化软件流程,降低开发难度。现在只需要配置好 SPI 通信,即可畅快的开始玩串行 Flash 了;

  • 可以用来制作 Flash 编程器/烧写器

2、SFUD 如何使用

2.1 已支持 Flash

下表为所有在 Demo 平台上进行过真机测试的 Flash。目前 SFUD 提供的 Flash 参数信息表 只包括下表中 不支持 SFDP 标准的 Flash,其他不支持 SFDP 标准的 Flash 需要大家以后 共同来完善和维护 (Github|OSChina) 。如果觉得这个开源项目很赞,可以点击 项目主页 右上角的 Star ,同时把它推荐给更多有需要的朋友。

型号 制造商 容量 最高速度 SFDP 备注
W25Q40BV Winbond 4Mb 50Mhz 不支持 已停产
W25Q80DV Winbond 8Mb 104Mhz 支持
W25Q16CV Winbond 16Mb 104Mhz 支持
W25Q32BV Winbond 32Mb 104Mhz 支持
W25Q64CV Winbond 64Mb 80Mhz 支持
W25Q128BV Winbond 128Mb 104Mhz 支持
MX25L3206E Macronix 32Mb 86MHz 支持
KH25L3206E Macronix 32Mb 86Mhz 支持
SST25VF016B Microchip 16Mb 50MHz 不支持 SST 已被 Microchip 收购
M25P32 Micron 32Mb 75Mhz 不支持
EN25Q32B EON 32Mb 104MHz 不支持
GD25Q64B GigaDevice 64Mb 120Mhz 不支持
S25FL216K Cypress 16Mb 65Mhz 不支持
A25LQ64 AMIC 64Mb 104Mhz 支持
A25L080 AMIC 8Mb 100Mhz 不支持
F25L004 ESMT 4Mb 100Mhz 不支持
PCT25VF016B PCT 16Mb 80Mhz 不支持 SST 授权许可,会被识别为 SST25VF016B
AT45DB161E ADESTO 16Mb 85MHz 不支持 ADESTO 收购 Atmel 串行闪存产品线

更多 API 说明 及 配置方法详见源码中的说明文档及 https://github.com/armink/SFUD

目前以支持如下平台下的 Demo

路径 平台描述
/demo/stm32f10x_non_os STM32F10X 裸机平台
/demo/stm32f2xx_rtt STM32F2XX + RT-Thread 操作系统平台


展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (4)

加载中
这个怎么下载,点了源码下载,很奇怪
2019/11/20 14:36
回复
举报
感谢分享,准备在下一个产品上使用该库
2019/02/13 16:11
回复
举报
打分: 力荐
很有用,这种库很难得
2017/04/27 10:49
回复
举报
armink软件作者
串行 Flash 万能驱动库。驱动一次 SPI,适配全部 SPI Flash 。嵌入式的朋友们可以试试。 #SFUD#
2016/07/29 08:24
回复
举报
更多评论
发表了资讯
2016/07/29 00:00

SFUD V0.07.13 正式版发布,串行 Flash 万能驱动库

SFUD (Serial Flash Universal Driver) 串行 Flash 万能驱动库 0、SFUD 是什么 SFUD 是一款开源的串行 SPI Flash 通用驱动库。由于现有市面的串行 Flash 种类居多,各个 Flash 的规格及命令存在差异, SFUD 就是为了解决这些 Flash 的差异现状而设计,让我们的产品能够支持不同品牌及规格的 Flash,提高了涉及到 Flash 功能的软件的可重用性及可扩展性,同时也可以规避 Flash 缺货或停产给产品所带来的风险。 主要特点:面向对象...

0
15
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
02/01 09:45

潘多拉开发板SFUD初始化失败问题[SFUD] Error W25Q128 flash device is initialize fail

潘多拉开发板SFUD初始化失败问题[SFUD] Error: W25Q128 flash device is initialize fail. 问题描述如下: 潘多拉开发板SFUD初始化失败,提示设备不支持。 原因 潘多拉有一批板载的FLASH更换了厂家,代码不兼容。同样遇到这个问题的小伙伴可以检查板载的flash的丝印层是否带有nm25字样。 解决方案 使用这个SDK仓库:仓库地址 并检出到fix_nm25q分支下的代码。 这个仓库不是官方资料中给,感谢某个大神的提供。 接着运行里面的k...

0
0
2020/06/02 13:05

STM32通用FLASH管理软件包——SFUD/FAL

本次介绍的两个软件包SFUD/FAL都与FLASH有关,并且都可以独立使用或者结合在一起使用,两个软件包都对操作系统无依赖,可以使用裸机移植,也很方便移植到各种系统。 这两个软件包的作者都是armink,armink的开源仓库地址:https://github.com/armink,更多好玩的软件,请到作者仓库查询。 这两个软件包也是OTA的底层,如果对OTA感兴趣的也可以参考此文章。 以下将结合rtthread系统,分别对这两个软件包做下演示。 1.SFUD SFUD ...

0
0
2019/11/28 23:12

SFUD | 一个简洁实用的开源项目,帮你轻松搞定SPI Flash

你是否因为搞不定 SPI Flash 而掉了好多头发? 你是否因为手撸 SPI Flash 驱动而浪费了大量开发时间? 你是否因为突然之间更换 SPI Flash 型号而去找产品打架? 如果没有,可以关闭这篇文章啦,有这时间去刷抖音开心开心不好吗~ 如果有的话,你很幸运哈哈,在对的时间遇到对的库,接下来 mculover666 带你一起手把手在裸机移植 SFUD。 废话少说,接下来有请主角 SFUD 登场~ 1. SFUD SFUD 全称 Serial Flash Universal Driver,是...

0
0
发表了博客
2020/08/17 17:23

RT-Thread Studio移植EasyFlash和ulog_easyflash注意事项

Github官方源码及文档看这里: https://github.com/armink/EasyFlash https://github.com/armink-rtt-pkgs/ulog_easyflash 移植过程参考官方文档即可,这里简单说一下我自己在移植过程中踩过的坑以及一些注意事项: 尽量在RT-Thread里面使用一种日志,ulog和easylogger尽可能选择其中一个即可,否则会造成一些不必要的麻烦。我原先在开启ulog的基础上配置easylogger的时候,INFO初始化时遇到了问题,后来发现ulog的配置和EasyL...

0
0
发表于行业趋势专区
01/02 20:00

痞子衡嵌入式半月刊:第 1 期

这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 唠两句 今天是农历庚子鼠年正月十五,传统元宵佳节,但因为 2019-nCoV 肺炎疫情不减,节日气氛平淡了些。 原计划这个半月刊能按二十四节气交节之日准时发布,但这第一期就没能准时,离立春已经过去...

0
0
发表了博客
2019/04/10 10:10

《痞子衡嵌入式半月刊》 第 1 期

痞子衡嵌入式半月刊: 第 1 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 唠两句 今天是农历庚子鼠年正月十五,传统元宵佳节,但因为 2019-nCoV 肺炎疫情不减,节日气氛平淡了些。 原计划这个半月刊能按二十四节气交节之日准时发布,但这第一...

0
0
2020/06/20 14:53

零代码玩转OTA升级

点击“蓝字”关注我们吧 前言: 前边讲过stm32通用bootloader的实现方法,没有看过的,可以参考这一篇文章:STM32通用Bootloader——FOTA,这次将在上篇bootloader的基础上,介绍app如何通过多种固件下载器实现OTA升级。 先看下演示视频,此视频演示了四种升级方式,分别是: 阿里云物联网平台OTA HTTP OTA Ymodem OTA 不用app,使用Bootloader中的Ymodem OTA 此项目硬件使用的是STM32F429开发板,代码全部使用RT-Thread Studi...

0
1
发表了博客
2020/10/22 14:08

轻量级嵌入式数据库FlashDB的介绍与使用

一、FlashDB的介绍 FlashDB 是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB 结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。 FlashDB 提供两种数据库模式: 键值数据库 和 时序数据库。 二、移植 定义 flash 设备 在定义 Flash 设备表前,需要先定义 Flash 设备。可以是片内 flash, 也可以是片外基于...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
4 评论
32 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部