发件人: 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 <howhowwork@163.com> 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