[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [microblaze-uclinux] Jtag Debug



John,

Hrmmm that is strange. So I should try setting the DWIDTH to 32? I built the system with BSB so it was all done for me. If their sloppy hardware compilation is to blame I will be very upset with Xilinx. I have had the same parameters for my Spartan 3 board as well. The performance decrease definitely came when adding the external memory, we had thought maybe it was doing byte-wise accesses and that was why the system dropped in speed so dramatically, or OPB bus contention (which we now know cannot be the case since there are almost no other peripherals). Is there a master list for all the parameters for all the hardware modules you could encounter? I would certainly prefer coding my hardware straight in the MHS and MSS files but I figured EDK knew what it was doing bette than I did. I will feel out your suggestions and let you know.

Thanks,
Andy


From: John Williams <jwilliams@xxxxxxxxxxxxxx>
Reply-To: microblaze-uclinux@xxxxxxxxxxxxxx
To: microblaze-uclinux@xxxxxxxxxxxxxx
Subject: Re: [microblaze-uclinux] Jtag Debug
Date: Fri, 28 Oct 2005 08:42:30 +1000

Hi Andy,

A couple of comments/observations about your system, that may be relevant.

From your MHS file:

BEGIN mch_opb_ddr
 PARAMETER INSTANCE = DDR_SDRAM_64Mx32
 PARAMETER HW_VER = 1.00.a


[snip]

 PARAMETER C_DDR_AWIDTH = 13

You have no PARAMETER C_DDR_DWIDTH set - by default it is 16 (look at
MPD file), but the name of your peripheral suggests that you have 32-bit
wide DDR.


 [snip]

 BUS_INTERFACE SOPB = mb_opb
 BUS_INTERFACE MCH0 = ixcl
 BUS_INTERFACE MCH1 = dxcl

I am surprised your system works at all - there is a bug in the
opb_mch_ddr controller - I reported the bug to Xilinx a while ago, and
understand that a patch shhould be released soon.

In the systems where I saw the bug (66 MHz w/ 16 bit wide DDR) the XCL
interface would lock up the CPU - but maybe in your system it's
manifesting itself as very slow instruction fetch?

I can say with some certainty that the debug/MDM controller is not the
cause of your performance woes.

Try the OPB_DDR controller instead (with caches of course), see if that
has any impact.  In principle, the MCH controllers are much faster, but
until the bug in the mch_opb_ddr is fixed, you probably shouldn't try to
use it.

Cheers,

John



Abot Botbot wrote:
> Hey Friends,
>
>   This might be considered off topic, but I think I'm missing a
> fundamantal explanation for the performance that I get. Here's my basic
> design flow, which doesn't use uCLinux yet, I was just trying to verify
> that the DSP functionality I want is possible on the microblaze... I
> download the XMD stub to the board, then run "dow executable.elf" from
> XMD and type "run"... This sets my code in motion, but it seems to be
> going extremely slow. It's running entirely out of SRAM, but that
> shouldn't be the only factor in the performance I'm seeing... I'm
> wondering if my whole system is running over the JTAG clock and putting
> out debug symbols to the PC, even though I'm not observing them, and I
> took the -g option out of the compiler flags.. So two questions... Am I
> running in some debug mode where it is running much slower than it could
> be... How do I get the hardware to run independantly, if it is in some
> debug mode.. After I finish a few things for my graduate classes (mid
> terms, blech!) I will get back on the uCLinux train and get that running
> on my ML401 board. Thanks for any help you can give! I'll attatch some
> files in case anyone thinks looking at them will help them to understand.
>
> Thanks,
> Andy
>
> _________________________________________________________________
> Express yourself instantly with MSN Messenger! Download today - it's
> FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
>
> /*******************************************************************
> *
> * CAUTION: This file is automatically generated by libgen.
> * Version: Xilinx EDK 7.1.2 EDK_H.12.5.1
> * DO NOT EDIT.
> *
> * Copyright (c) 2005 Xilinx, Inc.  All rights reserved.
> *
> * Description: Driver parameters
> *
> *******************************************************************/
>
> #define STDIN_BASEADDRESS 0x40600000
> #define STDOUT_BASEADDRESS 0x40600000
>
> /******************************************************************/
>
> #define XPAR_DLMB_CNTLR_BASEADDR 0x00000000
> #define XPAR_DLMB_CNTLR_HIGHADDR 0x00001FFF
> #define XPAR_ILMB_CNTLR_BASEADDR 0x00000000
> #define XPAR_ILMB_CNTLR_HIGHADDR 0x00001FFF
>
> /******************************************************************/
>
> #define XPAR_XUARTLITE_NUM_INSTANCES 2
> #define XPAR_DEBUG_MODULE_BASEADDR 0x41400000
> #define XPAR_DEBUG_MODULE_HIGHADDR 0x4140FFFF
> #define XPAR_DEBUG_MODULE_DEVICE_ID 0
> #define XPAR_DEBUG_MODULE_BAUDRATE 0
> #define XPAR_DEBUG_MODULE_USE_PARITY 0
> #define XPAR_DEBUG_MODULE_ODD_PARITY 0
> #define XPAR_DEBUG_MODULE_DATA_BITS 0
> #define XPAR_RS232_UART_BASEADDR 0x40600000
> #define XPAR_RS232_UART_HIGHADDR 0x4060FFFF
> #define XPAR_RS232_UART_DEVICE_ID 1
> #define XPAR_RS232_UART_BAUDRATE 9600
> #define XPAR_RS232_UART_USE_PARITY 0
> #define XPAR_RS232_UART_ODD_PARITY 0
> #define XPAR_RS232_UART_DATA_BITS 8
>
> /******************************************************************/
>
> #define XPAR_XGPIO_NUM_INSTANCES 4
> #define XPAR_LEDS_4BIT_BASEADDR 0x40040000
> #define XPAR_LEDS_4BIT_HIGHADDR 0x4004FFFF
> #define XPAR_LEDS_4BIT_DEVICE_ID 0
> #define XPAR_LEDS_4BIT_INTERRUPT_PRESENT 0
> #define XPAR_LEDS_4BIT_IS_DUAL 0
> #define XPAR_LEDS_POSITIONS_BASEADDR 0x40020000
> #define XPAR_LEDS_POSITIONS_HIGHADDR 0x4002FFFF
> #define XPAR_LEDS_POSITIONS_DEVICE_ID 1
> #define XPAR_LEDS_POSITIONS_INTERRUPT_PRESENT 0
> #define XPAR_LEDS_POSITIONS_IS_DUAL 0
> #define XPAR_PUSH_BUTTONS_POSITION_BASEADDR 0x40000000
> #define XPAR_PUSH_BUTTONS_POSITION_HIGHADDR 0x4000FFFF
> #define XPAR_PUSH_BUTTONS_POSITION_DEVICE_ID 2
> #define XPAR_PUSH_BUTTONS_POSITION_INTERRUPT_PRESENT 0
> #define XPAR_PUSH_BUTTONS_POSITION_IS_DUAL 0
> #define XPAR_DIP_SWITCHES_8BIT_BASEADDR 0x40060000
> #define XPAR_DIP_SWITCHES_8BIT_HIGHADDR 0x4006FFFF
> #define XPAR_DIP_SWITCHES_8BIT_DEVICE_ID 3
> #define XPAR_DIP_SWITCHES_8BIT_INTERRUPT_PRESENT 0
> #define XPAR_DIP_SWITCHES_8BIT_IS_DUAL 0
>
> /******************************************************************/
>
> #define XPAR_XIIC_NUM_INSTANCES 1
> #define XPAR_IIC_EEPROM_BASEADDR 0x40800000
> #define XPAR_IIC_EEPROM_HIGHADDR 0x4080FFFF
> #define XPAR_IIC_EEPROM_DEVICE_ID 0
> #define XPAR_IIC_EEPROM_TEN_BIT_ADR 0
> #define XPAR_IIC_EEPROM_GPO_WIDTH 1
>
> /******************************************************************/
>
> #define XPAR_XSYSACE_MEM_WIDTH 16
> #define XPAR_XSYSACE_NUM_INSTANCES 1
> #define XPAR_SYSACE_COMPACTFLASH_BASEADDR 0x41800000
> #define XPAR_SYSACE_COMPACTFLASH_HIGHADDR 0x4180FFFF
> #define XPAR_SYSACE_COMPACTFLASH_DEVICE_ID 0
> #define XPAR_SYSACE_COMPACTFLASH_MEM_WIDTH 16
>
> /******************************************************************/
>
> #define XPAR_DDR_SDRAM_64MX32_MEM0_BASEADDR 0x24000000
> #define XPAR_DDR_SDRAM_64MX32_MEM0_HIGHADDR 0x27FFFFFF
>
> /******************************************************************/
>
> #define XPAR_XEMAC_NUM_INSTANCES 1
> #define XPAR_ETHERNET_MAC_BASEADDR 0x40C00000
> #define XPAR_ETHERNET_MAC_HIGHADDR 0x40C0FFFF
> #define XPAR_ETHERNET_MAC_DEVICE_ID 0
> #define XPAR_ETHERNET_MAC_ERR_COUNT_EXIST 1
> #define XPAR_ETHERNET_MAC_DMA_PRESENT 1
> #define XPAR_ETHERNET_MAC_MII_EXIST 1
> #define XPAR_ETHERNET_MAC_CAM_EXIST 0
> #define XPAR_ETHERNET_MAC_JUMBO_EXIST 0
>
> /******************************************************************/
>
> #define XPAR_SRAM_256KX32_NUM_BANKS_MEM 1
>
> /******************************************************************/
>
> #define XPAR_SRAM_256KX32_MEM0_BASEADDR 0x22000000
> #define XPAR_SRAM_256KX32_MEM0_HIGHADDR 0x220FFFFF
>
> /******************************************************************/
>
> #define XPAR_XTMRCTR_NUM_INSTANCES 1
> #define XPAR_OPB_TIMER_1_BASEADDR 0x41C00000
> #define XPAR_OPB_TIMER_1_HIGHADDR 0x41C0FFFF
> #define XPAR_OPB_TIMER_1_DEVICE_ID 0
>
> /******************************************************************/
>
> #define XPAR_INTC_MAX_NUM_INTR_INPUTS 1
> #define XPAR_XINTC_HAS_IPR 1
> #define XPAR_XINTC_USE_DCR 0
> #define XPAR_XINTC_NUM_INSTANCES 1
> #define XPAR_OPB_INTC_0_BASEADDR 0x41200000
> #define XPAR_OPB_INTC_0_HIGHADDR 0x4120FFFF
> #define XPAR_OPB_INTC_0_DEVICE_ID 0
> #define XPAR_OPB_INTC_0_KIND_OF_INTR 0x00000000
>
> /******************************************************************/
>
> #define XPAR_INTC_SINGLE_BASEADDR 0x41200000
> #define XPAR_INTC_SINGLE_HIGHADDR 0x4120FFFF
> #define XPAR_INTC_SINGLE_DEVICE_ID XPAR_OPB_INTC_0_DEVICE_ID
> #define XPAR_OPB_TIMER_1_INTERRUPT_MASK 0X000001
> #define XPAR_OPB_INTC_0_OPB_TIMER_1_INTERRUPT_INTR 0
>
> /******************************************************************/
>
> #define XPAR_CPU_CORE_CLOCK_FREQ_HZ 100000000
>
> /******************************************************************/
>


--
Dr John Williams, Research Fellow,
Embedded Systems Group / Reconfigurable Computing
School of ITEE, The University of Queensland, Brisbane, Australia
(p) +61 7 33652185  (f) +61 7 33654999 (m) +61 403969243
___________________________
microblaze-uclinux mailing list
microblaze-uclinux@xxxxxxxxxxxxxx
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/


_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/

___________________________
microblaze-uclinux mailing list
microblaze-uclinux@xxxxxxxxxxxxxx
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/