yaffs 错误及解决.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
yaffs 错误及解决

1. uncorrectable error 报错原因 (2010-07-14 15:50) 分类: kernel 终于找出来了,yaffs系统启动时,老是报错一堆uncorrectable error的原因。 ? 原来是内核里的配置多选了一项FTL。不选FTL,重新烧一次内核和文件系统,启动就没有报错了。 ? 【部分解决】Partially written block xxx detected 2010-05-07 17:15 【问题】 板子上用的nand Flash,加上yaffs2文件系统,使用一段时间后, 每次开机出现类似如下错误: Partially written block 176 detected 【解决办法】 1。后来去看代码搞懂了,是yaffs2文件系统,在关闭之前,要将dirty数据写入nand flash,否则下一次开机yaffs2 scan的时候,就会发现这些block是Partially written 部分写入的,所以就会提示。 解决办法就是,每次要关机之前,要去做一次: sync 让yaffs2将dirty的数据写入到nand flash里面。 同理地,每次关机之前要通过系统去关机,这样会调用到poweroff等工具,其底层实现也是会调用到sync,去写数据。 不过这个办法也存在缺陷,那就是,如果是意外断电,那就还是会遇到同样问题。 2。一般情况下,自己断电之前去sync一下,是可以避免那个警告的,但是,后来经过长时间使用发现,sync只能表面地去解决数据写回,而不能清除那些Partially written 的块,这种错误,是累积性的,也就是,比如第一次意外断电是提示: Partially written block 176 detected .... 而第二次又意外断电了,那么可能破外到别的block了,比如是175,那么下次警告的信息又会多很多: Partially written block 175 detected 所以,随着不能正常sync而关机,会导致这些yaffs2的警告累积性地增加。 我此刻就遇到从175到104(中间部分block没有这些提示),一直打印这些警告,很是烦人。而实际上,rootfs是可以正常使用的。去看了下代码,是在 fs/yaffs2/yaffs_guts.c中: static int yaffs_ScanBackwards(yaffs_Device *dev) { .. ?????? } else { ??????? /* This is a partially written block that is not ??????? * the current allocation block. ??????? */ ??????? T(YAFFS_TRACE_ALWAYS, ??????? (TSTR(Partially written block %d detected TENDSTR), ??????? blk)); ?????? } ????? } ... } 而虽然rootfs可以使用,但是为何还会有这个属性为YAFFS_TRACE_ALWAYS,即无论如何都始终提示的警告,没有详细去研究yaffs2,无从得知,既然作者加了,就有其道理。 所以,直接注释掉,肯定不是好办法,当然如果只是为了开发调试,只能自己去手动注释掉,也是可以的。 3。如果想彻底解决这个问题,那只有有空去研究一下yaffs2了。或者哪位高手已经搞懂了,找到解决办法了,麻烦告诉偶一下。 系统启动的时候,因为yaffs2系统的不成熟,报错情况如下红字: ? --------- in nand_base--------- NAND device: Manufacturer ID: 0xec, Chip ID: 0xf1 (Samsung NAND 128MiB 3,3V 8-bit) stm-nand-flex: Using boot partition name [Boot firmware] (from kernel config) Creating 2 MTD partitions on stm-nand-flex.0: 00x04a00000 : yaffs2-nand0 0x04a00000-0: RestOfNand0 stm-nand-flex: Failed to find boot partition [Boot firmware] ……….. hub 2-0:1.0: USB hub found hub 2-0:1.0: 1 port detected stm-ehci stm-ehci.1: st-ehci stm-ehc

文档评论(0)

80219pm + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档