[U-Boot] BDI2000 Configure file question for GDB on MPC8458

Qingyu Song qingyu.song at gmail.com
Mon Apr 13 20:25:51 CEST 2009


I have a ported u-boot base on 8548CDS for my 8548 board. The U-Boot version
is 2008.10.
the u-boot boot up was successful. I am trying to use BDI2000 do some
debuging.

the BDI2000 config file is as below. with this config file, I can flash
program and bring up my board. However, when I try to set a hardware break
point, the u-boot code halt before it reach the break point.

###########config file##############
;bdiGDB configuration file for TF8548 Prototype
[INIT]
; Errata PCI-Ex 26 workaround
WM32    0xFF70A000      0x0000005C      ;Clear bit 1 & 0 in Link Control &
Status Register
WM32    0xFF70A004      0x00000000      ;(PCIconfiguration space register at
offset 0x5C)
WM32    0xFF7E0F08      0x00000008      ;Clear bit 30 in the engineering
only register
                                        ;(CCSR space register at offset
0xe0f08)
; use the following two lines for STARTUP HALT
WSPR    63              0xffff0000      ;IVPR to boot core
WSPR    415             0x0000f000      ;IVOR15 : Debug exception
;
;================= setup for flash programming ===============
; Move CCSRBAR to 0xe0000000
;
WM32    0xff700000      0x000e0000      ;CCSRBAR to 0xe0000000
;
; Initialize LAWBAR's to Match U-boot
WM32    0xe0000C08      0x000f0000      ;LAWBAR0 : @0xc0000000
WM32    0xe0000C10      0x8040001b      ;LAWAR0  : Local Bus 1Gb
WM32    0xe0005000      0xff801001      ;BR0 16 bit at 0xff800000
WM32    0xe0005004      0xff801e65      ;OR0
;
;================= end flash programming =====================
;
WM32    0xe00050d4    0x00030002        ;LCRR, LB clk /4
;-------------------------------
; enable the memory interface
;-------------------------------
;; DDR_SDRAM_CFG;

;; CS0_BNDS
WM32     0xe0002000 0x0000001f ; DDR CS0 for 512 MB Module
;; CS0_CONFIG
WM32     0xe0002080 0x80000202 ; 14 Rows, 10 Columns for 512 MB
;; TIMING_CFG_0
WM32    0xe0002104 0x00260802 ; Match U-Boot Conclusion No Change
;; ext_refrec 0x00010000
;; TIMING_CFG_1
WM32    0xe0002108 0x5d575533 ; For 512 MB Module 533MHz
;; TIMING_CFG_2
WM32    0xe000210C 0x049868cb ; 512MB 533MHz
;; DDR_SDRAM_MODE
WM32    0xe0002118 0x00000842 ; 533MHz for 512 MB
; DDR_SDRAM_MODE2 0x00000000
; DDR_SDRAM_INTERVAL
WM32    0xe0002124 0x08210100 ; 512 MB 533MHz
; DDR_SDRAM_CFG2
WM32    0xe0002114 0x24000010 ;
; DDR_SDRAM_CLK_CNTL
WM32    0xe0002130 0x03000000 ; 0110 3/4 - Works Reasonably (512MB PAtriot
DEfault)
DELAY 400

; enable the memory interface
; DDR_SDRAM_CFG
; enable the memory interface
WM32    0xe0002110 0xe3008000 ; Match U-Boot Conclusion No change (ECC)
;define 2byte transfer size for flash memory
TSZ2 0xff800000 0xffffffff

[TARGET]
CPUTYPE     8548        ;the CPU type
JTAGCLOCK   0           ;use 16 MHz JTAG clock
STARTUP     HALT        ;halt core while HRESET is asserted
BREAKMODE   HARD          ;SOFT or HARD, HARD uses PPC hardware breakpoint
STEPMODE    HWBP        ;JTAG or HWBP, HWBP uses a hardware breakpoint
WAKEUP      500         ;give reset time to complete
POWERUP     2000        ;start delay after power-up detected in ms


[HOST]
IP          192.168.0.113
FILE        /BDI2000/u-boot.bin
FORMAT      BIN
LOAD        MANUAL              ;load code MANUAL or AUTO after reset
DUMP        dump
PROMPT      TF8548->>


[FLASH]
CHIPTYPE    AM29BX16            ;AM29LV641D
CHIPSIZE    0x800000            ;The size of one flash chip in bytes
BUSWIDTH    16                  ;The width of the flash memory bus in bits
(8 | 16 | 32)
FILE        /u-boot.bin
FORMAT      BIN 0xFFF80000
ERASE       0xFFF80000          ;erase sector 0
ERASE       0xFFF90000          ;erase sector 1
ERASE       0xFFFa0000          ;erase sector 2
ERASE       0xFFFb0000          ;erase sector 3
ERASE       0xFFFc0000          ;erase sector 4
ERASE       0xFFFd0000          ;erase sector 5
ERASE       0xFFFe0000          ;erase sector 6
ERASE       0xFFFf0000          ;erase sector 7


[REGS]
FILE        /BDI2000/reg8548.def
#########end of config file#########

for the u-boot debuging,
#ppc-linux-gdb
(gdb)add-symbol-file u-boot 0xfff80000
(gdb)target remote bdi2000:2001
(gdb)mon break hard
(gdb)b board_init_r
(gdb)c
Continuing

My problem is the break point can't be reached. After Ctrl+C I can see the
code halt at the line 224 in cpu_init_early_f shown as below

void cpu_init_early_f(void)
{
    set_tlb(0, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
        MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
        1, 0, BOOKE_PAGESZ_4K, 0);

    /* set up CCSR if we want it moved */
#if (CFG_CCSRBAR_DEFAULT != CFG_CCSRBAR_PHYS)
    {
        u32 temp;

        set_tlb(0, CFG_CCSRBAR_DEFAULT, CFG_CCSRBAR_DEFAULT,
            MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
            1, 1, BOOKE_PAGESZ_4K, 0);

=>        temp = in_be32((volatile u32 *)CFG_CCSRBAR_DEFAULT);
        out_be32((volatile u32 *)CFG_CCSRBAR_DEFAULT, CFG_CCSRBAR_PHYS >>
12);

        temp = in_be32((volatile u32 *)CFG_CCSRBAR);
    }
#endif

    /* Pointer is writable since we allocated a register for it */
    gd = (gd_t *) (CFG_INIT_RAM_ADDR + CFG_GBL_DATA_OFFSET);

    /* Clear initial global data */
    memset ((void *) gd, 0, sizeof (gd_t));

    init_laws();
    invalidate_tlb(0);
    init_tlbs();
}

  220     extern inline unsigned in_be32(const volatile unsigned __iomem
*add
  221     {

  222             unsigned ret;
  223
>224             __asm__ __volatile__("sync; lwz%U1%X1 %0,%1;\n"
  225                                  "twi 0,%0,0;\n"
  226                                  "isync" : "=r" (ret) : "m" (*addr));
  227             return ret;
  228     }

I guess this is because that CFG_CCSRBAR_DEFAULT is not accessable. but the
u-boot code did the set_tlb() already. Do i need to set tlb in the BDI2000
[INIT] section? what is the relationship between the u-boot and BDI2000 init
procedure?


More information about the U-Boot mailing list