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

程序名称:SFUD SFUD (Serial Flash Universal Driver) 串行 Flash 万能驱动库

授权协议: MIT

操作系统: 跨平台

开发语言: C/C++

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

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

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 的全部操作。

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

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

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

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

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

型号 制造商 容量 最高速度 SFDP 备注
[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 支持
[W25Q16CV](http://www.winbond.com/resource-files/da00-w25q16cvf1.pdf) Winbond 16Mb 104Mhz 支持
[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%5B2%5D.pdf) Winbond 64Mb 80Mhz 支持
[W25Q128BV](http://www.winbond.com/resource- files/w25q128bv_revh_100313_wo_automotive.pdf) Winbond 128Mb 104Mhz 支持
[MX25L3206E](http://www.macronix.com/Lists/DataSheet/Attachments/3199/MX25L3206E,%203V,%2032Mb,%20v1.5.pdf) Macronix 32Mb 86MHz 支持
[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 收购
[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 不支持
[GD25Q64B](http://www.gigadevice.com/product/download/24.html) GigaDevice 64Mb 120Mhz 不支持
[S25FL216K](http://www.cypress.com/file/197346/download) Cypress 16Mb 65Mhz 不支持
[A25LQ64](http://www.amictechnology.com/datasheets/A25LQ64.pdf) AMIC 64Mb 104Mhz 支持
[A25L080](http://www.amictechnology.com/datasheets/A25L080.pdf) AMIC 8Mb 100Mhz 不支持
[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 串行闪存产品线

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

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

路径 平台描述
[/demo/stm32f10x_non_os](https://github.com/armink/SFUD/tree/master/demo/stm32f10x_non_os) STM32F10X 裸机平台
[/demo/stm32f2xx_rtt](https://github.com/armink/SFUD/tree/master/demo/stm32f2xx_rtt) STM32F2XX + [RT-Thread](http://www.rt-thread.org/) 操作系统平台

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

http://git.oschina.net/armink/SFUD

相关编程语言

MuPlayer 是一款跨平台、轻量级的音频播放解决方案,...
OS FLV 是一个 开源和可嵌入网页的flv播放器。 这个...
DewPlayer音乐播放器,样式很简单,而且很实用.播放器...
JW FLV MEDIA PLAYER是一个开源的在网页上使用的Fla...
Speakker 是一个基于 Web 浏览器的音乐播放器,只提...
Player Framework 是一个开源的支持 HTML5 的视频播...