问题标签 [pci-bus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2887 浏览

linux - MMIO read/write latency

I found my MMIO read/write latency is unreasonably high. I hope someone could give me some suggestions.

In the kernel space, I wrote a simple program to read a 4 byte value in a PCIe device's BAR0 address. The device is a PCIe Intel 10G NIC and plugged-in at the PCIe x16 bus on my Xeon E5 server. I use rdtsc to measure the time between the beginning of the MMIO read and the end, a code snippet looks like this:

I'm expecting the elapsed time between (end, init) to be less than 1us, after all, the data traversing the PCIe data link should be only a few nanoseconds. However, my test results show at lease 5.5use to do a MMIO PCIe device read. I'm wondering whether this is reasonable. I change my code to remote the memory barrier (rmb) , but still get around 5 us latency.

This paper mentions about the PCIe latency measurement. Usually it's less than 1us. www.cl.cam.ac.uk/~awm22/.../miller2009motivating.pdf‎ Do I need to do any special configuration such as kernel or device to get lower MMIO access latency? or Does anyone has experiences doing this before?

0 投票
1 回答
724 浏览

linux - 没有得到scsi的主机,id,频道号

我正在编写一个程序,它将打印 SCSI 设备的主机、通道号、ID 号、lun。

提供有关它的信息。但我想通过 c 程序打印它。我正在获取供应商 ID、设备类型、修订级别……但不是 lun、总线编号等。

是否有任何ioctl命令可以获取 lun、bus、id 号码?

0 投票
1 回答
2789 浏览

winapi - 通过 Windows 的 API 检索 PCI 坐标(用户模式)

有没有办法通过使用 Windows c/c++ API(例如 PnP 配置管理器 API)来获取设备的 PCI 坐标(总线/插槽/功能编号)?我已经知道如何在内核模式下做到这一点,我需要一个用户模式的解决方案。我的目标系统是 Windows XP-32 位。

0 投票
2 回答
5218 浏览

linux - 如何强制内核重新读取/重新初始化 PCI 设备 ID?

我的机器(运行 Linux 内核 3.2.38)在启动时有错误的 PCI 设备子系统 ID(子设备和子供应商 ID)。如果我在系统仍处于启动状态(即热插拔)时物理拔出并重新插入 PCI 设备,它会获得正确的 ID。

请注意,它获取的错误子设备和子供应商 ID 与设备的设备和供应商 ID 相同(请参阅下面 lspci 输出中的前两行)。

以下是热插拔设备前后lspci -vvnn的输出:

热插拔前:

热插拔后:

我的问题:有没有办法在不热插拔设备的情况下修复 ID?例如,强制内核重新读取 PCI 设备 ID,例如通过执行 PCI 总线重新扫描/重新枚举/重新配置?

任何帮助将不胜感激。谢谢。

PS。请注意,即使启动到 UEFI 内部 shell,问题也与内核/软件无关。

聚苯乙烯。本例中的 PCI 设备是MEN F206N,“我的机器”是MEN F22P

0 投票
1 回答
1174 浏览

c - 无法打开 sys/bus/pci/device/ 目录

我正在尝试读取设备的资源文件并mmap读取设备寄存器,但是当我尝试打开文件位置错误提示时:没有这样的文件或目录。我已经使用 chmod 666 更改了文件的权限。我用来打开文件的代码:

该文件存在,我可以使用 cat 实用程序读取它。

0 投票
1 回答
4476 浏览

linux-kernel - PCIe 中断号

我正在尝试编写一个可用于服务 PCIe MSI 中断的内核模块。现在我在尝试配置我的中断时遇到了麻烦,我正在尝试遵循“Linux Device Drivers Ed. 3”这本书指出:

“驱动程序不需要检查中断号,因为PCI_INTERRUPT_LINE可以保证找到的值是正确的。”

所以当然这似乎是设置我的中断的合乎逻辑的方式:

现在这为我注册了中断 60。然后我开始使用 jTag 手动触发中断,我收到一条内核消息,指出该中断没有附加处理程序(中断 576)。如果我将 irq_line 硬编码为 576,那么 request_irq 就会失败。

找出我的中断线的最佳方法是什么?为什么我不能得到我需要的 IRQ?

还有一件事,在启动过程中,我的设备自动设置为 IRQ 引脚 1(传统中断 A),它对应于 irq 行 572,这也是存储在 dev->irq 中的值。如果引导顺序自动将 IRQ 设置为引脚 0(禁用传统中断),dev->irq 是否会指向我的 MSI 中断@576?

0 投票
1 回答
809 浏览

linux - Linux 中的 PCI 总线负载测量

我有一个 linux (3.12) 系统 (x86-64),有多个设备连接到 PCI 总线 (PCI-e)。我想测量当前情况下的 PCI 总线负载,当我将另一个设备连接到总线时再次测量以查看差异,但我不知道如何。有没有办法做到这一点?

0 投票
1 回答
770 浏览

c# - Adlink PCI-7250 事件回调

我刚刚编写了一个简单的 C#,以便在任何数字输入变高时从 PCI-7250(数据采集卡)获取事件回调。这是我的代码:

运行时,它只是在运行时不断抛出一些随机数,然后最终崩溃。我相信它与 EventType (DASK.DBEvent) 有关。我浏览了手册,但没有提及更多关于 DASK.DBEvent .

请指教。

0 投票
4 回答
3653 浏览

linux - 从用户空间访问 linux 中的 pci 设备信息

我想以编程方式从用户空间访问 pci 设备树信息。就像根复合体和连接到它的设备一样。我该怎么做,请告诉我。

问候, Pradeep

0 投票
1 回答
480 浏览

hardware-interface - PCI express 无法打开设备,PCIE_open 失败

我正在使用 Intel DE2i-150 板,我有 Intel atom 处理器和 yocto os 和 fpga 和 Nios II 处理器。我正在尝试从 yocto 访问 fpga 板。最初我能够进行通信,但由于现在进行了一些其他安装,PCIE_open 无法正常工作,它给了我一个错误:“无法打开设备”。这个短语在我的代码中没有任何定义。我也使用了驱动程序代码,但最终出现了同样的错误。以前它正在工作。我不知道发生了什么。请帮助我解决这个问题。