# SFUD (Serial Flash Universal Driver) 串行 Flash 通用驱动库
---
## 0、SFUD 是什么
[SFUD](https://github.com/armink/SFUD) 是一款开源的串行 SPI Flash 通用驱动库。由于现有市面的串行 Flash 种类居多,各个 Flash 的规格及命令存在差异, SFUD 就是为了解决这些 Flash 的差异现状而设计,让我们的产品能够支持不同品牌及规格的 Flash,提高了涉及到 Flash 功能的软件的可重用性及可扩展性,同时也可以规避 Flash 缺货或停产给产品所带来的风险。
- 主要特点:支持 SPI/QSPI 接口、面向对象(同时支持多个 Flash 对象)、可灵活裁剪、扩展性强、支持 4 字节地址
- 资源占用
- 标准占用:RAM:0.2KB ROM:5.5KB
- 最小占用:RAM:0.1KB ROM:3.6KB
- 设计思路:
- **什么是 SFDP** :它是 JEDEC (固态技术协会)制定的串行 Flash 功能的参数表标准,最新版 V1.6B ([点击这里查看](https://www.jedec.org/standards-documents/docs/jesd216b))。该标准规定了,每个 Flash 中会存在一个参数表,该表中会存放 Flash 容量、写粒度、擦除命令、地址模式等 Flash 规格参数。目前,除了部分厂家旧款 Flash 型号会不支持该标准,其他绝大多数新出厂的 Flash 均已支持 SFDP 标准。所以该库在初始化时会优先读取 SFDP 表参数。
- **不支持 SFDP 怎么办** :如果该 Flash 不支持 SFDP 标准,SFUD 会查询配置文件 ( [`/sfud/inc/sfud_flash_def.h`](https://github.com/armink/SFUD/blob/4bee2d0417a7ce853cc7aa3639b03fe825611fd9/sfud/inc/sfud_flash_def.h#L116-L142) ) 中提供的 **Flash 参数信息表** 中是否支持该款 Flash。如果不支持,则可以在配置文件中添加该款 Flash 的参数信息(添加方法详细见 [2.5 添加库目前不支持的 Flash](#25-添加库目前不支持的-flash))。获取到了 Flash 的规格参数后,就可以实现对 Flash 的全部操作。
## 1、为什么选择 SFUD
- 避免项目因 Flash 缺货、Flash 停产或产品扩容而带来的风险;
- 越来越多的项目将固件存储到串行 Flash 中,例如:ESP8266 的固件、主板中的 BIOS 及其他常见电子产品中的固件等等,但是各种 Flash 规格及命令不统一。使用 SFUD 即可避免,在相同功能的软件平台基础下,无法适配不同 Flash 种类的硬件平台的问题,提高软件的可重用性;
- 简化软件流程,降低开发难度。现在只需要配置好 SPI 通信,即可畅快的开始玩串行 Flash 了;
- 可以用来制作 Flash 编程器/烧写器
## 2、SFUD 如何使用
### 2.1 已支持 Flash
下表为所有已在 Demo 平台上进行过真机测试过的 Flash。显示为 **不支持** SFDP 标准的 Flash 已经在 Flash 参数信息表中定义,更多不支持 SFDP 标准的 Flash 需要大家以后 **共同来完善和维护** **([Github](https://github.com/armink/SFUD)|[OSChina](http://git.oschina.net/armink/SFUD)|[Coding](https://coding.net/u/armink/p/SFUD/git))** 。
如果觉得这个开源项目很赞,可以点击 [项目主页](https://github.com/armink/SFUD) 右上角的 **Star** ,同时把它推荐给更多有需要的朋友。
|型号|制造商|容量|最高速度|SFDP 标准|QSPI 模式|备注|
|:--:|:----:|:--:|:--:|:--:|:--:|----|
|[W25Q40BV](http://microchip.ua/esp8266/W25Q40BV(EOL).pdf)|Winbond|4Mb|50Mhz|不支持|双线|已停产|
|[W25Q80DV](http://www.winbond.com/resource-files/w25q80dv_revg_07212015.pdf)|Winbond|8Mb|104Mhz|支持|双线||
|[W25Q16BV](https://media.digikey.com/pdf/Data%20Sheets/Winbond%20PDFs/W25Q16BV.pdf)|Winbond|16Mb|104Mhz|不支持|双线| by [slipperstree](https://github.com/slipperstree)|
|[W25Q16CV](http://www.winbond.com/resource-files/da00-w25q16cvf1.pdf)|Winbond|16Mb|104Mhz|支持|未测试||
|[W25Q16DV](http://www.winbond.com/resource-files/w25q16dv%20revk%2005232016%20doc.pdf)|Winbond|16Mb|104Mhz|支持|未测试| by [slipperstree](https://github.com/slipperstree)|
|[W25Q32BV](http://www.winbond.com/resource-files/w25q32bv_revi_100413_wo_automotive.pdf)|Winbond|32Mb|104Mhz|支持|双线||
|[W25Q64CV](http://www.winbond.com/resource-files/w25q64cv_revh_052214[2].pdf)|Winbond|64Mb|80Mhz|支持|四线||
|[W25Q128BV](http://www.winbond.com/resource-files/w25q128bv_revh_100313_wo_automotive.pdf)|Winbond|128Mb|104Mhz|支持|四线||
|[W25Q256FV](http://www.winbond.com/resource-files/w25q256fv%20revi%2002262016%20kms.pdf)|Winbond|256Mb|104Mhz|支持|四线||
|[MX25L3206E](http://www.macronix.com/Lists/DataSheet/Attachments/3199/MX25L3206E,%203V,%2032Mb,%20v1.5.pdf)|Macronix|32Mb|86MHz|支持|双线||
|[KH25L4006E](http://www.macronix.com.hk/Lists/Datasheet/Attachments/117/KH25L4006E.pdf)|Macronix|4Mb|86Mhz|支持|未测试| by [JiapengLi](https://github.com/JiapengLi)|
|[KH25L3206E](http://www.macronix.com.hk/Lists/Datasheet/Attachments/131/KH25L3206E.pdf)|Macronix|32Mb|86Mhz|支持|双线||
|[SST25VF016B](http://ww1.microchip.com/downloads/en/DeviceDoc/20005044C.pdf)|Microchip|16Mb|50MHz|不支持|不支持| SST 已被 Microchip 收购|
|[M25P40](https://www.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/m25p/m25p40.pdf)|Micron|4Mb|75Mhz|不支持|未测试| by [redocCheng](https://github.com/redocCheng)|
|[M25P80](https://www.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/m25p/m25p80.pdf)|Micron|8Mb|75Mhz|不支持|未测试| by [redocCheng](https://github.com/redocCheng)|
|[M25P32](https://www.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/m25p/m25p32.pdf)|Micron|32Mb|75Mhz|不支持|不支持||
|[EN25Q32B](http://www.kean.com.au/oshw/WR703N/teardown/EN25Q32B%2032Mbit%20SPI%20Flash.pdf)|EON|32Mb|104MHz|不支持|未测试||
|[GD25Q16B](http://www.gigadevice.com/product/detail/5/410.html)|GigaDevice|16Mb|120Mhz|不支持|未测试| by [TanekLiang](https://github.com/TanekLiang) |
|[GD25Q64B](http://www.gigadevice.com/product/detail/5/364.html)|GigaDevice|64Mb|120Mhz|不支持|双线||
|[S25FL216K](http://www.cypress.com/file/197346/download)|Cypress|16Mb|65Mhz|不支持|双线||
|[S25FL032P](http://www.cypress.com/file/196861/download)|Cypress|32Mb|104Mhz|不支持|未测试| by [yc_911](https://gitee.com/yc_911) |
|[S25FL164K](http://www.cypress.com/file/196886/download)|Cypress|64Mb|108Mhz|支持|未测试||
|[A25L080](http://www.amictechnology.com/datasheets/A25L080.pdf)|AMIC|8Mb|100Mhz|不支持|双线||
|[A25LQ64](http://www.amictechnology.com/datasheets/A25LQ64.pdf)|AMIC|64Mb|104Mhz|支持|支持||
|[F25L004](http://www.esmt.com.tw/db/manager/upload/f25l004.pdf)|ESMT|4Mb|100Mhz|不支持|不支持||
|[PCT25VF016B](http://pctgroup.com.tw/attachments/files/files/248_25VF016B-P.pdf)|PCT|16Mb|80Mhz|不支持|不支持|SST 授权许可,会被识别为 SST25VF016B|
|[AT45DB161E](http://www.adestotech.com/wp-content/uploads/doc8782.pdf)|ADESTO|16Mb|85MHz|不支持|不支持|ADESTO 收购 Atmel 串行闪存产品线|
> 注:QSPI 模式中,双线表示支持双线快读,四线表示支持四线快读。
>
> 一般情况下,支持四线快读的 FLASH 也支持两线快读。
### 2.2 API 说明
先说明下本库主要使用的一个结构体 `sfud_flash` 。其定义位于 `/sfud/inc/sfud_def.h`。每个 SPI Flash 会对应一个该结构体,该结构体指针下面统称为 Flash 设备对象。初始化成功后在 `sfud_flash->chip` 结构体中会存放 SPI Flash 的常见参数。如果 SPI Flash 还支持 SFDP ,还可以通过 `sfud_flash->sfdp` 看到更加全面的参数信息。以下很多函数都将使用 Flash 设备对象作为第一个入参,实现对指定 SPI Flash 的操作。
#### 2.2.1 初始化 SFUD 库
将会调用 `sfud_device_init` ,初始化 Flash 设备表中的全部设备。如果只有一个 Flash 也可以只使用 `sfud_device_init` 进行单一初始化。
> **注意**:初始化完的 SPI Flash 默认都 **已取消写保护** 状�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
野火霸道V2,外部flash移植FlashDB (860个子文件)
00092bc345a7db324095766425de4731605d64 49KB
0158f08b96fdffa77b96c99aab31bcfb9d99dd 460B
017281205ab8d6bef728b116284d9239d3971f 1KB
01f2e1a17a8ce5b3f12121fdeeb2d1b99f8ae6 194B
0257e0f4671504252009b3725cad98810a33e6 72B
025e2ff039e757531907a57bd1c440f0db1ddf 1KB
03152e19c7a40968d809c5ced2d927dc823ce4 87KB
03bae1e9b42a0033cc1f8ac2dc1f079bd47c30 92KB
04575f86720b6e3fe16c9cbeda021692f5b9d6 57B
04c3c9a79a8dee93b540f66ff01db98c6f2db2 339B
0571ea7cae6f56684369434e6293e8b1bc384a 103B
0596f493dfcfbc7a2b6181d8775e8ee872b59b 86B
05fb3b8a790cb43cd693fc4130c0137a8bab17 2KB
072df3afb86dc23515f9f7d73045f8ccdb5454 5KB
07caeaa3d9280703f84f60fcff4c6315da4cf0 91KB
084fd4e6398a60d61108f97ef0d06c066b90bd 329B
0896e15eef399b69a3080bee28705c0df9a1f8 33B
092e18e88b8695213fb7c21f18865debf09055 194B
097fc337b4791a48a4e54ddbe32d35179f3336 91KB
09df03a6dcbf63e02201c7c0f8e2fd8324e05a 90KB
0ac98248dfbb35ad96a7bf2de04c300f071f9d 58B
0b2539cff1ffdac4513bfb17d2a912cb93760b 3KB
0ba7f8116f33eae5d371462b628c58ba7bd51c 2KB
0becdf20a9fb429334e7e0cd9bb3080a076910 15KB
0dbe58713ce75130bfc664358a2cf49bcb4b72 87KB
0de52de3cc543516e3a8d39263e530df3ff35a 153B
0dfcd3f808f8767c32bd96af3f218f9b9e2f25 86KB
0efa1fed17e00d79e6854745622994fcd5ee9f 11KB
0f29feb8172967577012b408d12c4f2718fadc 34KB
0f82652ee46f15916810298ed6163bef0da9ef 87KB
10418626b019bef44f962fb9c0bc05eab501e6 4KB
104447c3fe06e2056b729e583c1424b748be66 254B
104d51fabc55822f25dae922402fcd5df8857d 91KB
104f4749a50745d3aaa58019d6b1eb813e4662 219B
10834fb5adc9ca10c8ee76bfa3e82893b519b9 81B
1091e4d6326bbf73924f6091722bb0342acb8d 9KB
10b4b745cf6ed175b146f73d8ff9980bd2705b 4KB
10d5e5b5ca38cde061c09fb0324d1a6fbfc212 145KB
117ab291e75f3a812a2bebeb46ffa618f64409 88KB
12839d8dc83201edb13f3213c0598c2515f827 91KB
129d391af147d6e3f2df1d9c8a02bdd67a5a45 19KB
12e45ac4572b674c2143a24b981e432a803012 1KB
1332457375beef1a83218554000e1d8a42f45e 81B
134b225f4eb44e601e0356b80a1d02d352cb47 16KB
151efff9bb4d3e68b88d432a1bb91401f75d0e 89KB
16e636624e547b244edac3d8453baedaec670a 5KB
1719d76a8345df9adacd2b3cf69cefeb8b3a3a 6KB
1769d9fe452dad652e98dd7fcde3779eee7422 5KB
17a6f1fb29e044c9da06b1c06a58a8456a2d4c 305B
19827ca6fc1acfc79336f210fd471586c19879 3KB
19c7fc4f8e81d478b8fbc836c97da9ed44bfa0 3KB
1a045e6f43e794e8ddc6c0b12530668501836a 87KB
1a7d3ffc2f9268d93199a0e77f9582ef6f1d35 307B
1b3a29b8f0f3b20bcbd8c7bef69205bb30ef71 171B
1bf49783cd3f13eb3f7160bfb2a424c936715d 88KB
1c193b178db93e80388e960f773a67077f9ac1 88KB
1c4e74b6adc65c446a8d8414435fa3e6ea8a79 950B
1dda21975eb4cab0f976d46b59b5383a50798a 14KB
1e7ed42bc157b37b29799167111049898761c0 24KB
1eeb9e9f8b2b4b0d119366dda99c6fd7d35c64 4KB
1fce96da5f4f6a83d39a2b57976b350fcd2de9 11KB
1fd0441275fa8ac6e7ae2bf52512d3daab1a24 14KB
1fdc973571d32d6e7eb5113729919928228aa2 88KB
20b4c5e5224e6ce6cc8094c2ebe95cc8284526 16KB
213532a72d944710e06c6627d86ec8028e120b 87KB
22ca25006eac73b90741d85c89b5776fd68906 2KB
22eab24dd92ef76e0d789e189ad8d7f540bf57 91KB
23004e1e5613cc897da8f8eb0cb5471961103f 87KB
2340e0f9848d9bcc994d2f18abea25210e877f 88KB
23aba2e094d1c5ded3755cc6b134db90cd17e4 31KB
240dcf775f4d275a467ce935fc7e4ef9dda75a 3KB
24c3c9fe76e44c66579a7adbe0a786f8705c55 88KB
24dc404042584afbd6bd809c296ea6145e3f4a 11KB
258f8fefb756ed961df656a703e4addf785fc4 89KB
25aa97277c2e82b4ec877b3031a942c969ea76 306B
26122e622e880f634c472292516199828742eb 2KB
2615ac7eb46eda87c48fbe4c9857d01d5006c8 87KB
262e28141f495364ca5dfb0d034bc7b93b8947 4KB
27487e263ad80ef982c27a7faddeb16840c6bd 90KB
275fe1a577873e2f492f6f21471314c913ed4a 4KB
27d145eb629e11121087e27dfe4289a54f910d 223B
27e073912f6db111bec03118e53beb16fc4f4d 1.36MB
27f245627713462501144f69801813b986f905 13KB
2818ee2d94e59765914719f34d8ff99569d44d 87KB
284c6cde6fb7dc2bdd322f54ecabb9cf359d47 11KB
290d5826249264eca1c66185bbcdb8be8bcc48 2KB
293c3bd8ff21e7bb54bfdc6282b7c0f3796b25 4KB
29a4f76f13b712d140e01746c71a2135947d75 210B
29e9bcd9e77ef61ef851f7d31db9595499b418 87KB
2a63a9020f5151cb04511c92878aa3be803cc1 306B
2b4c2a3a64a01de1408c2e5d73ab6b981e1f13 140B
2b8c68becee25ff8c25383790e7dca10d83bb6 12KB
2bf392f4590a01590d526e4f3f9d883fea33b8 147B
2dde5ebdacf0dd669f604fdea420e1deb4dc08 1KB
2e214016570d9394186a803b44c0d0878f9b1d 295B
2f2e1e6306727cacbb56efcc72914e60238ade 228B
2f6b64d464d80620f43b0d7cca8c8f417b0dec 1KB
2fa87ccebd3d9261a5841c982712294c9e4908 4KB
2fd033b365b5760e3ec07db1d0c7fd8423ec2d 2KB
2fd553fafbd4e5c5406d4d757090918f344f5c 307B
共 860 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
萌新小白YXY
- 粉丝: 324
- 资源: 15
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Java字符串转换处理工具类
- windows USB 驱动,用于PL2303芯片上报GPS信息使用
- McFly 为 Bash 提供历史命令搜索功能 v0.9.2
- Package Control-12.22.sublime-package.zip
- Dragon book编译器龙书源码附详细注释
- 华为云开发者服务协议.pdf
- Hyper-YOLO保姆级教程(私以为的YOLOv12)
- Hyper-YOLO保姆级教程(私以为的YOLOv12)
- Java课程课后作业答案(1).zip
- IMG_20230412_094114.jpg
- asm-西电微机原理实验
- py-apple-quadruped-robot-四足机器人
- asm-西电微机原理实验
- asm-西电微机原理实验
- py-apple-bldc-quadruped-robot-四足机器人
- asm-西电微机原理实验
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功