免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6150 | 回复: 5
打印 上一主题 下一主题

问一个PCIe设备的问题(已解决) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-29 01:05 |显示全部楼层 |倒序浏览
在PCIe中,Completion包中有一个Completer ID,虽然说没有确定的值不会影响报文的路由,但想知道一下设备自己如何知道自己的Bus+Dev(Function自己会知道的)?好像标准的配置空间只有Bridge才有Bus相关的寄存器,难道这个要结合驱动自己去实现?而且PCIe支持Endpoint到Endpoint的访问吧,这种情况必须知道自己的这些信息才能正确填写Requester ID吧?

[ 本帖最后由 Cyberman.Wu 于 2009-12-29 11:12 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-12-29 11:10 |显示全部楼层
自己搞明白了,这个是PCE Express配置空间中没有具体定义的,要设备自己去实现。在PCI Express System Architecture中的描述:
In PCI Express, each device "captures" (and remembers) its own Bus Number and Device Number contained in TLP header bytes 8-9 each time a configuration write (Type 0) is detected on its primary link. At reset, all bus and device numbers in the system revert to 0, so a device will not respond to transactions other than configuration cycles until at least one configuration write cycle (Type 0) has been performed. Note that the PCI Express protocol does not define a configuration space location where the device function is required to store the captured Bus Number and Device Number information, only that it must do it.


在PCI Express Base Specification的2.2.9中有更详细的描述。这个需要设备自己在收到Configration Write的时候记录(CfgWr总是用ID-Routing的),后面使用;因为#Bus/#Device有可能动态改变,所以就要每次写的都都自动记录一下。

看来以前说的书要读三遍不是没有道理的,只是现在都是项目催着人走,看书的时候一目十行,浮躁啊。

[ 本帖最后由 Cyberman.Wu 于 2009-12-29 11:13 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-12-30 21:34 |显示全部楼层

回复 #4 snail_314 的帖子

我们做设备。

论坛徽章:
0
4 [报告]
发表于 2009-12-31 21:33 |显示全部楼层

回复 #7 accessory 的帖子

是的,这本书挺好的,我就是看着这本书逐渐理解一些东西的。不过这本书讲的是1.0a的,细节上和1.1有一些差异,但这个很少。

规范是最权威的,不过不熟悉一阵子看起来挺麻烦的;规范里面比较好的是它给了许多Implementation Notes,很有参考价值。不过在规范中关于Memory Read的Length好像有两个地方描述是矛盾的。

[ 本帖最后由 Cyberman.Wu 于 2009-12-31 21:36 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-12-31 21:53 |显示全部楼层
原帖由 北极狐BILL 于 2009-12-31 09:10 发表


bus, dev, function不是OS分配的麽,在PCI设备的枚举过程中,会为每个pci_dev分配bus, dev, function。


是的,OS(或BIOS)对下面的总线进行编号,每一个Bridge上面的相关寄存器也会被配置。我只是疑问设备自己如何知道,因为它的Completion中有一个Completer ID,并且PCIe设备可以主动做一些操作,此时它的Reqeust ID也是一样的问题。后来才发现规范中提到配置空间中没有定义这个,不过要求设备在收到Configuration Write的时候需要自己去记录。

论坛徽章:
0
6 [报告]
发表于 2009-12-31 22:14 |显示全部楼层
原帖由 snail_314 于 2009-12-31 09:59 发表
是软件写的阿,楼主的意思是说硬件还会detect这个写的事件然后纪录下来软件写的base address


Base Address和这个是两回事。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP