yaffs2 fwrite NAND LINUX

来源:百度知道 编辑:UC知道 时间:2024/06/03 06:17:09
在linux上用fwrite操作写入一些数据到NANDFLASH上文件系统为yaffs2的文件,现在问题是每次如果写的数据很小比如几十个字节,文件大小不变。写入比较大的数据文件才增长。查了网上相关的资料 fwrite有缓存机制,但是现在我关闭了缓存(用setbuf禁用缓存),或者在每次调用fwrite后,就用fflush刷新缓存到磁盘。但是还是不管用。
换成初级io,用write,每次写后调用fsysn刷新缓存到磁盘,如果写入的大小很小,一次写入后文件仍不变。求教各位这是为何。
现在想实现每次不管写多大的数据,文件都会变化。还有什么办法。

nandflash有一种机制,好像是只能从1写成0,而不能从0写成1,所以即使向文件里写很小的数据,他也会先擦出32k给这个文件留着,再对这个文件写的时候,先用这32k,这块用完了再给他擦下一块。这个跟系统调用(read write fsync等)无关,而是跟文件系统有关。

我不是专业搞这个的,只是大概有这个印象,希望楼主根据这个再找专业点的问明白些。