Linux kernel 使用modprobe时,设备未显示在/dev下

Linux kernel 使用modprobe时,设备未显示在/dev下,linux-kernel,linux-device-driver,Linux Kernel,Linux Device Driver,我使用PEAK SYSTEMS为Linux v8开发的PCAN驱动程序 编译成功后,尝试加载名为pcan的Linux内核模块(LKM) sudo modprobe pcan lspcan -T -t -a 设备未显示在/dev 注意:我没有连接电脑中的实际设备或硬件 这是预期行为吗?或者不管实际的设备连接如何,这些都应该显示出来?什么是预期行为 我问这个问题的原因是,当我用自己的LKM执行insmod时,我得到了/dev下的设备 这是预期行为吗?或者不管实际的设备连接如何,这些都应该显示出来?

我使用PEAK SYSTEMS为Linux v8开发的PCAN驱动程序

编译成功后,尝试加载名为
pcan的Linux内核模块(LKM)

sudo modprobe pcan
lspcan -T -t -a
设备未显示在
/dev

注意:我没有连接电脑中的实际设备或硬件

这是预期行为吗?或者不管实际的设备连接如何,这些都应该显示出来?什么是预期行为

我问这个问题的原因是,当我用自己的LKM执行
insmod
时,我得到了
/dev
下的设备

这是预期行为吗?或者不管实际的设备连接如何,这些都应该显示出来?什么是预期行为

通常,驱动程序应该只为它实际处理的设备创建
/dev
条目


由于您没有硬件,驱动程序没有创建任何内容是正常的。

PCAN驱动程序可能没有自己在/dev中创建条目,您需要手动创建。并不是每个驱动程序都自动创建这些文件。如果有您期望的设备,请尝试查看/proc/devices文件。如果是-尝试使用mknod在/dev中创建适当的设备节点


编辑:如果您的电脑中没有连接的设备-驱动程序如何识别它并在/dev中创建适当的文件?

这取决于驱动程序及其功能。在您的情况下,原始驱动程序似乎没有做任何事情,因为没有硬件,但您的自定义驱动程序忽略了硬件缺失。@user2699113,@Acorn谢谢您的评论。。我的目的是将虚拟设备置于
/dev
之下,而不考虑设备连接。我的USB结构探测成员回调函数注册代码中有这个<代码>pcan_drv.usbdrv.probe=callBackFunction是否有机会调用此函数?@Acorn感谢您的评论。。我的目的是将虚拟设备置于
/dev
之下,而不考虑设备连接。我的USB结构探测成员回调函数注册代码中有这个<代码>pcan_drv.usbdrv.probe=callBackFunction是否有机会调用此函数?