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.

通过PC机的DMA传输数据到c6678EVM



各位好,

       电脑是win7 64bit, c6678EVM通过AMC至PCIe适配卡插到电脑主板上的PCI槽中,现在项目中想实现的功能是:在电脑的内存中有一段大小约为6MB数据需要传输        到c6678的DDR3中,考虑到CPU占用问题,使用电脑的DMA进行传输,驱动是用windriver编写

        我的问题是:

                 1. 可以不用电脑的DMA,改用c6678的EDMA3进行传输吗?

                 2.配置电脑的DMA时,需要注意什么问题呢?目标地址是用DDR3的全局地址吗?

                 3.PCIe的inbound和outbound address translate registers需要配置吗?

期待各位的答复!

  • 从电脑向DSP通过PCIe写数据,如你所述可以通过windriver写相应的驱动,如果是PC向DSP写数,是不可以用DSP的EDMA,不过我觉得可以反过来,DSP从PC进行读数,这样就可以用DSP的EDMA;PCIe的输入输出地址映射是肯定要配置的,你可以参考一下pdk下的linux pcie demo driver,如:

    C:\ti\mcsdk_2_01_02_06\tools\boot_loader\examples\pcie\linux_host_loader

  • Andy Yin1 ,你好。

    我用windriver写好驱动后,调试时显示板卡的资源如下:

    Vendor ID: 0x104C, Device ID: 0xB005
    Location: Bus 0x1, Slot 0x0, Function 0x0
    Memory range [BAR 0]: base 0xFE400000, size 0x100000
    Memory range [BAR 1]: base 0xD1400000, size 0x80000
    Memory range [BAR 2]: base 0xD1000000, size 0x400000
    Memory range [BAR 3]: base 0xD0000000, size 0x1000000
    Memory range [BAR 4]: base 0xD1490000, size 0x1000
    Memory range [BAR 5]: base 0xD1480000, size 0x10000

    Interrupt: IRQ 11
    Interrupt Options (supported interrupts):
    Message-Signaled Interrupt (MSI)
    Level-Sensitive Interrupt

    对上面的显示有几点疑问:

    1. BAR0并不是如PCIe user guide中说明的大小为4KB,这是为什么?

    2. BAR0~5的值我是不是不能修改,只能通过Inbound transtrate寄存器进行重新映射?如果可以怎么修改呢?

    3. PC和DSP传输数据时,使用DSP的EDMA3传输,RC和EP需要设置吗?分别是谁呢?是PC作为EP吗?

    谢谢!期待回复!

  • 您好,

    最近我也在调试PC与DSP的PCIE通信,想请教一下,您最终实现的DMA通信是使用PC侧的DMA吗?还是使用DSP从PC侧读数据这种方式,此时DSP是作为RC端吗?地址的映射关系是怎么设置的呢?希望得到您的解答,谢谢~!

  • 你好,

    正如上面andy yin1回答的,我使用的是DSP从PC侧读数据,此时DSP我觉得应该是作为EP,地址的映射关系设置可以参考上面andy yin1提供的demo里面的设置。