[U-Boot-Users] ECC code used in cmd_nand.c

Woodruff, Richard r-woodruff2 at ti.com
Thu Jul 24 00:59:28 CEST 2003


I'm thinking part of the problem I was having was my command is bring up a
bug:
	nand write 10008000 0 200

	This will result in nand_rw calling nand_write_ecc with an eccbuf =
NULL, as the size and alignment check does not work for the first block
(noecc = (start!=start... ).  Nand_rw passes this to nand_write_ecc which
passes it onto nand_write page. Which then acts like its valid and starts
trying to read and write to address 0.  As I have ROM there what ends up
going into the oob is my rom's first instruction.

I've feeling a bit slow at the moment, and am wondering if the rounding to
see if we are starting on an aligned address is even correct.

As far as R/B goes, I have two types of systems, one has it and the other
doesn't.  I've inserted code which seems to allow things to work without a
R/B connected...mainly using the status read to wait till not busy followed
by a read to check for success or failure.  The only real pain with out
having a RB and doing this all with GPIOs is my ARM does not have anything
which allows the equivalent of a ppc "sync" instruction, so dependencies on
the memory controller's scheduling creep up.

Regards/Thanks,

Richard W.



> -----Original Message-----
> From: Dave Ellis [mailto:dge at sixnetio.com] 
> Sent: Wednesday, July 23, 2003 1:38 PM
> To: Woodruff, Richard
> Cc: u-boot-users at lists.sourceforge.net
> Subject: RE: [U-Boot-Users] ECC code used in cmd_nand.c
> 
> 
> Richard Woodruff wrote:
> > Can anyone verify that the write using "nand write aaaa offf
> > ssss" should work with ECC enabled?  I'm finding that if I 
> > disable the ECC generation I can write uImages and compare 
> > them and get what I expect and boot from them.  
> 
> It has been working fine for me using the SXNI855T 
> configuration. I built this morning's CVS version and it also 
> seems OK.
> 
> > If I enable ECC generation, on read it complains that they
> > are all wrong (but there is no errors on the write which I 
> > think it should give if the written ecc does not match the 
> > calculated one).  If I disregard the ecc warnings and then 
> > "cmp" the data starting which was loaded, the first 16k are 
> > indeed the same (16k is my block size), however, there is 
> > some differences at the end of the first block.  Again, if I 
> > disable ECC no such problem.
> 
> If you write if with ECC, but read it back without ECC is the 
> data still corrupted? The data may be OK until the bad ECC 
> data is used to 'correct' it.
> 
> > ...If I do a read.oob of the first block, it appears that the
> > data_buf[0] is written to the first position of the oob, 
> > instead of the expected data.
> 
> Are you sure NanD_WaitReady() is working? If it isn't, you 
> could start to read the oob data before it is ready, and 
> would see some old data from the start of the buffer.
> 
> Dave
> 
> Dave Ellis
> ~~~~~~~~~~~~~~~~~~~~~~~~~~
> SIXNET - "Leading the Industrial Ethernet Revolution"
> 331 Ushers Road,   P.O. Box 767, Clifton Park, NY 12065 USA
> Tel +1 (518) 877-5173   Fax +1 (518) 877-8346
> Email me at: dge at sixnetio.com 
> Detailed product info: www.sixnetio.com 
> ~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> 
> 




More information about the U-Boot mailing list