[U-Boot-Users] cmd_nand.c :: check_block, wrong bad block pos ?

Woodruff, Richard r-woodruff2 at ti.com
Thu Jul 24 02:39:01 CEST 2003


Hello,

Well I just got nand and ECC to work on my little endian ARM board.  By
using the following corrected round nand_rw zero deferences were stopped:
	noecc = (start != ROUND_DOWN(start, 0x200)) || (len < 0x200) ;

And, I'm not quite sure what why, perhaps endianess, the read_oob in check
block was returning byte 6 from the oob instead of 5.  By changing it to ask
for (badpos + 1) it started returning the correct byte.  I'll need to check
into this one a bit more.  Does anyone know why badpos by itself is not
enough?

After I test a little I can post a patch back for others to test against.

Regards,

Richard W.




-----Original Message-----
From: Woodruff, Richard 
Sent: Wednesday, July 23, 2003 6:23 PM
To: 'dge at sixnetio.com'
Cc: u-boot-users at lists.sourceforge.net
Subject: RE: [U-Boot-Users] ECC code used in cmd_nand.c

.. Shouldn't the noecc check be doing a if(start != round_down(start,0x200))
and a check for less than size 0x200? This should ensure that the address is
at the proper boundary....does your board have sram/dram at 0.

rkw

> -----Original Message-----
> From: Woodruff, Richard 
> Sent: Wednesday, July 23, 2003 5:59 PM
> To: 'dge at sixnetio.com'
> Cc: u-boot-users at lists.sourceforge.net
> Subject: RE: [U-Boot-Users] ECC code used in cmd_nand.c
> 
> 
> 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 
> > ~~~~~~~~~~~~~~~~~~~~~~~~~~
> > 
> > 
> > 
> 
> 
> -------------------------------------------------------
> This SF.Net email sponsored by: Free pre-built ASP.NET sites 
> including Data Reports, E-commerce, Portals, and Forums are 
> available now. Download today and enter to win an XBOX or 
> Visual Studio .NET. 
> http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet
_072303_01/01
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users


-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users




More information about the U-Boot mailing list