Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 使用PCIe设备驱动程序处理来自同一FPGA设备的同一IRQ线路中的不同中断_Linux Kernel_Linux Device Driver_Fpga_Pci_Pci E - Fatal编程技术网

Linux kernel 使用PCIe设备驱动程序处理来自同一FPGA设备的同一IRQ线路中的不同中断

Linux kernel 使用PCIe设备驱动程序处理来自同一FPGA设备的同一IRQ线路中的不同中断,linux-kernel,linux-device-driver,fpga,pci,pci-e,Linux Kernel,Linux Device Driver,Fpga,Pci,Pci E,我不知道我在这里问的问题是否正确(主要是因为我不太善于理解我现在面临的问题) 目前,我有一个使用Legaxy中断(INTx,主要是因为开发FPGA代码的团队仍然不知道如何使用MSI/MSI-X)的FPGA 在开发的第一次迭代中,我使用uio_pci_通用设备驱动程序读取FPGA设备生成的中断 但现在,我将有至少8个不同的中断信号,将由FPGA发送,其中每一个都使用相同的IRQ线(INTa,…)。目标是让用户空间应用程序打开设备,等待中断,然后从同一IRQ线路读取发送的中断源。这可能吗 我试图为同

我不知道我在这里问的问题是否正确(主要是因为我不太善于理解我现在面临的问题)

目前,我有一个使用Legaxy中断(INTx,主要是因为开发FPGA代码的团队仍然不知道如何使用MSI/MSI-X)的FPGA

在开发的第一次迭代中,我使用uio_pci_通用设备驱动程序读取FPGA设备生成的中断

但现在,我将有至少8个不同的中断信号,将由FPGA发送,其中每一个都使用相同的IRQ线(INTa,…)。目标是让用户空间应用程序打开设备,等待中断,然后从同一IRQ线路读取发送的中断源。这可能吗

我试图为同一个uio_pci_通用驱动程序创建8个不同的子驱动程序,但我看不到中断,系统关闭

开发这个设备驱动程序的理想做法是什么?我仍然可以使用相同的UIO驱动程序吗?或者我需要使用PCI方法来注册设备等等

正如您所看到的,我没有开发这个更复杂代码所需的所有经验。我甚至不知道我问的问题是否正确


谢谢

这不是对您问题的回答,但请告诉您的硬件人员,MSI中断只是一个32位写操作,带有软件提供的特殊地址和数据。(硬件甚至不必担心加法和数据是否正确;这完全是软件的问题。)MSI中断实际上比INTx更简单,因为硬件不必发送解除断言消息并跟踪中断是否被断言。是的。我明白你的意思。但是他们没有人力资源在这个项目的迭代中改变这一点。现在正在尝试这一点,完成后,可能会与MSI走另一条路。谢谢你的回复。你所说的关于断言和判决的话是让我头脑发热的原因之一。主要是因为我是新来的,在尝试了解linux内核中的代码时,我必须处理这些事情。如果我正确理解您的设置,中断在硬件级别是无法区分的。对吗?那么他们就不能在软件层面上。在这种情况下,通常要做的是在中断源中设置一个寄存器(任何操作都可以),并阻止/延迟所有中断,直到软件写入该寄存器。FPGA将有8+个中断源。它们将连接到一个或门。据我所知,只有FPGA之间的连接是单一连接。所有中断都是一样的。我猜每当CPU检测到中断时,它都必须分析FPGA内存中的某种寄存器,以验证它是哪个中断源,然后使用设备驱动程序中相应的read()。