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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

96

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部