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