找回密码
 注册
关于网站域名变更的通知
查看: 262|回复: 3
打印 上一主题 下一主题

如何让PCIE-DMA真正跑起来?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-10-15 16:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

, o5 y+ ~2 l% y5 {6 h2 M 学习PCIE大概也有一段时间了,经过多次的失败,总算是实现了 xapp1052  和  xapp1030 里面的演示,但是我却发现,对于如何把PCIE真正的用起来,我依然毫无头绪,脑子里有好多疑问:; V* A$ ?; S8 |6 }0 s

6 Y" {4 ~" l; Z3 m9 V1.就拿利用EDK实现的PCIE+DDR工程来说吧,pcie的地址是0x72e00000 ——0x72e0ffff,开了一个ipifbar0,地址0x72e20000——0x72e2ffff,然后IPIFBAR2PCIBAR_0 = 0x00000000,PCIBAR2IPIFBAR_0 =0x74000000(DDR的起始地址),那么我用dma传输数据时,就是在0x72e20000和0x74000000为基地址的两块地址之间传输么?- Z7 ~6 y* G9 j. o. M" R0 _+ y

2 t6 Y$ E9 c: ]! _8 U0 W" a
, }1 _$ \5 j2 ?/ F5 |6 t" Z7 C; S1 E% _2 O5 v6 D) D. t/ w' d
2.如果要将事先准备好的1K 数据通过PCIE传给PC,应该怎么操作呢?我的想法是把这些数据先写入0x74000000为基址的地址中,然后用dma传输,但是在Xilinx SDK中,0x72e20000和0x74000000这两部分的地址中的数据都无法读取(其它有些地址可读,如0x00000000),我觉得可能是一种保护吧,但是这样子我就不能验证我的想法了。
& X# U4 c9 `3 a- u5 G
/ U/ `3 `/ L. _8 f9 z# J+ C. \) I. ~) X* L
' H# G* S8 s; W2 A. ]4 |3. 对于Xilinx生成的PCIE核(如xapp1052),如果要使用的话,是必须要自己用C语言编写控制程序么?对于EDK的PCIE工程,应该在SDK中编写C驱动就行了吧,还是说也需要另外编写应用程序?: F% |/ T* s! i2 Q4 T3 }% t2 u

' c6 j  F4 v0 I" }4 ?# @9 R    以上是一些关于PCIE我拿不准的地方,麻烦大神帮忙看看,给我一些提点,非常高感谢!!!
  • TA的每日心情
    开心
    2019-11-20 15:05
  • 签到天数: 2 天

    [LV.1]初来乍到

    2#
    发表于 2019-10-15 19:25 | 只看该作者
    DMA地址是由驱动通过内核申请的,和BAR的地址不一样,BAR的地址是通过内存映射生产的板卡资源的物理地址,不能用于DMA传输。FPGA端需要编写DMA控制器程序,DMA控制器通过PCIE IPCORE传输数据。
  • TA的每日心情
    开心
    2019-11-19 15:19
  • 签到天数: 1 天

    [LV.1]初来乍到

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

    该用户从未签到

    4#
    发表于 2019-10-15 19:26 | 只看该作者
    我只用过pci
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-20 17:32 , Processed in 0.109375 second(s), 23 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表