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

您所在的位置:网站首页 emmc速度测试 FATFS移植测试文档(stm32+emmc/sd卡)

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

2024-02-01 17:14| 来源: 网络整理| 查看: 265

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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3