STM32
直播中

李娓仑

8年用户 1440经验值
私信 关注
[问答]

stm32f407 fatfs文件系统,f_mkdir创建文件夹耗时长是什么原因导致的?

STM32f407挂载fatfs文件系统,用于保存数据,存储媒介SD卡、使用SDIO驱动模式。想在较短的时间内完成:根目录、子目录等创建操作,子目录文件夹是以创建时间命名的。现在遇到的问题是:创建根目录后,再创建子目录文件夹时,有时耗时太长,会导致程序停下一小段时间(1、2秒)才能完成子目录文件夹的创建???即在函数f_mkdir(“0:/Templedatafile/20160920112450”);耗时太长。大多数是发生在程序启动后,第一次创建文件夹的时候;但是有时创建该子目录文件夹时又可以瞬间完成了?跟踪程序查看时,发现是在f_mkdir内部的disk_write()停了一会。自己找不到解决方法,求助各位大神!!

回帖(1)

杨海清

2024-5-9 16:25:35
STM32F407使用FatFs文件系统在SD卡上创建文件夹时,f_mkdir函数耗时较长的原因可能有以下几点:

1. SD卡初始化和挂载:在程序启动后,第一次创建文件夹时,需要对SD卡进行初始化和挂载。这个过程可能需要一些时间,尤其是在硬件初始化和文件系统挂载方面。

2. 文件系统类型:FatFs支持多种文件系统类型,如FAT12、FAT16和FAT32。不同的文件系统类型在创建文件夹时可能需要不同的时间。确保选择了合适的文件系统类型。

3. SD卡速度:SD卡的读写速度会影响创建文件夹的时间。使用高速SD卡可以缩短创建文件夹所需的时间。

4. 磁盘写入:在f_mkdir内部调用disk_write()函数时,可能需要等待磁盘写入完成。这个过程可能需要一些时间,尤其是在写入大量数据时。

5. 程序优化:检查程序中的其他部分,看看是否有可以优化的地方,以减少创建文件夹所需的时间。

为了缩短创建文件夹所需的时间,可以尝试以下方法:

1. 优化SD卡初始化和挂载过程,确保硬件初始化和文件系统挂载尽可能高效。

2. 选择合适的文件系统类型,以适应您的应用程序需求。

3. 使用高速SD卡,以提高读写速度。

4. 检查磁盘写入过程,看看是否有可以优化的地方,以减少等待时间。

5. 对程序进行性能分析,找出可能的瓶颈,并进行相应的优化。

6. 如果可能,尝试使用其他文件系统库,如LittleFS或SPIFFS,看看它们在您的应用程序中是否表现更好。

7. 在程序启动后,预先创建一些常用的文件夹,以减少在程序运行过程中创建文件夹所需的时间。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分