
On 8/29/07, Ben Warren bwarren@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