fatfs-SDIO的写文件时间耗费在哪里了(之四)?

目标是什么?

   (1)  记录的要快,记录的要多。

(2)PLC的scantime要尽可能的小,尽可能的稳定。不能平时都是20ms,偶尔来个200ms,这个不行。

方法是什么?

实验。因为理论掌握的不好,所以只能靠实验。边分析边实验,不能胡乱实验。

fatfs-SDIO的写文件时间耗费在哪里了(之一)?

fatfs-SDIO的写文件时间耗费在哪里了(之二)?

fatfs-SDIO的写文件时间耗费在哪里了(之三)?

上面这三篇文章写完了,我其实对几个基本函数的使用都不怎么清楚,就是说这三篇文章的例子都是无法实际项目中应用的例子。

于是写了fatfs函数的用法学习方法

然后测试了这篇文章《fatfs函数的用法学习方法》里面函数的延时,发现竟然f_lseek的最耗时间的。

这个事情就麻烦了,怎么解决呢?

于是搜到这篇文章《FATFS文件系统,文件追加的时候发现速度越来越慢,发现可以优化f_lseek 不知道怎么做 求指教???》里面高人回复到:

f_open的第三个参数mode设置的是什么??  如果设置了FA_OPEN_APPEND,那么对文件的写入就是附加模式,即在文件尾部追加写入内容,这样你就不用使用seek了,每次写入都是在文件尾部附加。


这个直接搜索fatfs找到其官方网站,官网对fatfs的各种api都有详细说明,需要什么功能直接读说明就可以了。

实际上,不管是linux或者windows或者其他系统下的文件系统,大家需要实现的api都差不多,
都要实现open、read、write、flush、close几种功能,而且几种API的内部功能也都要差不多实现,
比如open,大多都要对其指定权限(比如读、写、新建、附加等方式或者权限),几乎所有的文件系统的open
都有指定这些权限(当然一般的open也要指定路径)。其他api类似。

所以不管是哪种文件系统,大约你使用任意一种平台下的文件系统操作文件熟练之后,基本上所有的文件系统
的文件操作你大概也就都会了。只要熟悉一种之后,其他的基本上你需要什么样的操作,你大概就会知道,该
文件系统在某个地方应该有个实现什么功能的api,然后去查一下说明就OK了。

这个高人

mack13013 


  离线 

22
主题
700
帖子
1
精华
论坛元老

积分
3443
金钱
3443 
注册时间
2014-8-13
在线时间
766 小时
发消息

而我的代码是基本网上比较流行的0.09B,压根就没有FA_OPEN_APPEND这个选项,于是移植了截至比较新的fatfs版本R0.13 (May 21, 2017)

仅仅执行一次f_open(&file, "8.txt", FA_OPEN_APPEND | FA_WRITE | FA_READ);

然后执行100次f_write和f_sync

然后执行一次f_close

发现确实管用。

另外要注意要搞个缓冲区,写入时候对其扇区,这样SDIO驱动层只是调用多写入那个函数。

还可以考虑把f_write和f_sync分开执行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值