MPC8248 poor performance

Paul Eaton recon_pje at yahoo.com
Wed Jan 31 06:41:25 EST 2007


Thanks Kumar for your suggestion to look into the I-cache and D-cache initialization.
   
  I verified that neither the IBAT or DBAT tables are initialized. It appears this operation is not handled by u-boot but rather the OS is expected to configure the cache parameters. This is a problem for my application given that we don't boot an OS after u-boot completes.
   
  I've attempted to poke in the values that I feel are needed for the BAT registers as well as HID0 with an Abatron, but my card resets when I attempt to run after the values are loaded.
   
  Would you happen to know what linux module is used to set up cache parameters on a MPC8248 (8260 class) processor? I'd like to look over how Linux handles it to see if I'm missing something in the initialization sequence.
   
  I don't see the sequence documented anywhere in the Freescale documents and the trial and error method with the Abatron is getting old.
   
  Paul
  

Kumar Gala <galak at kernel.crashing.org> wrote:
  
On Jan 26, 2007, at 1:42 PM, Paul Eaton wrote:

> Hi,
>
> We have a custom 8248 card that we are testing.
> The core is running at 400MHz and the system bus is 80Mhz (measured 
> and verified), 32 bit wide memory interface.
> There is nothing connected to the CPM except 1 RS232 port which is 
> not used in our test loop.
>
> We are running a small test C loop (with approx. 60 assembly 
> language instructions) at the end of u-boot as in the Hello World 
> example. The loop runs fine but upon closer analisis I found that 
> each loop takes 6uS. This averages out to 100nS/instruction = 
> 10MIPS = sad performance. I would have expected at least 100MIPS or 
> more.
>
> I've checked the HID0 SPR register to verify that the instruction 
> cache is enabled.
>
> I've also stepped thru the code to verify that the code stays 
> within the loop (no async branches or irqs). Looking at the adr and 
> data lines with an analyzer the loop appears to do the correct 
> amount of I/O to SDRAM but the amount of time of between SDRAM 
> accesses seem longer than I would expect if caching, pipelining, 
> snooping, etc are enabled.
>
> Any ideas on what could be slowing the CPU down are greatly 
> appreciated.
>

Is the code doing any d-side access? is the d-cache enabled? How are 
the BATs setup for memory locations you are accessing.

- k





 
---------------------------------
TV dinner still cooling?
Check out "Tonight's Picks" on Yahoo! TV.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://ozlabs.org/pipermail/linuxppc-embedded/attachments/20070130/4dbb5ddb/attachment.htm 


More information about the Linuxppc-embedded mailing list