# armink/SFUD

An using JEDEC's SFDP standard serial (SPI) flash universal driver library | 一款使用 JEDEC SFDP 标准的串行 (SPI) Flash 通用驱动库

Repository: https://github.com/armink/SFUD
Canonical: https://ross.abutalabs.com/products/sfud
Language: C
License: MIT
License Family: permissive
Topics: jedec, sfdp, spi-flash, universal-driver, driver, flash, sfdp-flash, jedec-sfdp, qspi
Last push: 2025-05-30T03:45:44+00:00

## Health v2 (maintenance only)
Score: 34/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 24, release rhythm 8, longevity 100
- inputs: {"age_days": 3695, "days_push": 460, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1713, forks 529 (observed 2026-08-28T04:05:26.045372+00:00)

## What it is
SFUD is an open-source universal driver library in C for serial SPI/QSPI flash chips, based on the JEDEC SFDP standard parameter table. It abstracts differences between flash manufacturers so one codebase can read, write, and erase many flash models, with a fallback parameter table for chips lacking SFDP support.

## Use cases
- drive different brands of SPI flash with one portable driver
- support flash chip swaps without code changes when parts go end-of-life
- read and write firmware images stored on external SPI flash
- build a flash programmer/burner tool
- access QSPI flash on an MCU with 4-byte addressing
- add flash storage to an embedded product with minimal RAM/ROM budget

## When to choose
- you are writing bare-metal or RTOS C code for an MCU with SPI or QSPI flash
- you need to support multiple or unknown flash chip models via SFDP auto-detection
- resource footprint matters (under 1KB RAM, a few KB ROM)
- you want MIT-licensed, easily trimmed driver code

## When to avoid
- you need a filesystem layer on top of flash rather than raw read/write/erase
- your storage is eMMC, SD, NAND, or parallel flash rather than serial NOR SPI flash
- you work in a higher-level environment (Linux has its own MTD/SPI drivers)
- your chip lacks SFDP and is not in the built-in parameter table and you cannot add it

## Facets
- artifact type: library
- maturity: stable
- function: embedded, file-system, developer-tools
- domain: embedded-systems, hardware, developer-tools
- platform: embedded, c, cross-platform
- tags: spi-flash, sfdp, qspi, flash-driver, embedded-c, jedec

## Member repositories
- armink/SFUD (main) score 34

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:26.045372+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T03:34:41.746982+00:00, confidence not recorded.
  - readme: https://github.com/armink/SFUD (fetched 2026-08-28T04:05:26.045372+00:00, sha ec7198f4b61e)
- Data as of 2026-08-30T08:39:29.467469+00:00.
