SFUD固件移植

news2024/9/29 7:28:20

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);
......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/984491.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android 修改代码后不生效问题的终极方案

前言: 最近遇到几个项目,都出现了代码修改后,直接点studio上的run,跑起来后代码没生效,如果重新clean rebuild可以生效,但是这太浪费时间了。网上找了各种方案,前面几个项目,有的是可…

手写Spring:第19章-JDBC功能整合

文章目录 一、目标:JDBC功能整合二、设计:JDBC功能整合三、实现:JDBC功能整合3.1 工程结构3.2 整合JDBC功能核心类图3.3 数据源操作3.3.1 数据源操作抽象类3.3.2 JDBC 工具类 3.4 数据库执行3.4.1 语句处理器接口3.4.2 结果处理器接口3.4.3 行…

嵌入式Linux驱动开发(LCD屏幕专题)(四)

单Buffer的缺点与改进方法 1. 单Buffer的缺点 如果APP速度很慢,可以看到它在LCD上缓慢绘制图案 即使APP速度很高,LCD控制器不断从Framebuffer中读取数据来显示,而APP不断把数据写入Framebuffer 假设APP想把LCD显示为整屏幕的蓝色、红色 很…

线程池的实现

目录 一、线程池的实现 1.什么是线程池 2.设计线程类 3.设计线程池类 4.运行 5.RAII加锁改造 二、利用单例模式改造线程池 1.复习 2.饿汉模式 3.懒汉模式 关于系统编程的知识我们已经学完了,最后我们需要利用之前写过的代码实现一个线程池,彻底…

如何理解张量、张量索引、切片、张量维度变换

Tensor 张量 Tensor,中文翻译“张量”,是一种特殊的数据结构,与数组和矩阵非常相似。在 PyTorch 中,使用张量对模型的输入和输出以及模型的参数进行编码。 Tensor 是一个 Python Class。PyTorch 官方文档中定义“Tensor&#xff0…

Datawhale × 和鲸科技丨《2023 中国人工智能人才学习白皮书》发布!

2023 是一个历史性的年份,它标志着人工智能技术的崛起与普及,这一年里,AI 不仅在科技、经济、社会、文化等各个领域取得突破性的进展,也在人类日常生活中扮演愈加重要的角色。随着人工智能时代的加速到来,我国 AI 人才…

msvcp140.dll丢失的有哪些解决方法,丢失msvcp140.dll是什么意思

在我们的日常生活中,电脑问题是无处不在的,而msvcp140.dll丢失又是其中比较常见的一种。msvcp140.dll是Microsoft Visual C运行时库的一部分,它包含了一些重要的函数和资源。当这个文件丢失时,可能会导致电脑出现各种问题&#xf…

链路追踪Skywalking快速入门

目录 1 Skywalking概述1.1 微服务系统监控三要素1.2 什么是链路追踪1.2.1 链路追踪1.2.2 OpenTracing1、数据模型:2、核心接口语义 1.3 常见APM系统1.4 Skywalking介绍1、SkyWalking 核心功能:2、SkyWalking 特点:3、Skywalking架构图&#x…

mysql之DML的select分组排序

目录 一、创建表employee和department表 1.创建department表 2.创建employee表 3.给employee表格和department表格建立外键 4.给department插入数据 5.给employee表插入数据 6.删除名字为那个的数据 二、分组查询和排序查询,以及对数据的处理(av…

ARM/X86工业级数据采集 (DAQ) 与控制产品解决方案

I/O设备,包括信号调理模块、嵌入式PCI/PCIE卡、便携式USB模块、DAQ嵌入式计算机、模块化DAQ系统,以及DAQNavi/SDK软件开发包和DAQNavi/MCM设备状态监测软件。 工业I/O产品适用于各种工业自动化应用,从机器自动化控制、测试测量到设备状态监测…

Java“牵手”京东商品详情数据,京东商品详情API接口,京东API接口申请指南

京东平台商品详情接口是开放平台提供的一种API接口,通过调用API接口,开发者可以获取京东商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品详情接口API是一种用于获取电商平台上商品详情数据的接口,通过…

kuiper安装

1:使用docker方式安装 docker pull lfedge/ekuiper:latest docker run -p 9081:9081 -d --name kuiper -e MQTT_SOURCE__DEFAULT__SERVERtcp://127.0.0.1:1883 lfedge/ekuiper:latest这样就安装好了,但是操作只能通过命令完成,如果想要通过页面来操作&…

@DS注解方式springboot多数据源配置及失效场景解决

1.使用教程 导入依赖 <!--多数据源--><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.0</version></dependency>配置数据源 datasource:…

MT36291 2.5A,高效型1.2MHz电流模式升压转换器芯片

MT36291 2.5A&#xff0c;高效型1.2MHz电流模式升压转换器芯片 特征 ●集成了80ms功率的MOSFET ●2.2V到16V的输入电压 ●1.2MHz固定开关频率 ●可调过电流保护&#xff1a; 0.5A ~2.5A ●内部2.5开关限流&#xff08;OC引脚浮动&#xff09; ●可调输出电压 ●内部补偿 ●过电…

PCL入门(三):矩阵变换实现平移和旋转

目录 1. pcl中的矩阵变换是什么2. 举例&#xff1a;如何做矩阵变换 1. pcl中的矩阵变换是什么 通过激光传感器等设备获得的3d点云在拼接成更大场景时&#xff0c;需要对点云数据进行旋转和平移操作。而旋转和平移操作&#xff0c;就可以通过矩阵变换来实现。 点的表示 对于点…

【每日一题】1523. 在区间范围内统计奇数数目,860. 柠檬水找零

1523. 在区间范围内统计奇数数目 - 力扣&#xff08;LeetCode&#xff09; 给你两个非负整数 low 和 high 。请你返回 low 和 high 之间&#xff08;包括二者&#xff09;奇数的数目。 示例 1&#xff1a; 输入&#xff1a;low 3, high 7 输出&#xff1a;3 解释&#xff1a;…

Excel文件损坏打不开怎么办?可用这三招解决!

当你的excel文件不可读&#xff0c;或者出现提示“文件已经被损坏&#xff0c;无法打开”&#xff0c;这种情况让人措手不及。而且还会给我们正常的工作带来很多麻烦&#xff0c;文件损坏打不开怎么办&#xff1f;来看看这3招&#xff0c;详细的图文教程&#xff0c;小白也能轻…

Notepad++ 的安装及配置

由于电脑重装了Win11系统&#xff0c;干脆重头开始&#xff0c;重新安装每一个软件~~~ 很多博客或者博主都会推荐notepad的官网&#xff1a;https://notepad-plus-plus.org/ 但大家亲自点开就会发现是无响应&#xff0c;如下图 同时&#xff0c;也会有很多博主直接给网盘地址…

【Flutter】Flutter 使用 table_calendar 实现自定义日历

【Flutter】Flutter 使用 table_calendar 实现自定义日历 文章目录 一、前言二、安装和基本使用三、日历的交互性四、日历事件五、自定义 UI 和 CalendarBuilders六、本地化和语言设置七、完整实际业务代码示例 一、前言 你好&#xff01;今天我要为你介绍一个非常实用的 Flut…