Re: [Yaffs] yaffs2 ecc error

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Charles Manning
Date:  
To: yaffs
CC: howhowwork
Subject: Re: [Yaffs] yaffs2 ecc error
On Friday 19 January 2007 16:03, howhowwork wrote:
> Hi
>   Thank you for your help !
>    I did the test using nandflash  as root filesystem , my yaffs2 filesytem
> run right.

>
> Now i am suspicious of my nandfash and norflash about static bus :
> in my nandflash driver Au1550nd.c
> static void au1xxx_nand_select_chip(struct mtd_info *mtd, int chip)
> {
> switch(chip) {
> case -1:
> /* deassert chip enable */
> au_writel(au_readl(MEM_STNDCTL) & ~(1<<(4+NAND_CS)), MEM_STNDCTL);
> break;
> case 0:
> /* assert (force assert) chip enable */
> au_writel(au_readl(MEM_STNDCTL) | (1<<(4+NAND_CS)) , MEM_STNDCTL);
> break; default:
> BUG();
> }
> }
> -CE manually permitting the NAND controller to do this. Keeping -CE
> asserted during the whole sector reads interferes with the NOR flash
> drivers
> so it causes contention on the static bus.
> Can you give me any idea ?


Fiddling with the CE might be the cause of your problems. Some NAND parts
allow you to change the CE during a transaction and some others do not.

I siuggest you refer to your datasheets and check the timing etc.


>
>
>
>
>
>
> howhowwork
> 2007-01-19
>
>
>
> 发件人: Charles Manning
> 发送时间: 2007-01-19 09:12:26
> 收件人:
> 抄送: howhowwork; cqdxlijie
> 主题: Re: [Yaffs] yaffs2 ecc error
>
> On Friday 19 January 2007 13:25, howhowwork wrote:
> > Hi ,
> >
> > I have mips board au1200 with a Samsung K9f1208V 64MB NAND flash which
> > is 528bytes/page and nor flash with 32M. i have established a jffs2
> > filesystem as root filesystem in nor flash with 32M ,my sytem is ok if
> > only use nor flash . now i plan to mount nand flash under jffs2
> > filesystem . I downloaded the newest yaffs2 code from
> > "http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs" and place it to linux
> > kernel 2.6.11. I select yafss and mtd support from muneconfig. After
> > make, I got the error messages
> > at the end:
> >
> > all of transport is passed
> >
> > 1. i boot my board using jffs2 filesystem as root filesystem
> >  # cat /proc/mtd
> >  dev:    size   erasesize  name
> >  mtd0: 03c00000 00020000 "User11 FS"
> >  mtd1: 00100000 00020000 "YAMON"
> >  mtd2: 002c0000 00020000 "raw kernel"
> >  mtd3: 00800000 00004000 "NAND FSa 0"
> >  mtd4: 03800000 00004000 "NAND FSa 1"

> >
> > 2. using the tools "flash_eraseall /dev/mtd6 ",passed
> >
> > 3. # mount -tyaffs /dev/mtdblock4 /mnt/
> > yaffs: dev is 32505860 name is "mtdblock4"
> > yaffs: Attempting MTD mount on 31.4, "mtdblock4"
> >
> > 4. then there are erros when copying  data to mnt's directory
> >    the questions :
> >  when copy less 120k data , no errors,and the data is correct after i
> > reboot however , copying more 100k data ,there are the following errors:
> > .........................................
> >  ** > >mtd ecc error unfixed on chunk 113984:0
> >  ** > >mtd ecc error unfixed on chunk 113984:1
> >  ** > >Block 3562 marked for retirement
> >  ** > > yaffs chunk 114016 was not erased
> >  ** > > Erasure failed 3563
> >  ** > > Block 3563 retired
> >  ......
> >  ** > > yaffs chunk 416 was not erased
> >  ** > > Erasure failed 13
> >  ......
> >  yaffs tragedy: no more eraased blocks
> >  !!!!!!!!! Allocator out !!!!!!!!!!!!!!!!!
> >  ......
> >  ** > >mtd ecc error unfixed on chunk 1375:0
> >  ** > >mtd ecc error unfixed on chunk 1375:1
> >  ** > >Block 42 marked for retirement
> >  yaffs tragedy: no more eraased blocks
> >  !!!!!!!!! Allocator out !!!!!!!!!!!!!!!!!
> >  .........................................
> >  then i try to exc command "df"
> >  /mnt # df
> >  Filesystem           1k-blocks      Used Available Use% Mounted on
> >  /dev/mtdblock0           61440     27308     34132  44% /
> >  tmpfs                      512        60       452  12% /var
> >  /dev/loop1                1244      1244         0 100% /root/test
> >  /dev/mtdblock4           57344     57344         0 100% /mnt

> >
> >  exc command  "reboot"
> >  /mnt #df
> >  Filesystem           1k-blocks      Used Available Use% Mounted on
> >  /dev/mtdblock0           61440     27308     34132  44% /
> >  tmpfs                      512        60       452  12% /var
> >  /dev/loop1                1244      1244         0 100% /root/test
> >  /dev/mtdblock4           57344     57344         0 2% /mnt

> >
> > why ...
> > what is somthing wrong ?
>
> You are getting some ecc errors, most likely because your oob-area data
> placement is conflicting with the way your nand driver is working.
>
> I suggest having a very good look at usgae of the oob bytes and looking for
> any conflicts.
>
> >  according to some suggustion ,    I changed my oob placement as
> > following

> >
> >
> >   /* Define default oob placement schemes for large and small page
> > devices */ static struct nand_oobinfo nand_oob_8 = {
> >         .useecc = MTD_NANDECC_AUTOPLACE,
> >         .eccbytes = 3,
> >         .eccpos = {0, 1, 2},
> >         .oobfree = { {3, 2}, {6, 2} }
> > };

> >
> > static struct nand_oobinfo nand_oob_16 = {
> >         .useecc = MTD_NANDECC_AUTOPLACE,
> >         .eccbytes = 6,
> >         .eccpos = {0, 1, 2, 3, 6, 7},
> >         .oobfree = { {8, 8} }
> > };

> >
> > static struct nand_oobinfo nand_oob_64 = {
> >         .useecc = MTD_NANDECC_AUTOPLACE,
> >         .eccbytes = 24,
> >         .eccpos = {
> >                 40, 41, 42, 43, 44, 45, 46, 47,
> >                 48, 49, 50, 51, 52, 53, 54, 55,
> >                 56, 57, 58, 59, 60, 61, 62, 63},
> >         .oobfree = { {2, 38} }
> > };

> >
> > -------------------------------------------------------------------------
> >-
> >
> > While oob placements definition in yaffs_mtdif.c
> >
> > static struct nand_oobinfo yaffs_oobinfo = {
> > .useecc = 1,
> > .eccbytes = 6,
> > .eccpos = {8, 9, 10, 13, 14, 15}
> > };
> >
> > then i change the struct " nand_oobinfo nand_oob_16" into
> > static struct nand_oobinfo nand_oob_16 = {
> > .useecc = 1,
> > .eccbytes = 6,
> > .eccpos = {8, 9, 10, 13, 14, 15},
> > };
> >
> > but the errors is the same as before. Anyclues what
> > could be wrong ..
> > Any help will be highly appreciated.
> >
> >
> > regards
> >
> > please help me out ...
> >
> >
> >
> >
> > howhowwork
> > 2007-01-15
>
> .