问题标签 [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.
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?
linux - 没有得到scsi的主机,id,频道号
我正在编写一个程序,它将打印 SCSI 设备的主机、通道号、ID 号、lun。
提供有关它的信息。但我想通过 c 程序打印它。我正在获取供应商 ID、设备类型、修订级别……但不是 lun、总线编号等。
是否有任何ioctl
命令可以获取 lun、bus、id 号码?
winapi - 通过 Windows 的 API 检索 PCI 坐标(用户模式)
有没有办法通过使用 Windows c/c++ API(例如 PnP 配置管理器 API)来获取设备的 PCI 坐标(总线/插槽/功能编号)?我已经知道如何在内核模式下做到这一点,我需要一个用户模式的解决方案。我的目标系统是 Windows XP-32 位。
linux - 如何强制内核重新读取/重新初始化 PCI 设备 ID?
我的机器(运行 Linux 内核 3.2.38)在启动时有错误的 PCI 设备子系统 ID(子设备和子供应商 ID)。如果我在系统仍处于启动状态(即热插拔)时物理拔出并重新插入 PCI 设备,它会获得正确的 ID。
请注意,它获取的错误子设备和子供应商 ID 与设备的设备和供应商 ID 相同(请参阅下面 lspci 输出中的前两行)。
以下是热插拔设备前后lspci -vvnn的输出:
热插拔前:
热插拔后:
我的问题:有没有办法在不热插拔设备的情况下修复 ID?例如,强制内核重新读取 PCI 设备 ID,例如通过执行 PCI 总线重新扫描/重新枚举/重新配置?
任何帮助将不胜感激。谢谢。
PS。请注意,即使启动到 UEFI 内部 shell,问题也与内核/软件无关。
c - 无法打开 sys/bus/pci/device/ 目录
我正在尝试读取设备的资源文件并mmap
读取设备寄存器,但是当我尝试打开文件位置错误提示时:没有这样的文件或目录。我已经使用 chmod 666 更改了文件的权限。我用来打开文件的代码:
该文件存在,我可以使用 cat 实用程序读取它。
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?
linux - Linux 中的 PCI 总线负载测量
我有一个 linux (3.12) 系统 (x86-64),有多个设备连接到 PCI 总线 (PCI-e)。我想测量当前情况下的 PCI 总线负载,当我将另一个设备连接到总线时再次测量以查看差异,但我不知道如何。有没有办法做到这一点?
c# - Adlink PCI-7250 事件回调
我刚刚编写了一个简单的 C#,以便在任何数字输入变高时从 PCI-7250(数据采集卡)获取事件回调。这是我的代码:
运行时,它只是在运行时不断抛出一些随机数,然后最终崩溃。我相信它与 EventType (DASK.DBEvent) 有关。我浏览了手册,但没有提及更多关于 DASK.DBEvent .
请指教。
linux - 从用户空间访问 linux 中的 pci 设备信息
我想以编程方式从用户空间访问 pci 设备树信息。就像根复合体和连接到它的设备一样。我该怎么做,请告诉我。
问候, Pradeep
hardware-interface - PCI express 无法打开设备,PCIE_open 失败
我正在使用 Intel DE2i-150 板,我有 Intel atom 处理器和 yocto os 和 fpga 和 Nios II 处理器。我正在尝试从 yocto 访问 fpga 板。最初我能够进行通信,但由于现在进行了一些其他安装,PCIE_open 无法正常工作,它给了我一个错误:“无法打开设备”。这个短语在我的代码中没有任何定义。我也使用了驱动程序代码,但最终出现了同样的错误。以前它正在工作。我不知道发生了什么。请帮助我解决这个问题。