[U-Boot-Users] Flash write crash on MPC8548CDS

Eran Liberty liberty at extricom.com
Mon Mar 10 18:05:07 CET 2008


Here is my sequence narrated:

U-Boot 1.3.2-rc3 (Mar  6 2008 - 12:00:30)

CPU:   8548, Version: 2.0, (0x80310020)
Core:  E500, Version: 2.0, (0x80210020)
Clock Configuration:
        CPU: 990 MHz, CCB: 396 MHz,
        DDR: 198 MHz, LBC:  49 MHz
L1:    D-cache 32 kB enabled
        I-cache 32 kB enabled
Board: EXSW1600
I2C:   ready
DRAM:  Initializing
     DDR: 512 MB
\*
  * I give less sectors then needed for the flash,
  * forcefully restricting its size....
  * don't think it should matter
  *\
FLASH: ERROR: too many flash sectors
ERROR: too many flash sectors
16 MB
L2 cache 512KB: enabled
     PCI: 64 bit, unknown MHz, async, host, arbiter
                Scanning PCI bus 00
PCI on bus 00 - 00
In:    serial
Out:   serial
Err:   serial
/*
  * My print add-on, so i can calc the address in the objdump file
  */
gd->reloc_off = 0x20040000
/*
  * My board FPGA burn process
  */
FPGA loading
    Image Name:   20080219:1741
    Image Type:   PowerPC Linux Kernel Image (bzip2 compressed)
    Data Size:    415310 Bytes = 405.6 kB
    Load Address: 00000000
    Entry Point:  00000000
    Verifying Checksum ... OK
loading to fpga  done.
Net:   eTSEC0
Hit any key to stop autoboot:  0
/*
  * I don't think you wanted e005000
  */
=> md e005000
0e005000: deadbeef deadbeef deadbeef deadbeef    ................
0e005010: deadbeef deadbeef deadbeef deadbeef    ................
0e005020: deadbeef deadbeef deadbeef deadbeef    ................
0e005030: deadbeef deadbeef deadbeef deadbeef    ................
0e005040: deadbeef deadbeef deadbeef deadbeef    ................
0e005050: deadbeef deadbeef deadbeef deadbeef    ................
0e005060: deadbeef deadbeef deadbeef deadbeef    ................
0e005070: deadbeef deadbeef deadbeef deadbeef    ................
0e005080: deadbeef deadbeef deadbeef deadbeef    ................
0e005090: deadbeef deadbeef deadbeef deadbeef    ................
0e0050a0: deadbeef deadbeef deadbeef deadbeef    ................
0e0050b0: deadbeef deadbeef deadbeef deadbeef    ................
0e0050c0: deadbeef deadbeef deadbeef deadbeef    ................
0e0050d0: deadbeef deadbeef deadbeef deadbeef    ................
0e0050e0: deadbeef deadbeef deadbeef deadbeef    ................
0e0050f0: deadbeef deadbeef deadbeef deadbeef    ................
/*
  * nor e0050000
  */
=> md e0050000
e0050000: 80000000 80000000 80000000 80000000    ................
e0050010: 00000001 00000001 00000001 00000001    ................
e0050020: 80000000 80000000 80000000 80000000    ................
e0050030: 00000001 00000001 00000001 00000001    ................
e0050040: 80000000 80000000 80000000 80000000    ................
e0050050: 00000001 00000001 00000001 00000001    ................
e0050060: 80000000 80000000 80000000 80000000    ................
e0050070: 00000001 00000001 00000001 00000001    ................
e0050080: 80000000 80000000 80000000 80000000    ................
e0050090: 00000001 00000001 00000001 00000001    ................
e00500a0: 80000000 80000000 80000000 80000000    ................
e00500b0: 00000001 00000001 00000001 00000001    ................
e00500c0: 80000000 80000000 80000000 80000000    ................
e00500d0: 00000001 00000001 00000001 00000001    ................
e00500e0: 80000000 80000000 80000000 80000000    ................
e00500f0: 00000001 00000001 00000001 00000001    ................
/*
  * You probably wanted this.
  */
=> md e0005000
e0005000: ff801001 ff806e65 ff001001 ff806e65    ......ne......ne
e0005010: f0001861 fc006901 f8001001 fff00ff7    ...a..i.........
e0005020: 00000000 00000000 00000000 00000000    ................
e0005030: 00000000 00000000 00000000 00000000    ................
e0005040: 00000000 00000000 00000000 00000000    ................
e0005050: 00000000 00000000 00000000 00000000    ................
e0005060: 00000000 00000000 00000000 00000000    ................
e0005070: 00000000 00000000 00000000 00000000    ................
e0005080: 00000000 00000000 00000000 00000000    ................
e0005090: 00000000 00000000 00000000 00000000    ................
e00050a0: 00000000 20000000 00000000 00000000    .... ...........
e00050b0: 00000000 00000000 ffffffff 00000000    ................
e00050c0: 00000000 00000000 00000000 00000000    ................
e00050d0: 00000000 80030008 00000000 00000000    ................
e00050e0: 00000000 00000000 00000000 00000000    ................
e00050f0: 00000000 00000000 00000000 00000000    ................
=> fli

Bank # 1: CFI conformant FLASH (16 x 16)  Size: 8 MB in 64 Sectors
   AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x7E2301
   Erase timeout: 16384 ms, write timeout: 2 ms
   Buffer write timeout: 5 ms, buffer size: 32 bytes

   Sector Start Addresses:
   FF800000        FF820000        FF840000        FF860000        FF880000
   FF8A0000        FF8C0000        FF8E0000        FF900000        FF920000
   FF940000        FF960000        FF980000        FF9A0000        FF9C0000
   FF9E0000        FFA00000        FFA20000        FFA40000        FFA60000
   FFA80000        FFAA0000        FFAC0000        FFAE0000        FFB00000
   FFB20000        FFB40000        FFB60000        FFB80000        FFBA0000
   FFBC0000        FFBE0000        FFC00000        FFC20000        FFC40000
   FFC60000        FFC80000        FFCA0000        FFCC0000        FFCE0000
   FFD00000        FFD20000        FFD40000        FFD60000 
FFD80000 E
   FFDA0000 E      FFDC0000 E      FFDE0000 E      FFE00000 E 
FFE20000 E
   FFE40000 E      FFE60000 E      FFE80000 E      FFEA0000 E 
FFEC0000 E
   FFEE0000 E      FFF00000 E      FFF20000 E      FFF40000 E 
FFF60000 E
   FFF80000   RO   FFFA0000   RO   FFFC0000   RO   FFFE0000   RO

Bank # 2: CFI conformant FLASH (16 x 16)  Size: 8 MB in 64 Sectors
   AMD Standard command set, Manufacturer ID: 0x01, Device ID: 0x7E2301
   Erase timeout: 16384 ms, write timeout: 2 ms
   Buffer write timeout: 5 ms, buffer size: 32 bytes

   Sector Start Addresses:
   FF000000 E      FF020000 E      FF040000 E      FF060000 E 
FF080000 E
   FF0A0000 E      FF0C0000 E      FF0E0000 E      FF100000 E 
FF120000 E
   FF140000 E      FF160000 E      FF180000 E      FF1A0000 E 
FF1C0000 E
   FF1E0000 E      FF200000 E      FF220000 E      FF240000 E 
FF260000 E
   FF280000 E      FF2A0000 E      FF2C0000 E      FF2E0000 E 
FF300000 E
   FF320000 E      FF340000 E      FF360000 E      FF380000 E 
FF3A0000 E
   FF3C0000 E      FF3E0000 E      FF400000 E      FF420000 E 
FF440000 E
   FF460000 E      FF480000 E      FF4A0000 E      FF4C0000 E 
FF4E0000 E
   FF500000 E      FF520000 E      FF540000 E      FF560000 E 
FF580000 E
   FF5A0000 E      FF5C0000 E      FF5E0000 E      FF600000 E 
FF620000 E
   FF640000 E      FF660000 E      FF680000 E      FF6A0000 E 
FF6C0000 E
   FF6E0000 E      FF700000 E      FF720000 E      FF740000 E 
FF760000 E
   FF780000 E      FF7A0000 E      FF7C0000 E      FF7E0000 E
/*
  * Here is the first attempt
  */
=> cp.b FF800000 FF000000 80000
Copy to Flash... External Interrupt Exception at PC: 1ffc1dc0, SR: 
29200, vector=500 irq IACK0 at e00600a0=3
NIP: 1FFC1DC0 XER: 00000000 LR: 1FFCEBCC REGS: 1fadbc50 TRAP: 0500 DAR: 
00000000
MSR: 00029200 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 00

GPR00: 00029200 1FADBD40 1FADBF8C 0000F103 FF00113A 1FADBD32 000000A0 
2C4D2B8E
GPR08: 00000000 FF000000 00000003 1FFFC4D4 48028024 FFB7FFFF 1FFFB200 
20040000
GPR16: 00000000 00000000 00000000 00000000 00000000 EFFFF5EF 1FADE338 
1FADE240
GPR24: FF07FFFF 00000000 00000001 FF00113A F1030000 1FFEFD48 1FFFB8F4 
1FFFC4D4
Call backtrace:
/*
  * Tracing the callback indicates the exception happened as soon
  * as enable_interrupts () is called in flash_write_cfiword()
  */
1FFEFD48 1FFCEB50 1FFCF1FC 1FFDD9D4 1FFD8E44 1FFDFAA8 1FFE0150
1FFE02B8 1FFD16D8 1FFC9558 1FFC15FC
Skipping current instr, Returning to 0x1ffc1dc4
done
/*
  * You can see that the flash was copied ok despite the exception.
  * rebooting the machine and re-checking the crc confirms that it
  * was indeed copied to flash (and not ram)
  */
=> crc FF800000 80000
CRC32 for ff800000 ... ff87ffff ==> d5f0d2a3
=> crc FF000000 80000
CRC32 for ff000000 ... ff07ffff ==> d5f0d2a3
=> erase FF000000 ff07ffff
.... done
Erased 4 sectors
/*
  * Second attempt succeeds quietly as in ksi case.
  */
=> cp.b FF800000 FF000000 80000
Copy to Flash... done
=>




More information about the U-Boot mailing list