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

    文章

    1715

    浏览量

    154719
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1867

    浏览量

    99865
  • RT-Thread
    +关注

    关注

    32

    文章

    1542

    浏览量

    44294
  • SFUD
    +关注

    关注

    0

    文章

    7

    浏览量

    1265
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    首搭RT-Thread程翧车控平台| RT-Thread程翧 S32K344 快速原型开发平台正式上市!| 产品动态

    ——基于NXPS32K344的ECU快速原型开发平台,RT-Thread程翧S32K344快速原型开发平台,是首个深度内置RT-Thread程翧车控软件平台的快速原型开发
    的头像 发表于 10-31 11:53 505次阅读
    首搭<b class='flag-5'>RT-Thread</b>程翧车控平台| <b class='flag-5'>RT-Thread</b>程翧 <b class='flag-5'>S32K</b>344 快速原型开发平台正式上市!| 产品动态

    基于RT-Thread的EK-RA2E2 设备驱动移植与应用 | 技术集结

    目录前言环境配置HelloRT-ThreadGPIO输入与中断I2C主机驱动SPI主机驱动ADC设备驱动PWM设备驱动
    的头像 发表于 10-05 10:06 5742次阅读
    基于<b class='flag-5'>RT-Thread</b>的EK-RA2E2 设备<b class='flag-5'>驱动</b>移植与应用 | 技术集结

    使用RT-Thread studio 开发RT-Thread Nano项目的时候 串口的驱动是要自己写吗?

    刚入坑。使用RT-Thread studio 开发RT-Thread 标准板项目的时候直接使用里边的串口uart_dev=rt_device_find(“uart5”);然后操作设备,在开发R
    发表于 09-26 08:14

    RT-Thread 5.1.0版本中调用rt_sfud_flash_probe()函数报错的原因?

    使用RT-Thread Studio编译器,RT-Thread版本5.1.0 三、配置过程 1、启用SPISFUD 2、修改sfud_
    发表于 09-18 06:08

    Windows上使用ENV工具开发基于先楫MCU的RT-Thread应用

    前言Env是RT-Thread推出的开发辅助工具,针对基于RT-Thread操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其内置的menuconfig提供了简单易用的配置剪裁
    的头像 发表于 08-29 12:22 959次阅读
    Windows上使用ENV工具开发基于先楫MCU的<b class='flag-5'>RT-Thread</b>应用

    在Ubuntu上开发基于先楫MCU的RT-Thread应用指南

    1、前言RT-ThreadEnv是RT-Thread推出的开发辅助工具,针对基于RT-Thread操作系统的项目工程,提供编译构建环境、图形化系统配置及软件包管理功能。其内置的menuconfig
    的头像 发表于 08-29 12:22 1240次阅读
    在Ubuntu上开发基于先楫MCU的<b class='flag-5'>RT-Thread</b>应用指南

    SFUD驱动库实战手册:串行SPI Flash开发全流程解析

    工作原理与实战技巧。 SFUD( Serial Flash Universal Driver)是开源的串行SPI Flash通用驱动库。  
    的头像 发表于 07-29 13:19 538次阅读
    <b class='flag-5'>SFUD</b><b class='flag-5'>驱动</b>库实战手册:串行<b class='flag-5'>SPI</b> <b class='flag-5'>Flash</b>开发全流程解析

    RT-Thread Nano硬核移植指南:手把手实现VGLite图形驱动适配 | 技术集结

    VGLite是NXP提供的轻量级2D图形API,本文将手把手带你实现VGLite图形驱动适配RT-Thread。文章分为上、下两篇,将手把手教您移植。上篇对RT-ThreadNano内核与Finsh
    的头像 发表于 07-17 14:40 3045次阅读
    <b class='flag-5'>RT-Thread</b> Nano硬核移植指南:手把手实现VGLite图形<b class='flag-5'>驱动</b>适配 | 技术集结

    SPI玩转WiFi,RT-Thread ESP-Hosted驱动深度适配指南 | 技术集结

    还在为MCU的WiFi连接方案发愁?RT-Thread社区开源ESP-Hosted驱动,通过标准SPI接口即可实现,并且该仓库已整理成RT-Thread软件包。
    的头像 发表于 07-09 19:03 1138次阅读
    用<b class='flag-5'>SPI</b>玩转WiFi,<b class='flag-5'>RT-Thread</b> ESP-Hosted<b class='flag-5'>驱动</b>深度适配指南 | 技术集结

    RT-Thread荣获2025优秀开源项目 | 新闻速递

    6月底,RT-Thread睿赛德受邀参与由上海开源信息技术协会主办的2025上海开源创新精英荟。上海市商委副主任张杰出席会议并致辞。RT-Thread嵌入式操作系统项目凭借其卓越的技术创新与开源生态
    的头像 发表于 07-04 09:04 2439次阅读
    <b class='flag-5'>RT-Thread</b>荣获2025优秀开源项目 | 新闻速递

    T-Box智能升级:NXP S32K146携手SD NAND(嵌入式SD卡)的创新应用

    SD NAND 存储在记录车辆运行数据的同时,也默默收集着用户的驾驶习惯与偏好信息。例如,通过长期记录驾驶者的座椅调节位置、空调温度设定、音乐播放喜好、常用导航目的地等数据,S32K146 T-Box 能够借助这些存储在 SD NAND 中的数据,对用户行为进行深度分析与建模。
    的头像 发表于 06-09 14:43 1352次阅读
    T-Box智能升级:NXP <b class='flag-5'>S32K146</b>携手SD NAND(嵌入式SD卡)的创新应用

    RT-Thread审核团招募: 深度参与开源RTOS社区治理与演进

    全球开发者招募:RT-Thread审核团(ReviewTeam)正式开放申请!在开源的世界里,代码审查(CodeReview)是保证软件质量、促进技术交流的关键环节。RT-Thread作为全球领先
    的头像 发表于 05-21 18:02 1068次阅读
    <b class='flag-5'>RT-Thread</b>审核团招募: 深度参与开源RTOS社区治理与演进

    如何在S32K146中实现以下功能?

    原来有一个项目芯片是MPC5606B(CodeWarrior编译器),现在换成S32K146S32DS ARM),其中有段代码移植遇到了些问题,请问如何在S32K146中实现以下功能,请帮忙
    发表于 04-04 08:00

    如何使用S32 Design Studio for ARM将自定义数据放入SRAM中以进行S32K146

    如何使用 S32 Design Studio for ARM 将自定义数据放入 SRAM 中以进行S32K146
    发表于 04-01 08:27

    如何将RT-Thread移植到NXP MCUXPressoIDE上

    RT-Thread默认支持的IDE只有IAR 和 Keil, 那如何将RT-Thread移植到NXP MCUXPressoIDE上呢?本文内容比较简单但稍有琐碎,希望对有需要的小伙伴有所帮助。
    的头像 发表于 02-13 10:37 2442次阅读
    如何将<b class='flag-5'>RT-Thread</b>移植到NXP MCUXPressoIDE上