Linux kernel 如何使用我的网卡使用UIO驱动程序

Linux kernel 如何使用我的网卡使用UIO驱动程序,linux-kernel,network-programming,linux-device-driver,mmap,Linux Kernel,Network Programming,Linux Device Driver,Mmap,我试图学习用户模式驱动程序,以接收我的网卡中断 I insmod两个内核组件${KSRC}/drivers/uio/uio.ko和${KSRC}/drivers/uio/uio_pci_generic.ko. 但是我没有看到任何设备被创建,我可以mmap 通常对于UIO,我需要类似于“/dev/uio0”的东西,然后可以打开mmap() 那么,如何使用UIO框架呢 编辑: 我的网卡是Marvell以太网控制器。我的硬件是x86 Ubuntu。Linux内核3.13.11.11。因此没有基于设备树

我试图学习用户模式驱动程序,以接收我的网卡中断

I insmod两个内核组件
${KSRC}/drivers/uio/uio.ko和${KSRC}/drivers/uio/uio_pci_generic.ko.

但是我没有看到任何设备被创建,我可以
mmap

通常对于UIO,我需要类似于
“/dev/uio0”
的东西,然后可以打开
mmap()

那么,如何使用UIO框架呢

编辑:
我的网卡是Marvell以太网控制器。我的硬件是x86 Ubuntu。Linux内核3.13.11.11。因此没有基于设备树的功能。

首先,必须将驱动程序编译到内核中。使用菜单配置或将以下行添加到.cfg文件中。通过查看
/lib/modules//modules.builtin
,可以检查驱动程序是否已编译

CONFIG_UIO=y
CONFIG_UIO_PDRV_GENIRQ=y
下一步是将以下条目添加到设备树中。您可以通过查看
/lib/modules//modules.builtin
.file来检查驱动程序是否已编译。其中中间的数字是您的目标中断-32。这意味着0x1D==29,然后为GIC(ARM系统上的通用中断控制器)中注册的中断编号添加32

spw0@7aa00000 {
compatible=“generic uio”;
reg=;
中断=;
中断父项=;
时钟=;
};
并将引导参数更改为
console=ttyps0115200 root=/dev/mmcblk0p1 rw rootwait earlyprintk uio\u pdrv\u genirq.of\u id=generic uio


如果一切顺利,您将在启动后看到
/dev/uio0
设备。

首先,必须将驱动程序编译到内核中。使用菜单配置或将以下行添加到.cfg文件中。通过查看
/lib/modules//modules.builtin
,可以检查驱动程序是否已编译

CONFIG_UIO=y
CONFIG_UIO_PDRV_GENIRQ=y
下一步是将以下条目添加到设备树中。您可以通过查看
/lib/modules//modules.builtin
.file来检查驱动程序是否已编译。其中中间的数字是您的目标中断-32。这意味着0x1D==29,然后为GIC(ARM系统上的通用中断控制器)中注册的中断编号添加32

spw0@7aa00000 {
compatible=“generic uio”;
reg=;
中断=;
中断父项=;
时钟=;
};
并将引导参数更改为
console=ttyps0115200 root=/dev/mmcblk0p1 rw rootwait earlyprintk uio\u pdrv\u genirq.of\u id=generic uio


如果一切顺利,您将在启动后看到
/dev/uio0
设备。

您使用的是什么硬件?例如,对于ARM设备,您需要在设备树中添加一个节点来表示硬件。x86不基于设备树。可能需要显式执行mknod,如本页所述。如果您能够解决此问题,请自己回答此问题。您使用的是什么硬件?例如,对于ARM设备,您需要在设备树中添加一个节点来表示硬件。x86不基于设备树。可能需要显式执行mknod,如本页所述。如果您能够解决此问题,请自己回答此问题。