在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5604|回复: 10

[原创] pcie的endpoint如何实现主动向root节点发送数据?

[复制链接]
发表于 2019-6-24 20:47:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
endpoint需要先向root发送一个中断,然后让root配置endpoint去做write  DMA(cpu端)写操作

还是 endpoint自己直接就可以向DMA发起write DMA 写操作了?

发表于 2019-6-25 10:09:42 | 显示全部楼层
endpoint自己直接就可以向DMA发起write DMA 写操作.   --------------这就叫DMA, 不关cpu啥事。
 楼主| 发表于 2019-6-26 11:02:59 | 显示全部楼层
本帖最后由 american007 于 2019-6-26 11:10 编辑

DMA传输可以由CPU发起,然后剩下的数据传输的事由DMA和endpoint搞定,把cpu的时间腾出来去干别的,这个是看到的资料里一般的用法;
现在不明确的地方是,DMA传输是否可以由endpoint发起 ? ,
如果endpoint 没有通过tlp得到cpu的指令,直接自己去连接DMA, 等于endpoint发起了DMA传输,cpu完全不知道咋回事, 这样能行吗 ?
发表于 2019-6-27 17:54:17 | 显示全部楼层
可以由EP端发起,但没有目标内存地址,EP怎么知道向哪个内存地址写呢? 目标内存地址一般是CPU分配的。
发表于 2019-6-27 18:44:47 | 显示全部楼层


zhanyan110 发表于 2019-6-27 17:54
可以由EP端发起,但没有目标内存地址,EP怎么知道向哪个内存地址写呢? 目标内存地址一般是CPU分配的。 ...


EP端有寄存器吧,CPU可以把目标地址配置进来吧。
发表于 2019-6-30 23:11:50 | 显示全部楼层
建议参考本网站中 mindshare 出版的PCIE system architecture  
发表于 2019-7-1 10:14:21 | 显示全部楼层


asic_service 发表于 2019-6-27 18:44
EP端有寄存器吧,CPU可以把目标地址配置进来吧。




一般CPU分配好内存,配置好DMA控制寄存器,就可以了。
DMA控制器是有数据就发送,CPU可以查询状态寄存器知道传输是否完成,也可以用中断通知。
发表于 2019-7-5 13:12:52 | 显示全部楼层
pcie的事务层里有不同的包类型,个人目前的理解是,读操作是由RC向下发送rd报文,然后EP在回复报文中包含了数据内容。
EP是不能够主动向RC发送数据,但是EP可以通过中断告知RC,RC处理中断后,发送rd报文,然后EP返回对应的数据,而返回数据是PCIe的TLP层已经做好的。所以实际操只需要EP发起中断,RC处理中断,应该就好了。
发表于 2019-7-17 10:32:22 | 显示全部楼层
endpoint需要先向root发送一个中断,然后让root配置endpoint去做write  DMA(cpu端)写操作 --》这个理解是对的,因为当EP向RP发送数据的时候,RP的软件层面要先malloca一块内存空间,然后要配置EP端的DMA,配置传输的大小和目标地址(就是刚才malloca的那块内存的物理地址),然后启动EP的DMA就能传输了。

建议可以看一下RIFFA,就能对这个过程有比较清楚的认识。
发表于 2021-8-9 11:10:36 | 显示全部楼层
EP可以向RC 发起memory wr/rd, RC 对EP 的dma 寄存器进行配置。使能其DMA。可以参考PCIe 网卡驱动
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-5-15 02:02 , Processed in 0.026303 second(s), 9 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表