我有一个带有usb接口的汽车诊断设备ELM327,但是Mint不能识别它。以下是来自终端的设备列表:
~ $ lsusb
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 09da:000e A4 Tech Co., Ltd
我正在阅读Robert编写的,目前正在阅读Linux中的中断处理。它提到,驱动程序可以使用下面的函数注册来处理硬件设备,其中最后的参数dev是唯一的w.r.t到设备。这是否意味着我们不能让两个设备驱动程序服务于同一个硬件设备?如果我想实现与现有驱动程序一起工作的键盘驱动程序,难道不可能吗?我是否需要注销现有的键盘驱动程序并注册我编写的驱动程序?
int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)
在2017“UNIX和Linux系统管理”一书中,我阅读了以下文章:
现代系统自动管理他们的设备文件。然而,一些罕见的角落情况可能仍然需要您使用mknod命令手动创建设备。以下是如何做到这一点:
mknod filename type major minor
在这里,文件名是要创建的设备文件,字符设备的类型是c,块设备的是b,主和次要的设备编号。如果您正在创建一个引用内核中已经存在的驱动程序的设备文件,将检查驱动程序的文档,以找到适当的主设备号和次要设备号。
我在哪里可以找到这个文档,以及如何找到设备驱动程序的大副命令?
目前,我正在学习Linux设备驱动程序,我觉得自己对设备如何在Linux中实例化产生了根本性的误解。
在Linux模块中,我可以调用alloc_chrdev_region()向内核注册设备。具体来说,这个函数是
int alloc_chrdev_region(dev_t *dev, unsigned int firstminor,
unsigned int count, char *name);
它生成设备编号(主要/次要)并接受设备名称。
成功执行后,将在/proc/devices中创建一个主要编号和设备类型名称的条目。但是,/dev中没有生成任何设备文件。相反,我必须发出一个mknod调