[U-Boot-Users] MPC8347/9 stack in cache (CFG_INIT_RAM_ADDR)

Matt Hevern matt.hevern at nec.com.au
Tue Apr 24 06:49:34 CEST 2007


Hi all,

I am trying to get U-Boot running on a custom MPC8347 board, and am 
having difficulty with the start-up code. I'm running essentially with 
U-boot 1.1.6, which has had the ppc83xx code updated to U-Boot 1.2.
I'm running out of SDRAM, with CFG_RAMBOOT

I have set CFG_INIT_RAM_ADDR to 0xFB000000, a location un-mapped by any 
of the windows or chip select settings, but mapped into a BAT by the 
board config:

#define CFG_IBAT6L  (0xFB000000 | BATL_PP_10  | BATL_MEMCOHERENCE)
#define CFG_IBAT6U  (0xFB000000 | BATU_BL_64M | BATU_VS | BATU_VP)

#define CFG_HID2 HID2_HBE  // to enable high bats
#define CFG_INIT_RAM_LOCK   1



in cpu/mpc83xx/start.S when it gets to the point of using the stack-in-cache


----start.S
    /* set up the stack pointer in our newly created
     * cache-ram (r1) */
    lis r1, (CFG_INIT_RAM_ADDR + CFG_GBL_DATA_OFFSET)@h
    ori r1, r1, (CFG_INIT_RAM_ADDR + CFG_GBL_DATA_OFFSET)@l

    li  r0, 0       /* Make room for stack frame header and */
    stwu    r0, -4(r1)  /* clear final stack frame so that  */
    stwu    r0, -4(r1)  /* stack backtraces terminate cleanly   */

----END start.S

It crashes badly at the first stwu instruction. I get strange behaviour, 
all register settings in debugger (green hills probe) showing 0x43 - and 
a grinding halt.

My understanding is that to get some ram for the initial stack on these 
processors, it's necessary to use the RAM-in Cache, you should map an 
unused area of address space into a BAT, but am not certain of other 
requirments such as BAT properties, or settings?

Is anyone more familar with this or suggestions?


thanks,

Matt




More information about the U-Boot mailing list