0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【S32K146 RT-Thread】之 使用SFUD组件驱动spi flash

RT-Thread官方账号 2024-11-21 01:05 次阅读

概述

基于上一篇的spi 驱动的基础上【S32K146 RT-Thread】之 使用SFUD 组件驱动spi flash,我们已经实现了spi10设备驱动,我们使用sfud组件来驱动spi flash。

SFUD 是一款开源的串行 SPI Flash 通用驱动库。由于现有市面的串行 Flash 种类居多,各个 Flash 的规格及命令存在差异, SFUD 就是为了解决这些 Flash 的差异现状而设计,让我们的产品能够支持不同品牌及规格的 Flash,提高了涉及到 Flash 功能的软件的可重用性及可扩展性,同时也可以规避 Flash 缺货或停产给产品所带来的风险。

SFUD 驱动库是个github 的开源项目rt-thread 系统内已经集成了该软件包,我们只需要开启即可使用。

JESD216 SFDP标准产生的背景
随着串行Flash市场不断的扩张,串行Flash的指令、功能和特性也日趋增多,而且各个厂商在串行Flash器件上的功能和特性也无法完全一致。例如,在扇区擦除功能上,支持4kB、32kB、64kB的擦除操作虽然分别有相应的指令,但是不同厂商的器件还是会存在一些指令和功能的差异。为了准确地完成系统的兼容性测试或者是考虑到容量的升级,开发和设计人员需要详细阅读每一份串行Flash的产品规范,了解引脚的分布和定义是否一致,操作所需要用到的功能指令是否完全兼容,从而对底层设备驱动软件做相应的增补和修改,甚至改动到硬件,这无疑给项目的设计、维护和更新带来一些不便。

因此,串行Flash器件迫切需要一个统一规范的功能参数表,可以让开发和设计人员明确地读取到每一个所使用串行Flash的功能和参数特性。JEDEC的新规范JESD216 SFDP就是在这样的一个市场环境下孕育而生的。

以下是SFDP heaed结构软件可以中读取flash的参数信息进行使用

ae314e82-a761-11ef-8084-92fbcf53809c.jpgae3b16a6-a761-11ef-8084-92fbcf53809c.jpg

使用SFUD 驱动flash

menuconfig 开启sfud

ae45c36c-a761-11ef-8084-92fbcf53809c.jpg

使用测试命令探测spiflash 发现已经正常探测到16MB的flash。

msh />sf probe spi10[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud.c:871) The flash device manufacturer ID is 0xC2, memo[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:132) Check SFDP header is OK. The reversion is[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:175) Check JEDEC basic flash parameter header[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:203) JEDEC basic flash parameter table info:[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:204) MSB-LSB 3 2 1 0[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0001] 0xFF 0xF1 0x20 0xE5[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0002] 0x07 0xFF 0xFF 0xFF[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0003] 0x6B 0x08 0xEB 0x44[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0004] 0xBB 0x04 0x3B 0x08[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0005] 0xFF 0xFF 0xFF 0xFE[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0006] 0xFF 0x00 0xFF 0xFF[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0007] 0xEB 0x44 0xFF 0xFF[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0008] 0x52 0x0F 0x20 0x0C[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0009] 0xFF 0x00 0xD8 0x10[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:215) 4 KB Erase is supported throughout the de[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:234) Write granularity is 64 bytes or larger.[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:245) Target flash status register is non-volat[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:271) 3-Byte only addressing.[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:305) Capacity is 16777216 Bytes.[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:312) Flash device supports 4KB block erase. Co[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:312) Flash device supports 32KB block erase. C[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:312) Flash device supports 64KB block erase. C[I/SFUD] Found a Macronix flash chip. Size is 16777216 bytes.[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud.c:849) Flash device reset success.[I/SFUD] sf_cmd flash device initialized successfully.[I/SFUD] Probe SPI flash sf_cmd by SPI device spi10 success.

从log 读取的Parameter Table (0): JEDEC Flash Parameter Tables芯片手册的描述是匹配的。

ae49efbe-a761-11ef-8084-92fbcf53809c.pngae4f0b98-a761-11ef-8084-92fbcf53809c.jpg

使用测试命令擦除读写验证可以正常操作flash

ae57209e-a761-11ef-8084-92fbcf53809c.jpg

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1621

    浏览量

    147734
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1700

    浏览量

    91289
  • RT-Thread
    +关注

    关注

    31

    文章

    1271

    浏览量

    39900
  • SFUD
    +关注

    关注

    0

    文章

    5

    浏览量

    1054
收藏 人收藏

    评论

    相关推荐

    恩智浦FRDM-MCXA153 RT-Thread实践指南 实现和优化RT-ThreadSPI驱动

    串行外设接口(SPI)是一种广泛使用的同步串行通信接口,在嵌入式系统中扮演着重要角色。本文将深入探讨如何在NXP MCXA153 MCU上实现和优化RT-ThreadSPI驱动,同时
    的头像 发表于 11-14 08:58 744次阅读
    恩智浦FRDM-MCXA153 <b class='flag-5'>RT-Thread</b>实践指南 实现和优化<b class='flag-5'>RT-Thread</b>的<b class='flag-5'>SPI</b><b class='flag-5'>驱动</b>

    RT-Thread上CAN实践

    开箱测试RT-Thread官方已完成了对英飞凌XMC7200EVK的移植,通过shell可以看到做好了uart3的console。本文将介绍如何进行RT-ThreadCan移植。接下来我们要完成CAN_FD的驱动移植,并正常启动
    的头像 发表于 11-13 01:03 811次阅读
    <b class='flag-5'>RT-Thread</b>上CAN实践

    基于NXP MCXA153 MCU实现RT-Thread的MTD NOR Flash驱动

    在嵌入式系统中,片上Flash存储器是一个关键组件,用于存储程序代码和关键数据。本文将详细介绍如何在NXPMCXA153 MCU上实现RT-Thread的MTD (Memory Technology Device) NOR
    的头像 发表于 11-09 14:00 252次阅读
    基于NXP MCXA153 MCU实现<b class='flag-5'>RT-Thread</b>的MTD NOR <b class='flag-5'>Flash</b><b class='flag-5'>驱动</b>

    S32K146 RT-thread SPI驱动适配

    概述RT-ThreadSPI总线的驱动,抽象出了spibus的设备驱动,我们基于S32K146的硬件学习spibus设备
    的头像 发表于 11-01 08:11 199次阅读
    【<b class='flag-5'>S32K146</b> <b class='flag-5'>RT-thread</b>】<b class='flag-5'>之</b> <b class='flag-5'>SPI</b><b class='flag-5'>驱动</b>适配

    2024 RT-Thread全球巡回 线下培训火热来袭!

    亲爱的RT-Thread社区成员们:我们非常高兴地宣布,2024年RT-Thread全球开发者线下培训即将拉开帷幕!24年全球巡回培训将覆盖超10座城市及国家,为开发者提供一个深入学习RT-Thread嵌入式开发的绝佳机会。
    的头像 发表于 08-07 08:35 885次阅读
    2024 <b class='flag-5'>RT-Thread</b>全球巡回 线下培训火热来袭!

    【好书推荐】RT-Thread设备驱动开发指南

    强烈,他们迫切地希望有一本可以指导他们在RT-Thread上开发驱动的指南。为了解决开发者的燃眉急,《RT-Thread设备驱动开发指南》
    的头像 发表于 08-01 08:35 512次阅读
    【好书推荐】<b class='flag-5'>RT-Thread</b>设备<b class='flag-5'>驱动</b>开发指南

    实时操作系统RT-Thread及FreeRTOS

    RT-Thread与其他很多RTOS如FreeRTOS的主要区别之一是,它不仅仅是一个实时内核,还具备丰富的中间层组件,如下图所示。FreeRTOS和RT-Thread是两种常见的嵌入式实时操作系统
    的头像 发表于 05-29 08:10 3537次阅读
    实时操作系统<b class='flag-5'>之</b><b class='flag-5'>RT-Thread</b>及FreeRTOS

    6月6日杭州站RT-Thread线下workshop,探索RT-Thread混合部署新模式!

    6月6日下午我们将在杭州举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深
    的头像 发表于 05-28 08:35 405次阅读
    6月6日杭州站<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    4月25日北京站RT-Thread线下workshop,探索RT-Thread混合部署新模式

    4月25日,下午我们将在北京举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深
    的头像 发表于 04-16 08:35 392次阅读
    4月25日北京站<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式

    4月10日深圳场RT-Thread线下workshop,探索RT-Thread混合部署新模式!

    4月10日我们将在深圳福田举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深嵌入式软件工程师农晓明老师为您讲
    的头像 发表于 03-27 11:36 772次阅读
    4月10日深圳场<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    4月10日深圳场RT-Thread线下workshop,探索RT-Thread混合部署新模式!

    4月10日我们将在深圳福田举办RT-Thread混合部署线下workshop,在瑞芯微RK3568平台上实现同时运行RT-Thread和linux,本次workshop邀请到RT-Thread资深
    的头像 发表于 03-27 08:34 481次阅读
    4月10日深圳场<b class='flag-5'>RT-Thread</b>线下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!

    RT-Thread设备驱动开发指南》基础篇--以先楫bsp的hwtimer设备为例

    一、概述(一)RT-Thread设备驱动RT-Thread设备驱动开发指南》书籍是RT-thread官方出品撰写,系统讲解
    的头像 发表于 02-24 08:16 1387次阅读
    《<b class='flag-5'>RT-Thread</b>设备<b class='flag-5'>驱动</b>开发指南》基础篇--以先楫bsp的hwtimer设备为例

    RT-Thread设备驱动开发指南基础篇—以先楫bsp的hwtimer设备为例

    RT-Thread设备驱动开发指南》书籍是RT-thread官方出品撰写,系统讲解RT-thread IO设备驱动开发方法,从三方面进行讲解
    的头像 发表于 02-20 16:01 1591次阅读
    <b class='flag-5'>RT-Thread</b>设备<b class='flag-5'>驱动</b>开发指南基础篇—以先楫bsp的hwtimer设备为例

    基于RT-Thread快速上手SD NAND 虚拟文件系统

    默认开启FatFS.   支持多种类型的存储设备,如 SD Card、SPI Flash、Nand Flash 等。   在 RT-Thread 中,我们要访问存储设备中的文件,必须
    发表于 12-15 17:29

    S32K146的hard fault问题解决方案

    最近有个客户使用S32K146的产品在量产之后出现了三个售后件,ABBA测试之后的结果表明失效现象跟着S32K146走;同时客户反馈说试着将其中一个售后件重新烧录程序,S32K146又正常工作了。结合这两种情况,
    的头像 发表于 11-22 11:35 2215次阅读
    <b class='flag-5'>S32K146</b>的hard fault问题解决方案