This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320C6455: PCI host I/O space disabled - not able to generate DSPINT

Part Number: TMS320C6455

Hi,

I am facing a problem related to PCI interface of the DSP TMS320c6455.
I am unable to access entire registers of the DSP from the host PC.
My hardware setup is as follows:
The TMS320c6455 DSP based hardware is placed in the PCI slot of a cPCI machine.
The OS on the host is QNX version 6.5.


The output of pci -vvv command is as below

=====================================================================================
Class = Pre-2.0 (Non-VGA)
Vendor ID = 104ch, Texas Instruments
Device ID = b000h, Unknown Unknown
PCI index = 0h
Class Codes = 000000h
Revision ID = 1h
Bus number = 2
Device number = 15
Function num = 0
Status Reg = 200h
Command Reg = 2h
I/O space access disabled
Memory space access enabled
Bus Master disabled
Special Cycle operations ignored
Memory Write and Invalidate disabled
Palette Snooping disabled
Parity Error Response disabled
Data/Address stepping disabled
SERR# driver disabled
Fast back-to-back transactions to different agents disabled
PCI INTx enabled
Header type = 0h Single-function
BIST = 0h Build-in-self-test not supported
Latency Timer = 20h
Cache Line Size= 8h un-cacheable
BAR - 0 [Mem] = e8000000h prefetchable 32bit length 8388608 enabled
BAR - 1 [Mem] = ea800000h prefetchable 32bit length 4194304 enabled
BAR - 2 [Mem] = e8800000h prefetchable 32bit length 8388608 enabled
BAR - 3 [Mem] = e9000000h prefetchable 32bit length 8388608 enabled
BAR - 4 [Mem] = e9800000h prefetchable 32bit length 8388608 enabled
BAR - 5 [Mem] = ea000000h prefetchable 32bit length 8388608 enabled
Max Lat = 0ns
Min Gnt = 0ns
PCI Int Pin = INT A
Interrupt line = 9
CPU Interrupt = 9h
Device Dependent Registers:
0x040: 0100 0200 0000 0000 0000 0000 0000 0000
0x050: 0000 0000 0000 0000 0000 0000 0000 0000
...
0x0f0: 0000 0000 0000 0000 0000 0000 0000 0000
=====================================================================================

Here the I/O space access disabled.
How can i enable the DSP i/o space?
The DSP hardware is set for PCI boot mode.


I am able to read and write DSP memory from host PC. But for generating the interrupt DSPINT, to start execution of code from RAM, I need to access
DSP registers (PCI Back End Configuration Registers) from the Host PC. But since I/O space is disabled I am not able to access the PCI Back End Configuration Registers.

  • Hi,

    I've notified the RTOS team. Please share which RTOS SDK version are you using?

    Best Regards,
    Yordan
  • Hi,

    Looks that you have a PCI card with a Linux PC. The enumeration worked but for some reason I/O space access disabled. I am familiar with PCI express, I thought there would be similarity to PCI.

    You already have 6 BARs with size of 4-8MB. Are you able to use a BAR to access the DSP memory? As you mentioned that "I am able to read and write DSP memory from host PC". If you can do this, why you are not able to access DSP registers? Isn't register also memory mapped?

    If the DSP registers need I/O access, not memory access. Each BAR register, bit 0 defines this is a I/O BAR or MEM BAR. You may try to set a few BARs to I/O BAR?

    Also, right after the VENDOR_DEVICE_ID register, there is a register called STATUS_COMMAND, this has bit 0 and 1 to setup MEM or IO access. Since your Linux host reported the I/O space access disabled, please also check this bit.

    Regards, Eric

  • We are not using any RTOS at the DSP end. Its our custom applicaiton.

    We are looking for a PCI Boot from adlink x86 platform. In this platform we are using QNX RTOS 6.5 version. 

    I/O space is not accessible from QNX. (I/O space of QNX is the register space of DSP)

    Since the I/O space is not accessible we are 'just' stuck with providing the DSP interrupt to start from RAM. To give DSP interrupt, software interrupt (DSPINT) we have to change '31st' bit in PCISTATSET register.

    How can I set or give a DSPINT from host PC. (please refer my original post for details)