糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > PCIE TLP 写中断

PCIE TLP 写中断

时间:2018-09-07 17:18:27

相关推荐

PCIE TLP 写中断

最近接触了一点 PCIE 硬件相关配合调试工作,看了一些资料,对 TLP 存储器写操作,及通知上层数据写好了的机制有点不明白,跟同事讨论了一下之后有点思路,记录一下,如有不对还望指正。

TLP 概念中,存储器写使用 Posted 方式进行传送,而其他总线事务使用 Non-Posted 方式。对于 Non-Posted 方式,接收端会向发送端发送完成(Completion)报文,而对于 Posted 方式则没有,发送端不会等待接收是否完成。

这样的话,Device 向 Host 写完数据之后,该什么时候发送中断通知 Host 呢。

在文献【1】中有这样的说法:

1.3写TLP请求DMA写的操作相对简单,只需要FPGA单向发起写TLP操作即可完成,至于有没有真正写入内存一般不需要FPGA关心;而驱动程序需要等待一定时间让数据正真写入内存—中断处理的时间已经足够让数据写入内存,所以也不必特别关心。

蓝色部分也是说的写 TLP 没有完成信息,但是红色部分说需要驱动程序去等,或者说中断处理的时间已经足够让数据写入内存,对于这种说法个人觉得还是很不严谨的。

最后和同事讨论了一下,结论是对于 PCIE 的 MSI/MSIX 中断来说,实际也是写内存,而 TLP 的存储器写操作是可以保证顺序的(严格来说得考虑TC、VC),所以只要 Device 保证在写完数据之后再发送中断,那么 Host 上自然可以确保先写完数据,再写中断。

参考文献:

【1】PCIE的DMA和PIO介绍/s?id=1590483430637574612&wfr=spider&for=pc【2】一步一步开始FPGA逻辑设计 - 高速接口之PCIe_Jack.Xu 专栏-CSDN博客近两年来和几个单位接触下来,发现PCIe还是一个比较常用的,有些难度的案例,主要是涉及面比较广,需要了解逻辑设计、高速总线、Linux和Windows的驱动设计等相关知识。这篇文章主要针对Xilinx家V6和K7两个系列的PFGA,在Linux和Windows两种系统平台下,基于Xilinx的参考案例XAPP1052的基础上,设计实现了总线主控DMA(Bus Master DMA),透明映像内存空间和中断机制,在实际工程实践中得到了良好的应用,主要应用在光纤PCIe数据采集卡、FPGA加速卡、存储子系统等/jackxu8/article/details/53288385

如果觉得《PCIE TLP 写中断》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。