各位好,
电脑是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需要配置吗?
期待各位的答复!
mike lee1:
回复 Andy Yin1:
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 11Interrupt 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吗?
谢谢!期待回复!
fei lau:
您好,
最近我也在调试PC与DSP的PCIE通信,想请教一下,您最终实现的DMA通信是使用PC侧的DMA吗?还是使用DSP从PC侧读数据这种方式,此时DSP是作为RC端吗?地址的映射关系是怎么设置的呢?希望得到您的解答,谢谢~!
mike lee1:
回复 fei lau:
你好,
正如上面andy yin1回答的,我使用的是DSP从PC侧读数据,此时DSP我觉得应该是作为EP,地址的映射关系设置可以参考上面andy yin1提供的demo里面的设置。
TI中文支持网