打印
[FPGA]

怎么才能将PCIE-DMA真正跑起来?

[复制链接]
7271|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
machairodus|  楼主 | 2015-6-25 19:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    学习PCIE大概也有两个月了,经过多次的失败,总算是实现了 xapp1052  和  xapp1030 里面的演示,但是我却
发现,对于如何把PCIE真正的用起来,我依然毫无头绪,脑子里有好多疑问:

1.就拿利用EDK实现的PCIE+DDR工程来说吧,pcie的地址是0x72e00000 ——0x72e0ffff,开了一个ipifbar0,地址
0x72e20000——0x72e2ffff,然后IPIFBAR2PCIBAR_0 = 0x00000000,PCIBAR2IPIFBAR_0 =0x74000000(DDR的
起始地址),那么我用dma传输数据时,就是在0x72e200000x74000000为基地址的两块地址之间传输么?



2.如果要将事先准备好的1K 数据通过PCIE传给PC,应该怎么操作呢?我的想法是把这些数据先写入0x74000000为基址
的地址中,然后用dma传输,但是在Xilinx SDK中,0x72e200000x74000000这两部分的地址中的数据都无法读取(其
它有些地址可读,如0x00000000),我觉得可能是一种保护吧,但是这样子我就不能验证我的想法了。


3. 对于Xilinx生成的PCIE核(如xapp1052),如果要使用的话,是必须要自己用C语言编写控制程序么?对于EDK的PCIE
工程,应该在SDK中编写C驱动就行了吧,还是说也需要另外编写应用程序?

    以上是一些关于PCIE我拿不准的地方,希望能够抽时间看看,给我一些提点,谢谢!!!

相关帖子

沙发
CNZJP| | 2015-6-28 21:02 | 只看该作者
DMA地址是由驱动通过内核申请的,和BAR的地址不一样,BAR的地址是通过内存映射生产的板卡资源的物理地址,不能用于DMA传输。FPGA端需要编写DMA控制器程序,DMA控制器通过PCIE IPCORE传输数据。

使用特权

评论回复
板凳
machairodus|  楼主 | 2015-6-29 15:01 | 只看该作者
CNZJP 发表于 2015-6-28 21:02
DMA地址是由驱动通过内核申请的,和BAR的地址不一样,BAR的地址是通过内存映射生产的板卡资源的物理地址, ...

     谢谢你的回复!     我说的不是DMA地址,是DMA传输的数据源地址目标地址,DMA搬运就是把源地址的数据搬运到目标地址吧?
     我不明白的就是怎么才能知道源地址目标地址呢?上面第一条疑问就是我以前关于这点的想法,现在看来,
应该是错了吧!请大神指点!

使用特权

评论回复
地板
xiamingmin163| | 2015-10-8 15:59 | 只看该作者
DMA源地址和目的地址应由上位机设置,对于DMA读源地址是PC存储区映射到PCI空间的地址,目的地址是FPGA板块的本地物理地址(ddr等),DMA写源地址则是FPGA板块的本地物理地址,目的地址是PC存储区映射到PCI空间的地址,BAR是基地址寄存器,一般用于DMA寄存器的设置。建议你看XAPP859再了解下PCIE的协议。

使用特权

评论回复
5
cnb12345| | 2015-10-9 09:54 | 只看该作者
我只用过PCI

使用特权

评论回复
6
zizicky| | 2016-2-19 10:14 | 只看该作者
xiamingmin163 发表于 2015-10-8 15:59
DMA源地址和目的地址应由上位机设置,对于DMA读源地址是PC存储区映射到PCI空间的地址,目的地址是FPGA板块 ...

能否具体说下,在xapp1052工程里面,FPGA板块的本地物理地址是在哪个单元里面写的?我没看懂。是在BMD还是在BMD_design里面呢?

使用特权

评论回复
7
peter90chen| | 2016-6-14 11:27 | 只看该作者
zizicky 发表于 2016-2-19 10:14
能否具体说下,在xapp1052工程里面,FPGA板块的本地物理地址是在哪个单元里面写的?我没看懂。是在BMD还 ...

你好,我看到你也整xapp1052,我现在照着例程搭建了起来,然后用windriver能够实现对bar空间的读写,那我接下来应该怎么做,他的那个用户程序demo我安装不上?谢谢赐教

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

43

帖子

0

粉丝