发件人: howhowwork 发送时间: 2006-12-17 11:36:44 收件人: Vitaly Wool 抄送: 主题: Re: Re: [Yaffs] yaffs compiling errors 'yaffs_internal_read_super' and yaffs2 write errors Hi Vitaly Wool Thanks a million for your help , I am lijie from chongqing City China . According to your advice I have adjusted my NAND driver to make its OOB layout match YAFFS2 OOB layout. my nandflash is : "NAND device: Manufacturer ID: 0xec, Chip ID: 0x76 (Samsung NAND 64MiB 3,3V 8-bit) " the following oob placements defined in /driver/mtd/nand/nand_base.c -------------------------------------------------------------------------- /* 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 = MTD_NANDECC_AUTOPLACE, //equal to " 2 " .eccbytes = 6, .eccpos = {0, 1, 2, 3, 6, 7}, }; but the errors is the same as before. Anyclues what could be wrong .. Any help will be highly appreciated. regards howhowwork 2006-12-17 发件人: Vitaly Wool 发送时间: 2006-12-13 17:31:02 收件人: howhowwork 抄送: yaffs@lists.aleph1.co.uk 主题: Re: [Yaffs] yaffs compiling errors 'yaffs_internal_read_super' and yaffs2 write errors Hi, On 12/13/06, howhowwork wrote: Hello, first, can you please introduce yourself? 'howhowwork' is not too a descriptive name. I'd say even more, my spam filter tried to block your message :) I downloaded the newest yaffs 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: yaffs is deprecated, use yaffs2 in yaffs1 mode. 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 There's apparently a problem with your NAND driver. For kernel versions earlier than 2.6.18 you have to manually adjust (hack) your NAND driver to make its OOB layout match SmartMedia OOB layout. Vitaly