SFUD固件移植

SFUD作用

SFUD 是一款开源的串行 SPI Flash 通用驱动库。由于现有市面的串行 Flash 种类居多,各个 Flash 的规格及命令存在差异, SFUD 就是为了解决这些 Flash 的差异现状而设计,让我们的产品能够支持不同品牌及规格的 Flash,提高了涉及到 Flash 功能的软件的可重用性及可扩展性,同时也可以规避 Flash 缺货或停产给产品所带来的风险。使用SFUD用户只用配置好最底层的SPI(QSPI)相关的接口配置和收发函数就行了,其余的例如写使能之类的操作固件内根据flash芯片的参数就自动进行了使能,所以使用SFUD是非常方便的;简化软件流程,降低开发难度。现在只需要配置好 SPI 通信,即可畅快的开始玩串行 Flash 了;

关于SFUD的使用方法和移植步骤参考:SFUD: 一款使用 JEDEC SFDP 标准的串行 (SPI) Flash 通用驱动库

官方的文档和Demo已经说明的很详细了。 

我的H743移植工程:

CSDN

移植步骤:

移植步骤主要分为两步:

1)将固件源码添加到工程中;

2)修改sfud_port.c文件,该文件是底层接口文件,我们根据手册和固件内的Demo补充完该文件就行了,该文件主要是与flash相连的spi的接口初始化和spi收发数据的底层接口;

在手册上也有相关说明:

固件如何获取到FLASH参数

固件获取flash参数主要是通过如下三种方法,其中SFDP和本地参数表这两种获取方式的选择可以在sfud_cfg.h的SFUD_USING_SFDP和SFUD_USING_FLASH_INFO_TABLE两个宏定义来开启或关闭,他们的使用是会占用内存空间的,在使用时选择其中一种就行。

(1)SFDP

对于支持SFDP的FLASH,其参数已经写在了芯片指定位置,固件将参数自动读取出来就能使用;

  • 什么是 SFDP :它是 JEDEC (固态技术协会)制定的串行 Flash 功能的参数表标准,最新版 V1.6B (点击这里查看)。该标准规定了,每个 Flash 中会存在一个参数表,该表中会存放 Flash 容量、写粒度、擦除命令、地址模式等 Flash 规格参数。目前,除了部分厂家旧款 Flash 型号会不支持该标准,其他绝大多数新出厂的 Flash 均已支持 SFDP 标准。所以该库在初始化时会优先读取 SFDP 表参数。

(2) 从本地参数表获取参数信息

如果该 Flash 不支持 SFDP 标准,SFUD 会查询配置文件 ( /sfud/inc/sfud_flash_def.h )SFUD_FLASH_CHIP_TABLE宏定义 中提供的 Flash 参数信息表 中是否支持该款 Flash。如果不支持,则可以在配置文件中手动添加该款 Flash 的参数信息,获取到了 Flash 的规格参数后,就可以实现对 Flash 的全部操作。

如果使用的是本地参数信息表查找的方式进行查找,它查找的逻辑不是根据 在sfud_cfg.h的SFUD_FLASH_DEVICE_TABLE宏定义中输入的name与本地信息表对比进行匹配的,而是依据从flash获取到的参数来进行匹配的,例如:

初始化成功,说明器件查表是根据器件厂商信息和器件信息来进行匹配的。

(3) 既不使用 SFDP ,也不使用 Flash 参数信息表

为了进一步降低代码量,SFUD_USING_SFDP 与 SFUD_USING_FLASH_INFO_TABLE 也可以 都不定义 。

此时,只要在定义 Flash 设备时,指定好 Flash 参数,之后再调用 sfud_device_init 对该设备进行初始化。参考如下代码:

sfud_flash sfud_norflash0 = {
        .name = "norflash0",
        .spi.name = "SPI1",
        .chip = { "W25Q64FV", SFUD_MF_ID_WINBOND, 0x40, 0x17, 8L * 1024L * 1024L, SFUD_WM_PAGE_256B, 4096, 0x20 } };
......
sfud_device_init(&sfud_norflash0);
......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值