fatfs(文件系统)执行f_sync之前数据保存在什么地方(stm32)

匿名 (未验证) 提交于 2019-12-03 00:19:01

用文件系统给SD卡写数据,不执行f_sync或f_close,数据是保存不了的,那么在执行这两个函数之前,那些数据是保存在什么地方的?连续执行f_write,写过几十、几百兆数据后都可以用该函数保存进去吗?
其实在执行f_write时,数据为512字节时,直接写入到SD卡上,数据少于512字节时,则先保存在用户缓冲区,待执行f_sync与f_close时,将缓冲区的数据写入到SD卡上,并将文件目录项对应的扇区内容进行更新,这样就将数据与文件链接起来了,在windows上就可以看到文件,且文件里是有内容的,如果不执行f_sync与f_close,则没有更新文件目录项的扇区,因此,即使SD卡有数据,但打开文件时,是看不到相应内容的。执行过程可以看以下的图片,图片来源http://www.openedv.com/posts/list/27427.htm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!