Also, when I reduced my PLL1_Mult to 16 (for some
219MHz ARM operation) while keeping the PLL2_Mult at
22 (for 162MHz DDR2), I did get DVFlasher to read the
magic number for u-boot and could get u-boot prompt,
but with the same ECC error:
nand_read_ecc: Attempt read beyond end of device
100000 4000 0
After this error, the nand device is not accessible
from u-boot.
Regards
Suba.
--- Ivan Tonchev <[EMAIL PROTECTED]> wrote:
> Hi Suba,
>
> How is your BOOTCFG register configured?
>
> Is it configured for 8 or 16bit AEMIF?
> Is your NAND flash 8 or 16 bit?
>
> DaVinci RBL uses it for booting the UBL from NAND
> and in turn, UBL uses
> it to reinitialize NAND.
>
> See ubl/src/nand.c:
>
> // Setting the nand_width = 0(8 bit NAND) or
> 1(16 bit NAND). AEMIF
> CS2 bus Width
> // is given by the BOOTCFG(bit no.5)
> width = ( ( (SYSTEM->BOOTCFG) & 0x20) >> 5);
> gNandInfo.busWidth = (width)?BUS_16BIT:BUS_8BIT;
>
> Ivan
>
> Subashini Balaraman wrote:
> > We tried to write the UBL and u-boot with the
> > emulator. With this there were no errors during a
> > write or a read.
> >
> > But again, we see the message
> > Initializing NAND flash...
> > After that even the first UBL magic number
> validation
> > (in Block1, page0) fails though we could read it
> with
> > the JTAG.
> >
> > We also tried to jump to application start from
> the
> > emulator. U-Boot started well, but we still get
> this
> > error:
> >
> > NAND:nand_read_ecc: Attempt read beyond end of
> device
> > 100000 4000 0
> >
> > And the nand was not accessible from u-boot.
> >
> > We use the same code as the ubl for flashing,
> and
> > verifying the nand with the emulator. Even the
> code in
> > the gel file and the dm644x.c are the same.
> >
> > Thanks in advance...
> >
> > Regards
> > Suba.
> >
> >
> >
> >>
> >>
> >> Regarding your issue, like I stated earlier, try
> >> modifying the code to display a lot more output
> >> data. Like during the NAND init, have it output
> the
> >> device ID, page size info, etc. and make sure
> that
> >> it matches the device data sheet. Also check to
> see
> >> if your device supports protect and unprotect
> >> operations. The ST NAND device I most recently
> >> worked with did not support those commands, so
> you
> >> might want to consider commenting those out if
> yours
> >> doesn't either. Also output the data read back
> >> after the write is done (during the verify step)
> and
> >> make sure it matches. When there is an ECC
> >> mismatch, output both the values that are being
> >> compared to see if they are totally off, or just
> off
> >> by one bit (which would indicate a bad bit in
> that
> >> page). The program should correct from that
> problem
> >> by trying the first page of the next block, but
> >> maybe there's a bug in my code that prevents
> that.
> >>
> >>
> >>
> >> Those are recommendations so maybe we can help
> >> further.
> >>
> >>
> >>
> >> Regards,
> >>
> >> Daniel
> >>
> >>
> >>
> >> Daniel J. Allred
> >>
> >> Software Applications
> >>
> >> Catalog DSP / Emerging End Equipment
> >>
> >> ________________________________
> >>
> >> From: ketan deshpande
> [mailto:[EMAIL PROTECTED]
> >> Sent: Friday, April 27, 2007 7:40 AM
> >> To: Ivan Tonchev; Allred, Daniel
> >> Cc: Linux DaVinci; Subashini Ravindran
> >> Subject: Re: UBL on custom board
> >>
> >>
> >>
> >> Hi All,
> >>
> >> We implemented the patch provided by Ivon
> >> Tonchev. But the problem still persists. There is
> no
> >> change in the way we are getting the output.
> >>
> >> Let me elaborate our problem and hardware a bit
> >> more.
> >>
> >> We are using nand flash chip of
> >> STMicro-NAND01G-B2B.
> >> And for DDR we use the chip Micron-MT47H64M4. It
> is
> >> 64MB DDR.
> >> Our board is in NAND boot mode.
> >>
> >> The DDR timings are almost similar. The only
> major
> >> change was
> >> DDR_IBANK = 2 and
> >> DDR_PAGESIZE = 1 in DM644x.c.
> >> With the similar DDR value changes in GEL file
> some
> >> simple codes run fine in CCS. So verification of
> >> those values is also done.
> >>
> >> Coming back to NAND Chip part. It is a big block
> >> device.
> >> There is something we are finding very difficult
> to
> >> understand in DVFlasher code. If we refer nand.c
> >> file and function NAND_WritePage we find
> following
> >> lines;
> >>
> >> tempSpareValue[0] = 0xFFFFFFFF;
> >> tempSpareValue[1] = 0xFFFFFFFF;
> >> tempSpareValue[2] = eccValue[i];
> >> tempSpareValue[3] = 0xFFFFFFFF;
> >>
> >> So that means even though we have 16 bytes of
> Spare
> >> bytes at a time we are making use of only 4 bytes
> >> for ECC. Why is that?
> >>
> >>
> >> regards,
> >> -Ketan
> >>
> >>
> >>
> >>
> >>
> >> ----- Original Message ----
> >> From: Ivan Tonchev <[EMAIL PROTECTED]>
> >> To: "Allred, Daniel" <[EMAIL PROTECTED]>
> >> Cc: ketan deshpande <[EMAIL PROTECTED]>; Linux
> >> DaVinci
> >> <[email protected]>;
> >> Subashini Ravindran <[EMAIL PROTECTED]>
> >> Sent: Thursday, 26 April, 2007 8:48:01 PM
> >> Subject: Re: UBL on custom board
> >>
> >> Try attached patch
> >>
> >> Allred, Daniel wrote:
> >>
> >> Ivan brings up a good point. The host app and
> >> target app (the UBL) make certain assumptions
> about
> >> the memory map. These are issues that need to be
> >> addressed in a future release, but you need to
> >> remember that application was originally only
> >> intended for EVM usage, particularly for
> customers
> >> who weren¢t using CCS, or who were only on a
> Linux
> >> box. Since the source of both the host app and
> the
> >> target app are available, the necessary changes
> can
> >> be made.
> >>
> >>
> >>
> >> But having said that it, it might be another
> issue.
> >> Try modifying the UBL program to report back some
> >> status on ECC values or the data seen in the
> >> verification step (NAND_VerifyPage function).
> >>
> >>
> >>
> >> Regards,
> >>
> >> Daniel
> >>
> >>
> >>
> >>
> >>
> >> Daniel J. Allred
> >>
> >> Software Applications
> >>
> >> Catalog DSP / Emerging End Equipment
> >>
> >> ________________________________
> >>
> >> From: Ivan Tonchev [mailto:[EMAIL PROTECTED]
> >> Sent: Thursday, April 26, 2007 9:55 AM
> >> To: ketan deshpande
> >> Cc: Allred, Daniel ; Linux DaVinci; Subashini
> >> Ravindran
> >> Subject: Re: UBL on custom board
> >>
> >>
> >>
> >> How much RAM do you have on your board?
> >>
> >> Is it < 256M?
> >>
> >> ketan deshpande wrote:
> >>
> >> Hi,
> >>
> >> We are trying the DVFlasher_1_12 with the
> custom
> >> designed board with NAND Flash.
> >> The NAND flash chip we are using is a big block
> >> device.When we try to flash the UBL we get the
> >> following messages.
> >>
> >> Attempting to connect to device COM1...
> >> Press any key to end this program at any time.
> >>
> >> Waiting for DVEVM...
> >> BOOTME commmand received. Returning ACK and
> >> header...
> >> ACK command sent. Waiting for BEGIN command...
> >> DVEVM: BEGIN
> >> BEGIN commmand received. Sending CRC table...
> >> CRC table sent. Waiting for DONE...
> >> DONE received. Sending the UART UBL file...
> >> DONE received. UART UBL file was accepted.
> >> UART UBL Transmitted successfully.
> >>
> >> DVEVM: TI UBL Version: 1.11, Flash type:
> >> NAND
> >> DVEVM: Booting PSP Boot Loader
> >> DVEVM: PSPBootMode = NAND
> >>
> >> WARNING! The DM644x is NOT in UART boot mode!
> >> Only continue if you are sure of what you are
> doing.
> >>
> >> Continue (Y/N) ? y
> >>
> >> Waiting for UBL on DVEVM...
> >> UBL's BOOTPSP commmand received. Returning CMD
> and
> >> command...
> >> CMD value sent.
> >> SENDUBL received. Returning ACK and header for
> UBL
> >> data...
> >> ACK command sent. Waiting for BEGIN command...
> >> UART UBL's BEGIN commmand received. Sending the
> >> Flash UBL code...
> >> Flash UBL code sent. Waiting for DONE...
> >> DONE received. All bytes of Flash UBL code
> >> received...
> >> DONE received. Flash UBL S-record decoded
> >> correctly.
> >> DVEVM: Initializing NAND flash...
> >> DVEVM: Correct devID found
> >> DVEVM: Writing UBL to NAND flash
> >> DVEVM: Number of blocks needed for
> header
> >> and data: 0x00000001
> >> DVEVM: Attempting to start in block
> number
> >> 0x00000001.
> >> DVEVM: Unprotecting blocks 0x00000001
> >> through 0x00000001.
> >> DVEVM: Erasing blocks 0x00000001 through
> >> 0x00000001.
> >> DVEVM: Writing header...
> >> DVEVM: NAND ECC failure!
> >> DVEVM: Starting UART Boot...
> >> DVEVM: BOOTPSP
> >>
> >> Waiting for UBL on DVEVM...
> >> UBL's BOOTPSP commmand received. Returning CMD
> and
> >> command...
> >> CMD value sent.
> >> SENDUBL received. Returning ACK and header for
> UBL
> >> data...
> >> ACK command sent. Waiting for BEGIN command...
> >> UART UBL's BEGIN commmand received. Sending the
> >> Flash UBL code...
> >>
> >>
> >> The above mentioned sequence keeps on repeating.
> >> What could be the problem??
> >>
> >> regards,
> >> -Ketan
> >>
> >>
> >>
> >> ________________________________
> >>
> >> SHOUT IT OUT! Tell everyone, from anywhere, that
> >> you're online on Yahoo! Messenger
> >>
> >>
> >
>
<http://us.rd.yahoo.com/mail/in/ymessenger/*http:/messenger.yahoo.com/addpresence.php>
> >
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> ________________________________
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >>
> >> _______________________________________________
> >> Davinci-linux-open-source mailing list
> >> [email protected]
> >>
> >>
> >
>
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
> >
> >>
> >>
> >> # By default UBL is hardcoded to run on boards
> with
> >> 256
> >> # or above megabytes of RAM
> >> #
> >> # This patch relaxes hardcoded constraints for
> >> boards
> >> # with 64MB (or above) megabytes of ram
> >> #
> >> # Signed-off-by: Ivan Tonchev
> <[EMAIL PROTECTED]
> >> #
> >> diff -urp dvflasher-256mb/ubl/include/ubl.h
> >> dvflasher-64mb/ubl/include/ubl.h
> >> --- dvflasher-256mb/ubl/include/ubl.h
> 2007-03-21
> >> 21:28:17.000000000 +0200
> >> +++ dvflasher-64mb/ubl/include/ubl.h
> 2007-04-21
> >> 16:34:36.000000000 +0300
> >> @@ -59,11 +59,15 @@
> >> #define UBL_IMAGE_SIZE (0x00003800)
> >>
> >>
> >>
> >> // Define maximum downloadable image size
> >>
> >> -#define MAX_IMAGE_SIZE (0x02000000)
> >>
> >> +#define MAX_IMAGE_SIZE (0x00800000)
> >>
> >>
> >>
> >> /* Set details of RAM */
> >>
> >> #define RAM_START_ADDR (0x80000000)
> >>
> >> +#ifndef APMP
> >>
> >> #define RAM_END_ADDR (0x8FFFFFFF)
> >>
> >> +#else
> >>
> >> +#define RAM_END_ADDR (0x83FFFFFF)
> >>
> >> +#endif
> >>
> >>
> >>
> >> typedef struct {
> >>
> >> Uint32 magicNum; /* Expected magic number
> */
> >>
> >> diff -urp dvflasher-256mb/ubl/src/ubl_davinci.lds
> >> dvflasher-64mb/ubl/src/ubl_davinci.lds
> >> --- dvflasher-256mb/ubl/src/ubl_davinci.lds
> >> 2007-02-01 22:02:50.000000000 +0200
> >> +++ dvflasher-64mb/ubl/src/ubl_davinci.lds
> >> 2007-04-21 16:30:56.000000000 +0300
> >> @@ -69,15 +69,15 @@ SECTIONS {
> >>
> >>
> >>
> >> __topstack = 0xC000 - 0x4;
> >>
> >>
> >>
> >> - /* 128 MB of DDR2 */
> >>
> >> + /* 64 MB of DDR2 */
> >>
> >> . = 0x80000000;
> >>
> >> .ddrram :
> >>
> >> {
> >>
> >> *(.ddrram)
> >>
> >> }
> >>
> >>
> >>
> >> - /* 128 MB of DDR2 */
> >>
> >> - . = 0x88000000;
> >>
> >> + /* 32 MB of DDR2 */
> >>
> >> + . = 0x82000000;
> >>
> >> .ddrram2 :
> >>
> >> {
> >>
> >> *(.ddrram2)
> >>
> >>
> >>
> >>
> >>
> >> ________________________________
> >>
> >> SHOUT IT OUT! Tell everyone, from anywhere, that
> >> you're online on Yahoo! Messenger
> >>
> >>
> >
>
<http://us.rd.yahoo.com/mail/in/ymessenger/*http:/messenger.yahoo.com/addpresence.php>
> >
> >>
> >>
> >>
> >>
> >
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam? Yahoo! Mail has the best spam
> protection around
> > http://mail.yahoo.com
> >
> >
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source