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.

C6678 : can't trigger PCIExpress_MSI_INT

Other Parts Discussed in Thread: SYSBIOS, CODECOMPOSER

Hello

I'm using a c6678 on PCIe acting as endpoint

From Root Complex I can see 6678, for example I read BAR0 offset 0 (Peripheral Version and ID register) and the value is
0x4e301101 (that's ok)

now I would like to trigger a MSI interrupt

this is my hwi configure in the cfg file

var hwi1Params = new HWI.Params();
hwi1Params.instance.name = "hwi1";
hwi1Params.eventId = 17;
hwi1Params.maskSetting = xdc.module("ti.sysbios.interfaces.IHwi").MaskingOption_SELF;
hwi1Params.enableInt = true;
Program.global.hwi1 = HWI.create(4, "&pciIrq", hwi1Params);


i do the following

from RC write 0x01 to offset 0x108 (MSI0_IRQ_ENABLE_SET) to enable MSI0
from RC write 0x00 to offset 0x54 (MSI_IRQ) to generate MSI_0 interrupt (with vector 0)
after writing to 0x54 (MSI_IRQ), I read offset 0x104 (MSI0_IRQ_STATUS) and the value is 0x01 (should be fine)

but the ISR function (pciIrq) is not reached

whyyy?? what's wrong?

Thanks in adance for your help

  • Hi,

    Welcome to the TI E2E forum. I hope you will find many good answers here and in the TI.com documents and in the TI Wiki Pages (for processor issues). Be sure to search those for helpful information and to browse for the questions others may have asked on similar topics (e2e.ti.com).

    Please take a look at below thread and refer the PCIe MSI example project.

    Thanks

  • Welcome to the TI E2E forum. I hope you will find many good answers here and in the TI.com documents and in the TI Wiki Pages (for processor issues). Be sure to search those for helpful information and to browse for the questions others may have asked on similar topics (e2e.ti.com). Please read all the links below my signature.

  • HI

    I'm using C6678, CodeComposer 5.5, mcsdk_2_01_02_06

    I found the problem

    the problem is that I have a task blocked on 'getc(stdin);' because I want to get user input from the shell for debug purpose

    the getc function probably disables IRQ Generation right??

    If I remove 'getc(stdin)' I receive MSI interrupt from RC

    I 'll remove getc from code

    Thanks
    F.Cipriani
  • Hi,

    the problem is that I have a task blocked on 'getc(stdin);' because I want to get user input from the shell for debug purpose

    the getc function probably disables IRQ Generation right??

    Yes, Your test code is waiting for user input. Thanks for your update.