FATFS移植测试文档(stm32+emmc/sd卡)

本文档介绍了在STM32上移植FATFS文件系统以实现eMMC卡的读写操作,包括FATFS的原理、移植步骤、所需修改的文件以及FATFS的关键函数接口,如f_mount、f_open、f_close、f_read和f_write。文中还进行了eMMC卡的读写速度测试,对比了单总线和8位总线模式下的性能差异,强调了数据块大小对写入速度的影响。
摘要由CSDN通过智能技术生成

FATFS移植测试文档

一、项目要求
在 eMMC驱动移植实验的基础上,加上 FatFs 文件系统,实现 eMMC 卡中文件的读写及其它操作
目的:
(1)了解 FatFs 文件系统的原理
(2)掌握 FatFs 文件系统的移植方法
(3)实现 eMMC卡中文件的读写
(4)测试 eMMC读写速度并分析优化

二、FATFS原理
在这里插入图片描述

1、底层接口,包括存储媒介读/写接口(disk I/O)和供给文件创建修改时间的实时时钟,需要我们根据平台和存储介质编写移植代码。
2、中间层FATFS模块,实现了FAT 文件读/写协议。FATFS模块提供的是ff.c和ff.h。除非有必要,使用者一般不用修改,使用时将头文件直接包含进去即可。
3、最顶层是应用层,使用者无需理会FATFS的内部结构和复杂的FAT 协议,只需要调用FATFS模块提供给用户的一系列应用接口函数,如f_open,f_read,f_write 和f_close等,就可以像在PC 上读/写文件那样简单。

三、FATFS移植
1、版本 FatFs - FAT file system module R0.11 ©ChaN, 2015
2、下载地址 http://elm-chan.org/fsw/ff/00index_e.html
3、将下载文件解压到工程目录
4、在mdk工程界面中新建FatFS目录,添加如下文件:
工程文件结构

5、魔术棒中设置头文件路径
头文件路径添加方式

操作到这里,工程文件结构就算完整了,接下来就是修改文件代码。这里有两个文件需要修改,分别为 user_diskio.c 文件和 ffconf.h 文件。

6、读写函数框架构建
user_diskio.c文件是用户需要完成的diskio驱动程序框架,包括初始化驱动器、获取驱动器状态、读写驱动器等接口函数,需要用户根据使用的芯片和底层函数接口自行配置。
(1)从emmc卡中读取数据函数:

/**
  * @brief  Reads Sector(s) 
  * @param  pdrv: Physical drive number (0..)
  * @param  *buff: Data buffer to store read data
  * @param  sector: Sector address (LBA)
  * @param  count: Number of sectors to read (1..128)
  * @retval DRESULT: Operation result
  */
DRESULT USER_read (
	BYTE pdrv,      /* 物理扇区,多个设备时用到(0...) */
	BYTE *buff,     /* 数据缓存区  */
	DWORD sector,   /*扇区首地址in LBA */
	UINT count      /* 扇区个数(1..128) */
)
{
   
   DRESULT res = RES_ERROR;
   uint32_t timeout;
   uint32_t alignedAddr;
   alignedAddr = (uint32_t)buff & ~0x1F;
   //更新相应的DCache
   SCB_CleanDCache_by_Addr((uint32_t*)alignedAddr, count*BLOCKSIZE + ((uint32_t)buff - alignedAddr));
   if(HAL_MMC_ReadBlocks_DMA(&hmmc1, (uint8_t*)buff,
                            (uint32_t) (sector),
                             count) == HAL_OK)
   {
   

      /* Wait that the reading process is completed or a timeout occurs */
      timeout = HAL_GetTick();
      while
  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值