Hello,
Recently I have been studying the PCIE between two C6678 DSPs. I have configured one C6678 as RC and another C6678 as EP.
My program is based on the PCIe example project provided in the pdk for the C6678 but am attempting to use MSI functionality into it to improve on the handshake technique used .In other words,I would like to use MSI interrupts on both sides.Before EP send data to RC,it send a MSI interrupt,this process has been achieved.But I also want to generate a MSI on RC ,then EP can use HWI ISR to receive the data,and use DMA to transfer the data.
I check many posts on the community,but cann't find the answer in detail.so here are my questions:(1).can RC generate a MSI interrupt?(2).if yes,How can I generate a MSI interrupt?please tell me the concrete detail just like this as follows.( the following content is about the process how to setup the EP for generateing a MSI). If answer is no,please also tell me other methods to genetate a interrupt on RC side .By receiving the interrupt,EP can use ISR to transfer the data.
if you set BAR0 in RC as 0x70000000 (PCIe address over the PCIe link as you defined) and you should setup the outbound translation in EP to use the same PCIe address (0x70000000) over the link. Then you can write 0x0 to the PCIe data space (e.g. write 0x0 to 0x60000054 in EP). The write will be translated to 0x70000054 over the PCIe link and could be accepted by BAR0 in RC, which is 0x70000000. SInce BAR0 is mapped to Application Registers region (from 0x21800000), the writing to 0x70000054 (from EP) will be targeted to 0x21800054 in RC and the MSI_IRQ in RC will be written into 0x0, which will trigger MSI_0 in the RC.----------------said by Steven Ji
I am look forward to your help!
THX
Shi