[U-Boot-Users] BDI2000 problems flashing virgin custom 8548 board

robert lazarski robertlazarski at gmail.com
Thu Aug 30 16:00:27 CEST 2007


On 8/29/07, Ben Warren <bwarren at qstreams.com> wrote:
> robert lazarski wrote:
> > atum8548>erase 0
> > Erasing flash at 0x00000000
> > # Erasing flash memory failed
> >
> > What chip do you have? What did you start erasing?
> >
> >
> I'm not much of an expert on this, but I believe the BDI-2000 will
> execute the INIT section before handing control over to you. Your flash
> chip is on chip select 0, so the BR0/OR0 registers determine where you
> will see it. On my CPU (MPC8349) and probably yours too, the 17 least
> significant (from the left) bits of BR0 determine where the chip select
> ends up. In your case, this is 0xff80. I expect your flash chip will
> start at 0xff800000.
>
> I highly recommend reading up on these registers - the Freescale
> reference manuals are excellent. There are a lot of options, and for NOR
> flash, at least at startup, you should make sure all the timings are
> fully relaxed (maximum wait states etc.).

Thanks Ben and all. I really do have 1Gb / 128MB of flash - here's
some quick docs:

http://www.spansion.com/products/S29GL01GP.html

Here's the way I came up with my BR0 / OR0 :

/*
 * FLASH on the Local Bus
 * based on flash chip S29GL01GP
 * One bank, 128M, using the CFI driver.
 * Boot from BR0 bank at 0xf800_0000
 *
 * BR0:
 *    Base address 0 = 0xF8000000 = BR0[0:16] = 1111 1000 0000 0000 0
 *    Port Size = 16 bits = BRx[19:20] = 10
 *    Use GPCM = BRx[24:26] = 000
 *    Valid = BRx[31] = 1
 *
 * 0    4    8    12   16   20   24   28
 * 1111 1000 0000 0000 0001 0000 0000 0001 = f8001001    BR0
 *
 * OR0:
 *    Addr Mask = 128M = ORx[0:16] = 1111 1000 0000 0000 0
 *    Reserved ORx[17:18] = 00
 *    CSNT = ORx[20] = 1
 *    ACS = half cycle delay = ORx[21:22] = 11
 *    SCY = 6 = ORx[24:27] = 0110
 *    TRLX = use relaxed timing = ORx[29] = 1
 *    EAD = use external address latch delay = OR[31] = 1
 *
 * 0    4    8    12   16   20   24   28
 * 1111 1000 0000 0000 0000 1110 0110 0101 = f8000E65    ORx
 */

Here's what I now have in my bdi config:

; Setup Flash chip select
WM32    0xe0005000      0xf8001001      ;BR0
WM32    0xe0005004      0xf8000E65      ;OR0

[FLASH]
CHIPTYPE    MIRRORX16   ;AM29LV641D , is equivalent with S29GL01GP ?
CHIPSIZE    0x128000    ;The size of one flash chip in bytes
BUSWIDTH    16          ;The width of the flash memory bus in bits (8 | 16 | 32)
FILE        /tftpboot/u-boot.bin
FORMAT      BIN 0xFF000000
ERASE       0xFF000000  ;erase sector 0
ERASE       0xFF010000  ;erase sector 1
ERASE       0xFF020000  ;erase sector 2
ERASE       0xFF030000  ;erase sector 3

And this is where I get stuck:

atum8548>unlock
Unlocking flash passed
atum8548>erase 0xf8000000
Erasing flash at 0xf8000000
# Erasing flash memory failed

Anyone got a clue-by-four ? ;-) . Thanks!
Robert




More information about the U-Boot mailing list