一个朋友的问题,我们共同分析后搞定。其实以前也遇到过同样问题,时间长了,没总结。

事发:在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,需要修改的驱动之类太多,数据结构变化太大。

第四步,我想起以前说起nand时候mtd校验和yaffs校验不能同时开启。

第五步,让在14内核上关闭yaffs软校验,开启mtd nand硬件校验,出现:mtd ecc error unfixed on chunk 26784

第六步,14内核,关闭mtd nand硬件校验,使用yaffs软校验,出现: VFS: Mounted root (cramfs filesystem) readonly. Mounted devfs on /dev Freeing init memory: 108K Error -3 while decompressing! c02ccb50(312)->c3cc0000(4096) Failed to execute /linuxrc. Attempting defaults... Kernel panic - not syncing: No init found. Try passing init= option to kernel.

然后,想了想。

34可以,14同样的配置不可以,应该是软件差异。查看14下yaffs的版本,挺老。朋友说34下的yaffs拿过去编译无法通过。

我从这边使用的18内核抠出来yaffs部分给他,这个yaffs是:

Id: yaffs_mtdif.c,v 1.22 2009/03/06 17:20:51 wookey Exp $";

编译,还是有一个头文件(linux/uaccess.h)找不到,屏蔽之,OK。

再编译,使用mtd的硬nand ecc,关闭yaffs own ecc,测试,OK,写文件OK,写入断电 OK。

总结:主要就是两种ECC冲突的事情,yaffs官网上写道:

Nand interface: For yaffs to function, it must be able to be the only code that writes to the oob area on the NAND device. The existing NAND driver in kernel 2.4.19 assumes that it will do the ecc/oob management for the host fs. For yaffs, this is quite wrong. You can disable ecc/oob calculations either by hand patching the mtd code to bypass ecc calculations or by merging the latest mtd cvs.

当然这针对2.4的内核,莫非2.6也涛声依旧?

Nand Flash Yaffs系统大量写入数据失败问题的解决方法。相关推荐

  1. 计算机无法播放flash,Windows10系统电脑无法播放Falsh动画的解决方法

    Windows10系统 电脑无法播放Falsh动画怎么办呢?这是最近不少用户都向小编咨询的问题.他们表示Win10电脑系统中Flash插件杀毒软件修改后,就出现了不能播放Falsh动画的情况.接下来, ...

  2. vue使用高德地图导航路线失败,获取驾车数据失败:INVALID_USER_SCODE(解决方法)

    高德地图使用路线导航 最近做大屏项目,里面有地图定位,路线导航等方面的功能,在做路线定位是一直都是获取不到导航的路线,经过好长时间的百度看高德api文档终于找到解决方法. 解决方法 添加高德地图安全密 ...

  3. 计算机系统保护怎么打开,Win7系统开启DEP数据执行保护的具体方法

    大部分用户都不知道数据执行保护 (DEP)有什么作用, DEP数据执行保护有助于防止我们的计算机遭受病毒的侵害,也有助于防止其他安全威胁危害我们的计算机.Win7专业版系统默认没有开启DEP数据执行保 ...

  4. 服务器运行失败win10音频,Win10系统提示音频服务未运行的解决方法

    最近有win10系统用户反馈说遇到这样一个现象,就是将鼠标放在任务栏的扬声器的红色x标记时,提示音频服务未运行,这是怎么回事呢,本文将给大家带来Win10系统提示音频服务未运行的解决方法供大家参考. ...

  5. matlab创建控件失败win7,Win7系统无法安装ActiveX控件的解决方法

    Win7系统无法安装ActiveX控件怎么办?ActiveX控件是网站常用的一款网页辅助工具,有时候我们可能需要安装它,但是却发现浏览器阻止了它安装,那么当你遇到这种情况该怎么办呢?下面小编就给大家带 ...

  6. 计算机打印机共享失败,两台win7系统共享打印机提示不成功的解决方法

    打印机是办公室人员经常会用到的打印机设备,而通常为了方便多台电脑共同使用同一台打印机,都会将打印机设置共享,但是在共享打印机的时候可能会碰到一些错误,比如有用户反映说两台win7系统电脑在共享打印机的 ...

  7. 微信备份到云服务器失败怎么回事,icloud云备份失败怎么办 icloud云备份失败原因及解决方法...

    许多刚接触苹果设备的用户朋友经常会发生自己的设备出现iCloud云备份启动或者备份失败的情况却又不知道icloud云备份失败怎么办,连这都不知道的用户朋友不用着急,马上点击查看icloud云备份失败原 ...

  8. 计算机蓝屏代码c2,Win7系统出现0x000000c2蓝屏故障的解决方法

    Win7系统出现0x000000c2蓝屏故障怎么办?当我们的电脑出现蓝屏的时候,就会显示一系列的蓝屏代码,供大家去分析看看是哪里出的问题.最近,Win7系统用户的电脑遇到蓝屏,提示错误代码:0x000 ...

  9. win10饥荒服务器未响应,win10系统电脑运行饥荒闪退的解决方法

    其他相关 win10系统,饥荒,闪退_百度搜索if(window.bds&&bds.util&&bds.util.setContainerWidth){bds.util ...

最新文章

  1. JS加强学习-DOM学习01
  2. 芯片巨人也要搞医疗?
  3. Requests方法 -- 关联用例执行
  4. 如何在MFC中调用CUDA
  5. Spring 自定义注解玩法大全,从入门到…
  6. 如何返回一个只读泛型集合
  7. Spring框架:三种Spring Bean生命周期技术
  8. CSS块级元素、内联元素概念
  9. 文件服务器共享文件夹访问权限,5对文件服务器中的共享文件夹进行访问权限控制...
  10. #error This file requires compiler and library support for the ISO C++ 2011 standard
  11. WebAudioAPI 入门
  12. SqlLite在Net中的使用
  13. 20180810 多益网络模拟笔试
  14. SpringBoot搭建简单留言板项目
  15. flutter 自带方法获取视频缩略图
  16. Java编译报错:无法将类XX中的构造器XX应用到给定类型
  17. 每日英语(2021-2-27)
  18. 更改微信浏览器页面标题
  19. 增量式pid分析 及 参数整定
  20. 搜索引擎优化-黑帽技术

热门文章

  1. .Net DES加密解密(不带向量)
  2. 父类调用子类中的方法
  3. git clone 速度过慢
  4. 使用session保持登录状态,cookie保存用户账号密码
  5. 2014全国计算机二级vfp模拟试题和答案,2014年全国计算机二级考试VF模拟试题
  6. 吞吐量(TPS)、QPS、并发数、响应时间(RT)
  7. .net core HttpContext(Http上下文)
  8. 滚动字幕Marquee
  9. 《DSP using MATLAB》示例Example7.25
  10. JavaScript 判断浏览器类型