Lines Matching full:flash

1 # SFUD (Serial Flash Universal Driver) 串行 Flash 通用驱动库
7Flash 通用驱动库。由于现有市面的串行 Flash 种类居多,各个 Flash 的规格及命令存在差异, SFUD 就是为了解决这些 Flash 的差异现状而设计,让我们的产品能够支持不同品牌…
9 - 主要特点:支持 SPI/QSPI 接口、面向对象(同时支持多个 Flash 对象)、可灵活裁剪、扩展性强、支持 4 字节地址
14Flash 功能的参数表标准,最新版 V1.6B ([点击这里查看](https://www.jedec.org/standards-documents/docs/jesd216b))。该标准规定…
15Flash 不支持 SFDP 标准,SFUD 会查询配置文件 ( [`/sfud/inc/sfud_flash_def.h`](https://github.com/armink/SFUD/blo…
19 - 避免项目因 Flash 缺货、Flash 停产或产品扩容而带来的风险;
20 - 越来越多的项目将固件存储到串行 Flash 中,例如:ESP8266 的固件、主板中的 BIOS 及其他常见电子产品中的固件等等,但是各种 Flash 规格及命令不统一。使用 SFUD 即可避免…
21 - 简化软件流程,降低开发难度。现在只需要配置好 SPI 通信,即可畅快的开始玩串行 Flash 了;
22 - 可以用来制作 Flash 编程器/烧写器
26 ### 2.1 已支持 Flash
28 下表为所有已在 Demo 平台上进行过真机测试过的 Flash。显示为 **不支持** SFDP 标准的 Flash 已经在 Flash 参数信息表中定义,更多不支持 SFDP 标准的 Flash
47 |[M25P40](https://www.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/m25p/m2…
48 |[M25P80](https://www.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/m25p/m2…
49 |[M25P32](https://www.micron.com/~/media/documents/products/data-sheet/nor-flash/serial-nor/m25p/m2…
50 |[EN25Q32B](http://www.kean.com.au/oshw/WR703N/teardown/EN25Q32B%2032Mbit%20SPI%20Flash.pdf)|EON|32…
64 > 一般情况下,支持四线快读的 FLASH 也支持两线快读。
68Flash 会对应一个该结构体,该结构体指针下面统称为 Flash 设备对象。初始化成功后在 `sfud_flash->chip` 结构体中会存放 SPI Flash 的常见参数。如果 SPI…
72 将会调用 `sfud_device_init` ,初始化 Flash 设备表中的全部设备。如果只有一个 Flash 也可以只使用 `sfud_device_init` 进行单一初始化。
74 > **注意**:初始化完的 SPI Flash 默认都 **已取消写保护** 状态,如需开启写保护,请使用 sfud_write_status 函数修改 SPI Flash 状态。
80 #### 2.2.2 初始化指定的 Flash 设备
83 sfud_err sfud_device_init(sfud_flash *flash)
88 |flash |待初始化的 Flash 设备|
92 当 SFUD 开启 QSPI 模式后,SFUD 中的 Flash 驱动支持使用 QSPI 总线进行通信。相比传统的 SPI 模式,使用 QSPI 能够加速 Flash 数据的读取,但当数据需要写入时…
94 所以 SFUD 对于 QSPI 模式的支持仅限于快速读命令。通过该函数可以配置 Flash 所使用的 QSPI 总线的实际支持的数据线最大宽度,例如:1 线(默认值,即传统的 SPI 模式)、2 线…
96 设置后,SFUD 会去结合当前设定的 QSPI 总线数据线宽度,去 [QSPI Flash 扩展信息表](https://github.com/armink/SFUD/blob/069d2b409e…
99 sfud_err sfud_qspi_fast_read_enable(sfud_flash *flash, uint8_t data_line_width)
104 | flash | Flash 设备 |
107 #### 2.2.4 获取 Flash 设备对象
109Flash 设备表,负责存放所有将要使用的 Flash 设备对象,所以 SFUD 支持多个 Flash 设备同时驱动。设备表的配置在 `/sfud/inc/sfud_cfg.h` 中 `SFUD_…
117 |index |Flash 设备位于 FLash 设备表中的索引值|
119 #### 2.2.5 读取 Flash 数据
122 sfud_err sfud_read(const sfud_flash *flash, uint32_t addr, size_t size, uint8_t *data)
127 |flash |Flash 设备对象|
132 #### 2.2.6 擦除 Flash 数据
134 > 注意:擦除操作将会按照 Flash 芯片的擦除粒度(详见 Flash 数据手册,一般为 block 大小。初始化完成后,可以通过 `sfud_flash->chip.erase_gran` 查看…
137 sfud_err sfud_erase(const sfud_flash *flash, uint32_t addr, size_t size)
142 |flash |Flash 设备对象|
146 #### 2.2.7 擦除 Flash 全部数据
149 sfud_err sfud_chip_erase(const sfud_flash *flash)
154 |flash |Flash 设备对象|
156 #### 2.2.8 往 Flash 写数据
159 sfud_err sfud_write(const sfud_flash *flash, uint32_t addr, size_t size, const uint8_t *data)
164 |flash |Flash 设备对象|
169 #### 2.2.9 先擦除再往 Flash 写数据
171 > 注意:擦除操作将会按照 Flash 芯片的擦除粒度(详见 Flash 数据手册,一般为 block 大小。初始化完成后,可以通过 `sfud_flash->chip.erase_gran` 查看…
174 sfud_err sfud_erase_write(const sfud_flash *flash, uint32_t addr, size_t size, const uint8_t *data)
179 |flash |Flash 设备对象|
184 #### 2.2.10 读取 Flash 状态
187 sfud_err sfud_read_status(const sfud_flash *flash, uint8_t *status)
192 |flash |Flash 设备对象|
195 #### 2.2.11 写(修改) Flash 状态
198 sfud_err sfud_write_status(const sfud_flash *flash, bool is_volatile, uint8_t status)
203 |flash |Flash 设备对象|
219 > 注意:关闭后只会查询该库在 `/sfud/inc/sfud_flash_def.h` 中提供的 Flash 信息表。这样虽然会降低软件的适配性,但减少代码量。
221 #### 2.3.3 是否使用该库自带的 Flash 参数信息表
225 > 注意:关闭后该库只驱动支持 SFDP 规范的 Flash,也会适当的降低部分代码量。另外 2.3.2 及 2.3.3 这两个宏定义至少定义一种,也可以两种方式都选择。
227 #### 2.3.4 既不使用 SFDP ,也不使用 Flash 参数信息表
231 此时,只要在定义 Flash 设备时,指定好 Flash 参数,之后再调用 `sfud_device_init` 对该设备进行初始化。参考如下代码:
243 #### 2.3.5 Flash 设备表
245 如果产品中存在多个 Flash ,可以添加 Flash 设备表。修改 `SFUD_FLASH_DEVICE_TABLE` 这个宏定义,示例如下:
260 上面定义了两个 Flash 设备(大部分产品一个足以),两个设备的名称为 `"W25Q64CV"` 及 `"GD25Q64B"` ,分别对应 `"SPI1"` 及 `"SPI3"` 这两个 SPI …
266 开启后,SFUD 也将支持使用 QSPI 总线连接的 Flash
270 移植文件位于 `/sfud/port/sfud_port.c` ,文件中的 `sfud_err sfud_spi_port_init(sfud_flash *flash)` 方法是库提供的移植方法,…
272 ### 2.5 添加库目前不支持的 Flash
274Flash 见 `SFUD_FLASH_CHIP_TABLE` 宏定义,需要提前准备的 Flash 参数内容分别为:| 名称 | 制造商 ID | 类型 ID | 容量 ID | 容量 | 写模式…
276Flash 为兆易创新的早期生产的型号,所以不支持 SFDP 标准。首先需要下载其数据手册,找到 0x9F 命令返回的 3 种 ID, 这里需要最后面两字节 ID ,即 `type id` 及 `…