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

用文件系统给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

猜你喜欢

转载自blog.csdn.net/qingzhuyuxian/article/details/80435139