FATFS移植测试文档(stm32+emmc/sd卡) |
您所在的位置:网站首页 › emmc速度测试 › FATFS移植测试文档(stm32+emmc/sd卡) |
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 |