硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3956|回复: 1
收起左侧

[SD/SDIO] stm32h7“手把手移植FatFs文件系统(版本R0.12c)”(基于V7造轮子)

[复制链接]

6

主题

216

回帖

234

积分

高级会员

积分
234
发表于 2019-6-22 20:47:16 | 显示全部楼层 |阅读模式
本帖最后由 芯跳不止 于 2019-6-22 20:47 编辑

原博客链接:http://www.mazirong.com/?p=4254
V7-025_fatfs+sd_dma.7z (2.81 MB, 下载次数: 61)

V7-001_LED.7z (1.31 MB, 下载次数: 38)


FatFs的官方网站为:http://elm-chan.org/fsw/ff/00index_e.html。FatFs是用于小型嵌入式系统的通用FAT / exFAT文件系统模块。FatFs模块的编写符合ANSI C(C89),并与磁盘I / O层完全分离。因此它独立于平台。它可以被纳入到小微控制器利用有限的资源,如8051,PIC,AVR,ARM,Z80,RX等。
1、FatFs特性
  • DOS / Windows兼容的FAT / exFAT文件系统。
  • 平台独立。易于移植。
  • 程序代码和工作区域占用空间非常小。
  • 支持的各种配置选项:
    • ANSI / OEM或Unicode中的长文件名。
    • exFAT文件系统。
    • RTOS的线程安全。
    • 多个卷(物理驱动器和分区)。
    • 可变扇区大小。
    • 多个代码页,包括DBCS。
    • 只读,可选API,I / O缓冲区等......
2、移植前准备工作移植准备工作需要两个文件
  • 包含完整bsp驱动的基础工程【V7-001_LED】。
  • ST官网下载的最新cube包【en.stm32cubeh7】(当前是1.4版本)。
最终实现的目的是,将【en.stm32cubeh7】的FatFs移植到我们自己的工程【V7-001_LED】,使用SD卡功能。
基础工程【V7-001_LED】解压,如图1
图1
cube包【en.stm32cubeh7】文件路径:en.stm32cubeh7\STM32Cube_FW_H7_V1.4.0\Middlewares\Third_Party\FatFs,这个是FatFs移植文件,如图2
图2
cube包【en.stm32cubeh7】文件路径:en.stm32cubeh7\STM32Cube_FW_H7_V1.4.0\Projects\STM32H743I-EVAL\Applications\FatFs\FatFs_uSD_DMA_Standalone,这个是FatFs with uSD card drive application using the DMA,简单的说是使用文件系统驱动SD卡的应用例程。该例程我们需要借鉴使用到的.c文件和.h文件如图3、图4。
图3
图4
通过以上自己准备的基础工程和cube包中的两个路径中文件,我们准备好了移植的准备工作。
3、建立FatFs文件夹及复制文件将 cube包【en.stm32cubeh7】文件路径:en.stm32cubeh7\STM32Cube_FW_H7_V1.4.0\Middlewares\Third_Party,文件夹FatFs整个拷贝到我们的基础工程路径:V7-001_LED\Libraries,如图5
图5
将文件路径:V7-001_LED\Libraries\FatFs\src\drivers中的原模板文件拷贝到新建的文件夹【template】,并将文件路径:en.stm32cubeh7\STM32Cube_FW_H7_V1.4.0\Projects\STM32H743I-EVAL\Applications\FatFs\FatFs_uSD_DMA_Standalone\Src中的文件【sd_diskio_dma.c】及文件路径:en.stm32cubeh7\STM32Cube_FW_H7_V1.4.0\Projects\STM32H743I-EVAL\Applications\FatFs\FatFs_uSD_DMA_Standalone\Inc中的文件【sd_diskio_dma.h】拷贝至基础工程中的
drivers文件夹,如图6
图6

将文件路径:en.stm32cubeh7\STM32Cube_FW_H7_V1.4.0\Projects\STM32H743I-EVAL\Applications\FatFs\FatFs_uSD_DMA_Standalone\Inc中的文件【ffconf.h】拷贝至
基础工程中的src文件夹 ,如图7
图7
至此,建立FatFs文件夹及复制文件完毕!
4、建立工程文件建立工程文件,如图8
图8
添加编译文件路径,如图9
图9
至此,工程建立完毕!
5、修改main函数及bsp文件修改main函数,及加入编写的测试文件【demo_sd_fatfs.c】,如图10
图10
在文件【bsp.h】中将头文件【bsp_sdio_sd.h】包含进来,如图11
图11
将工程编译一次,报了3个错误,如图12。
图12

逐个修改报错地方,将“stm32h743i_eval_sd.h”修改为"bsp_sdio_sd.h",如图13
图13
将文件【ffconf.h】中的_CODE_PAGE宏定义修改为936,意思是支持中文显示,如图14
图14
注:再次重新编译一次,发现此时为0错误0警告。但下载进去还不能运行。
V7开发板的SD卡接口是用的SDMMC1,而这个接口仅支持AXI SRAM区访问,其它SRAM和TCP均不支持。AXI SRAM的主频是200MHz,需要Cache配合提速,所以此例子主RAM直接使用性能最高的DTCM。仅DMA操作SDIO的地方使用AXI SRAM。 查看此文档http://www.armbbs.cn/forum.php?mod=viewthread&tid=91531,添加方法如图15
图15
注:再次重新编译一次,发现此时为0错误0警告。但下载进去只能运行前5项,第6项运行不了,如图16
图16
将文件【bsp_sdio_sd.c】中的时钟分频进行修改,如图17
图17
将文件【bsp_sdio_sd.h】中的宏定义USE_SD_TRANSCEIVER改为0,如图18
图18
修改完毕后便可以完美运行。
6、结果验证至此,stm32h7“手把手移植FatFs文件系统(版本R0.12c)”操作完毕,运行效果截图,如图19(只截图了命令6)
图19

回复

使用道具 举报

18

主题

324

回帖

378

积分

高级会员

积分
378
发表于 2019-6-22 21:15:18 | 显示全部楼层
楼主厉害了,点赞
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-11-1 07:46 , Processed in 0.193912 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表