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 > 收件人: yaffs@lists.aleph1.co.uk > 抄送: 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 > > .