问题标签 [pci]

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 投票
4 回答
4685 浏览

linux - 有没有办法让 Linux 内核重新运行它的 PCI 初始化代码?

我正在寻找可以从驱动程序、用户空间实用程序或系统调用中进行的内核模式调用,该调用将要求内核查看 PCI 总线并完全重新运行其初始化,或初始化特定的设备。具体来说,我需要 Kernel 识别一个在启动后添加到总线上的设备,然后配置它的地址空间、中断和其他配置参数,最后启用该设备,以便我可以为它加载驱动程序(除非这一切作为驱动程序负载的一部分发生)。

为此,我被困在 2.4.x 系列内核上,目前正在使用 2.4.20,但如果重要,将移至 2.4.37。该发行版是在 ram 磁盘中运行的精简版 Red Hat 7.3,但我可以添加任何需要的工具来使其正常工作(只要它们与 2.4 系列配合得很好)。

如果一些背景有助于澄清我正在尝试做的事情:从冷启动,一旦在 Linux 中,我使用 GPIO 对 FPGA 进行编程。FPGA 的一部分一旦被编程,就实现了一个简单的 PCI 设备。目前,在对 FPGA 进行编程后,我重新启动系统,Linux 会在启动后识别设备并为其加载驱动程序。

而不是需要重新启动,我想简单地要求内核在启动期间执行任何操作以查找 PCI 设备(我将内核配置为自行查找 PCI 设备,而不是向 BIOS 询问该信息,所以 BIOS 不需要知道这个设备(我希望))。

我相信 Linux 能够在编程后但在重新启动之前看到设备,因为scanpci在我编程后会显示设备,就像lspci -H 1. 我只需要一种方法让它进入/proc/pci、配置和启用。

0 投票
1 回答
695 浏览

linux-kernel - Linux 设备驱动程序能否在 device_remove() 函数中等待 DMA 终止?

我为 PCI 设备编写了 Linux 设备驱动程序。该设备执行 DMA 操作。当 DMA 操作运行时程序崩溃时会出现问题。

实际上,当崩溃时,该device_remove()函数被系统调用(就像close()被调用一样)。该函数对 PCI 设备使用的内存区域进行清理,正确释放分配的内存。我的意思是它在正常情况下可以正常工作。

但是,如果 DMA 正在运行,当它实际终止时,它将无法执行 DMA 清理,因为它不再有权访问已释放的设备数据。一个简单的解决方案是在 close() 函数中等待。(这是我的理解,但也许DMA函数的最后一部分永远不会执行?)

device_remove()为 DMA 实际终止设备驱动程序的(aka close()) 功能而哀号是个好主意吗?有没有其他方法来处理这个问题?

0 投票
1 回答
4134 浏览

linux - 从用户空间程序访问 PCI 设备

我有一个设备可以通过 pcie 与我的处理器接口。我已经使用现有的 pci 文件操作为其编写了驱动程序。

现在我的问题是如何从用户空间程序访问它?PCI 文件操作不支持 IOCTL,因此与其他字符设备不同,我无法进行 ioctl 调用。我不能使用 pci_config_read_byte 等函数,因为它们适用于内核空间(包含在 linux/pci.h 中)。

0 投票
3 回答
1679 浏览

pci - 任何 PCI 拓扑中的同一总线上是否可以存在两个相同的设备

根据 PCI 标准,设备是根据供应商 ID、设备 ID 和总线编号来识别的。相同类型的所有设备都具有相同的供应商 ID 和设备 ID。如果我将两个这样的设备放在同一总线上,比如总线 0。PCI 软件子系统将如何区分这两者?

如果这种情况在 PCI 中是不可能的,那么通过 PCI Express Switch 可以做到吗?

0 投票
1 回答
1271 浏览

sockets - 将套接字代码与 Linux PCI 驱动程序连接

我有两个与 PCI 接口的设备。我也有使用通用套接字代码的两种设备的代码。(这些设备最初是通过 MII/以太网连接的。)

现在,我需要编写一个 PCI 设备驱动程序来在两个设备之间来回传输数据包。

如何访问套接字代码打开的文件描述符?这和访问字符设备文件一样吗?

PCI 驱动程序必须以某种方式从代码中的 read() 和 write() 捕获数据包。

谢谢!

0 投票
1 回答
4586 浏览

linux-kernel - 我可以在 Linux 中完全禁用 PCI 插槽吗?

像你们中的许多人一样,我喜欢每隔一段时间玩一次游戏。由于我将 Linux 用于我的日常任务(编程、写论文、浏览等),因此我只在玩游戏时利用我在 Windows 中的显卡功能。

最近我注意到我的能源账单变得非常高,我想减少电脑的能源消耗。我的显卡空闲时使用 110 瓦,而低端 Radeon HD5xxx 仅使用 5 瓦。我认为我的电脑每周开机 40 小时,其中只有 3 小时的游戏时间。这意味着我每年浪费 202 千瓦时(!)。

我想我可以只买一个 DVI 分配器和一个低端 Radeon 卡,然后在 Linux 中禁用高端卡的 PCI 插槽。我用谷歌搜索了一下,但我不确定要使用哪个搜索词,所以我没有发现任何有用的东西。

太长了,没看:是否可以使用Linux切断PCI插槽的电源?

0 投票
2 回答
302 浏览

x86 - 失去与 FPGA 设备的链接

我正在尝试在 PCIe FPGA 设备的设备驱动程序中调试一些奇怪的问题。设备驱动程序和 FPGA 映像都是在内部开发的。

目标系统是 x86,操作系统是 fedora 9。它有一个 PCIe 卡,FPGA 插入它唯一的 PCIe 插槽。从 EEPROM 引导后加载 FPGA 映像。

驱动程序的编写方式是使用 /sys/bus/pci/devices/0000:02:00.0/ 资源文件(其中 0000:02:00.0 是包含 FPGA 的卡的 PCI 插槽)来配置FPGA。

当系统启动时(或从休眠状态返回时),FPGA 链路接缝丢失,资源文件丢失。当 FPGA 正确启动时,一切正常(资源文件在那里)。当系统进入休眠状态时,FPGA 断电。当它从休眠状态返回时,FPGA 上电,然后开始驱动程序初始化。

我怀疑接下来的事情:

  • 固件中的错误 - 与 PCI 插件有关的东西?
  • 内核中的错误 - 最不可能,因为可以很好地识别其他 PCI 卡。只有
    这张 PCI 卡会出问题

问题是:

  • 有没有人遇到过类似的问题?
  • 还有什么可能是错的?
  • 有关如何调试此问题的任何建议?

编辑

我刚刚发现了这个错误,这与我看到的问题非常相似。

0 投票
1 回答
683 浏览

cuda - 带有 PCI 接口的 GPU 上的 nVidia CUDA

您是否有在使用 PCI 接口(而不是 PCIe)的启用 GPU 上使用 CUDA 的经验?它有效吗?

0 投票
4 回答
735 浏览

hardware - 自定义硬件导致 Linux 启动在 PC 上的 initrd 后挂起

我们创建了一些使用 PCIe 2.0 的定制硬件。此硬件适用于装有 CentOS Linux 5.4 的 HP DL360 G7 服务器。因此,在 HP 服务器上,Linux 能够很好地冷启动、识别卡并与我们的驱动程序交互。但是,当我们尝试将卡插入普通戴尔 T3500 PC 时,Linux 无法启动。它在 initrd 之后挂起,没有崩溃、调试或错误消息。所以我的问题是,有哪些工具或设置可以帮助调试这个问题?我们想知道为什么启动过程无法通过 initrd。

0 投票
1 回答
3787 浏览

vxworks - 在 VxWorks 653 中如何在 PCI 设备上读/写内存?

我正在使用 VxWorks 653,我的目标是 wrSbc7457 Power PC。

我的 wrSbc7457 上有一张夹层卡,我正在尝试写入/读取该夹层卡上的内存。

对于那些熟悉 VxWorks 的人,我的usrAppInit()ModuleOS 的功能中有以下内容:

加载操作系统启动映像时,我的目标输出以下内容:

我的问题是:如何将夹层卡的内存映射到主机的地址空间,然后如何写入/读取夹层卡上的内存?