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

Thomas Gleixner tglx at linutronix.de
Tue Apr 20 05:18:03 EDT 2004


On Tuesday 20 April 2004 09:35, Shen Aaron-r62966 wrote:
> Hi,
>
>   Is there anyone aware of such problem about ECC?
>   When I read back the OOB data after writing to a page, I find the offset
> 06 and 07 are not equal to what have just been writen into the page.
>
>   The part of codes are :
> ==========================================
>   ......
>   // char spare[16] is for oob data in spare area
>   mx2_write_ecc((char*)p, spare, last);		// My function to set the
> spare[16] before write a page printOut("The spare[ ] to write in flash is
> :\n");	// Messege printed out printOut(spare);					// Print out the spare[
> ]
>   if(NAND_Write_OnePage(page, (char*)p, spare))	// Write the page with
> spare[ ] into NAND flash return;
>   NAND_Read_OOB(0, page, spare, 16);		// Read back the oob data into spare[
> ] printOut("The spare[ ] to read back from flash is :\n");
>   printOut(spare);					// Print out the spare[ ]
>   ......

Which kernel version ?
Which MTD version are you using ?
Is this a userspace application ?
Which oob layout is selected ?

>   As you may have found out, the spare[0]~spare[5] are the same as writen.
> But spare[6] and spare[7] are different, while spare[8], spare[9] and
> spare[A] are so strange.
>
>   This will cause the failure of ecc correction for the upper 256 bytes of
> data in each page. Can you give me some comments?

Where is the ECC correction done ? 

>  Is this a known problem of NAND_Read_OOB( )?

No

-- 
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