一个朋友的问题,我们共同分析后搞定。其实以前也遇到过同样问题,时间长了,没总结。
事发:在Nand Flash上使用2.6.14的linux kernel,三星2440的板子,连续写入文件,到一定大小限制就删除,文件写入没有超过flash保留10%的空闲,应该说还差很多。
第一步,不适用syslog写,换做自己写代码写入,出现几率降低;
第二步,fwrite换成write,几率增加,很快就坏。
坏的时候提示:yaffs tragedy: no more eraased blocks !!!!!!!!! Allocator out !!!!!!!!!!!!!!!!!
重新启动,就会标出很多坏块(bad block...),当然是假的,一格式化,就好。
第三步,朋友说用2.6.34的内核,没有问题,但从14移到34,需要修改的驱动