+ -
当前位置:首页 → 问答吧 → 请教uClinux系统读写NORFlash中JFFS2文件系统出CRC错误的解决办法

请教uClinux系统读写NORFlash中JFFS2文件系统出CRC错误的解决办法

时间:2009-10-14

来源:互联网

调试了几个月,google了网上无数的帖子,还是没有进展,崩溃了。
  制作文件系统时放入的文件统统完好可任意使用(!),但是上电后,系统中向挂载的文件系统中写入文件(例如cp一个文件)则以一定概率报CRC错误。
      Node CRC 5f472996 != calculated CRC 95c3a322 for node at 00dde8c0    诸如此类
         也有Date CRC …… 的错误。最后一位地址没错上电后从00d……开始依次递减,整个flash空间的地址都有可能而不仅限于一段。
      当然,报了错误的文件都无法正常使用。
         当文件系统中有错误的文件后,重新挂载文件系统则会报
          jffs2_scan_inode_node(): CRC failed on node at 0x005bd5dc: Read 0xffffffff, calculated 0xa9a35337  诸如此类

         真诚的求助!。。。


可供参考的信息如下:

   用的自制开发板,基本仿造Altera公司的成品板,FPGA用的EP2S90F1020I4,NIOSII的cpu, Flash是AM29LV128MH

    在内核源码的mtd/maps/altera.c中重新划分了flash分区,共16M,前2M放image,后14M放jffs2文件系统
   文件系统生成命令为: mkfs.jffs2 -r myjffs2/ -o nios2.jffs2 -e 0x00010000 --pad=0x00e00000
    与芯片手册对应,加也加过-s,以及搭配过各种其他数据。也试过将image和jffs2的分区隔开(文件系统大小缩小,空出的flash空间不用),亦或是flash中只放文件系统。
   烧写flash之前单独擦过整块flash(事实上用altera公司自带的烧写flash命令nios2-flash-programmer.exe自己会在烧写前进行擦除)。

   uClinux-dist版本为20070130,打了uClinux-dist-20070130-nios2-02.diff.gz的补丁。make menuconfig 时将跟jffs2相关的配置都打开了。

   使用Altera公司自带的memtest.c对flash进行逐块(共256块)的逐比特写1再读取看是否为1,写0再读取看是否为0,没有错误。

   随着cpu主频降低,该错误现象的出错概率越来越小。20MHz时完全消除错误。

[ 本帖最后由 010151176 于 2009-10-14 12:09 编辑 ]

作者: 010151176   发布时间: 2009-10-14

使用成品开发板发现现象一致。。。。

没有人知道怎么解决么。。。

作者: 010151176   发布时间: 2009-10-15

写入文件后,是否会重新把内容读出来,检验一遍数据完整性?

是否清楚问题发生过写入时, 还是写入后?

使用哪一类的写命令? word write? write buffer? 执行写命令后,有没有等待写命令执行成功?

作者: yidou   发布时间: 2009-10-15

必然会重新读出来并检验,否则应该不会爆crc错误

驱动不是我写的,uclinux的mtd实现的

不能断定是写入时还是写入后发生的

我想uclinux应该会等待写成功吧。。。

作者: 010151176   发布时间: 2009-10-20

呜呜都木有人遇到过一样的问题么。。。

作者: 010151176   发布时间: 2009-10-23

很久以前用过uclinux,但是没有遇见你的现象

作者: gigabyte   发布时间: 2009-10-23

谢谢
那你知道uclinux源码中哪个程序文件跟flash读写有关呢?

作者: 010151176   发布时间: 2009-10-27

楼主 Am29LV128MH烧写系统的源代码有吗? 我现在在读写Am29LV128M时 一直有错误 能吧你程序让我参考下吗?
我的邮箱[email protected]

作者: samozhishui   发布时间: 2011-01-03

热门下载

更多