ECC byte 4 and 5 not equal to what have just been writen

Thomas Gleixner tglx at linutronix.de
Tue Apr 20 06:09:32 EDT 2004


On Tuesday 20 April 2004 11:40, Shen Aaron-r62966 wrote:
> >
> > Which kernel version ?
> > Which MTD version are you using ?
> > Is this a userspace application ?
> > Which oob layout is selected ?
>
> Actually, I'm adding ECC part into the spl code for NAND flash bootloader.
> Most of the algorithm and the interfaces to calculate ecc code and to
> read/write a page is copied from driver/mtd/nand/. The version of linux
> kernel is 2.4.18. The oob layout is 16 byte size.

So you are debugging your bootloader code and not kernel code ?
Did you copy the code from 2.4.18 ? If yes, use code from actual MTD CVS.
If no, which version of MTD code did you use to copy from ?

> >
> > Where is the ECC correction done ?
>
> ECC correction should be done after reading each page. But here I
> only need to read out the OOB data of a page after writing to it.
> The obvious problem is that ecc data is writen into spare[0~3] and
> spare[6~7], but only spare[0~5] is what we expected when read out.
> The spare[6~7] has changed and some unexpected data is writen
> into spare[8~A]. I still can't find out the reason. Any more suggestion?

The page write function is the right place to look

-- 
Thomas
________________________________________________________________________
"Free software" is a matter of liberty, not price. To understand the concept,
you should think of "free" as in "free speech,'' not as in "free beer".
________________________________________________________________________
linutronix - competence in embedded & realtime linux
http://www.linutronix.de
mail: tglx at linutronix.de




More information about the linux-mtd mailing list