[U-Boot-Users] configuring L2 cache in MPC8540 as SRAM

Selvamuthukumar V v.selvamuthukumar at gdatech.co.in
Wed Nov 29 11:42:12 CET 2006

I'm trying to configure L2 cache in MPC8540 as SRAM. I'm using the
following code to do this.

        volatile immap_t    *immap = (immap_t *)CFG_IMMR;
        volatile ccsr_l2cache_t *l2cache = &immap->im_l2cache;
        volatile ccsr_dma_t *dma = &immap->im_dma;
        int i;

        l2cache->l2ctl = 0x68010000;
        l2cache->l2srbar0 = CFG_L2_SRAM_BASE;
        l2cache->l2ctl = 0xa8010000;

        /* Use DMA to fill memory-mapped SRAM */
        dma->satr0 = 0x00040000;
        dma->sar0  = 0;
        dma->datr0 = 0x00050000;
        dma->bcr0  = CFG_L2_SRAM_SIZE;
        dma->mr0   = 0x0f009404;
        dma->dar0  = CFG_L2_SRAM_BASE;

I've added TLB entries for SRAM address range in init.S file.

After this I'm trying to write to SRAM. But while running from BDI2000 I'm
able to write to this SRAM. (i.e) when I execute 'go 0xffffffc' in the BDI
prompt I'm able to write and read to SRAM. While booting the board without
BDI, U-boot hangs while SRAM is being accessed. Any
Here is part of my BDI configuration file.

; Move the L2SRAM to the initial MMU page
WM32    0xFF720000      0x68010000      ;L2CTL    (256k)
WM32    0xFF720100      0xFFFC0000      ;L2SRBAR0 (256k)
WM32    0xFF720000      0xA8010000      ;L2CTL    (256k)
; Clear L2SRAM with DMA
WM32    0xff721110      0x00040000      ;SATR0 SREADTTYPE=Read, don't
snoop WM32    0xff721114      0xff700004      ;SAR0  Dummy source register
WM32    0xff721118      0x00050000      ;DATR0 DWRITETTTYPE=Write, snoop
local processor
WM32    0xff721120      0x00040000      ;BCR0  Size
WM32    0xff721100      0x0f009404      ;MR0   BWC=f,SAHTS=2(4
WM32    0xff72111c      0xfffc0000      ;DAR0  which sets CS=1
DELAY   200                             ;let DMA complete
WM32    0xff721100      0x00000000      ;MR0   reset condition
; load and execute boot code  (needed if STARTUP HALT)
WM32    0xfffffffc      0x48000000      ;loop
EXEC    0xfffffffc      1000
WSPR    63              0xffff0000      ;IVPR to boot core
WSPR    415             0x0000f000      ;IVOR15 : Debug exception
; Remove the L2SRAM from the initial MMU page
WM32    0xFF720000      0x28010000      ;L2CTL
WM32    0xFF720000      0x28000000      ;L2CTL
EXEC    0xfffff000

CPUTYPE     8540        ;the CPU type
JTAGCLOCK   0           ;use 16 MHz JTAG clock
;STARTUP     STOP 4000   ;let boot code setup the system
;STARTUP     LOOP        ;use boot loop in L2SRAM
STARTUP     HALT        ;halt core while HRESET is asserted
BREAKMODE   HARD        ;SOFT or HARD, HARD uses PPC hardware breakpoint
STEPMODE    JTAG        ;JTAG or HWBP, HWPB uses a hardware breakpoint
WAKEUP      200         ;give reset time to complete
POWERUP     5000        ;start delay after power-up detected in ms
MEMACCESS   SAP         ;use SAP or CORE for JTAG memory accesses
SIO     7 115200


More information about the U-Boot mailing list