目前,我正在学习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调
我有一个带有嵌入式系统的板,它是基于buildroot的。在"make linux-menuconfig“中,我想为USB-RS232适配器"Moxa UPORT 1110”添加适当的驱动程序。我在"make linux-menuconfig“中做了标记: Device Drivers-> USB support -> USB Serial Converter support-> USB MoxaUPORT Serial Driver 将适配器与设备连接后,linux将无法识别该设备。 当我检查"lsusb“时,我得到: lsusb
Bus
在2017“UNIX和Linux系统管理”一书中,我阅读了以下文章:
现代系统自动管理他们的设备文件。然而,一些罕见的角落情况可能仍然需要您使用mknod命令手动创建设备。以下是如何做到这一点:
mknod filename type major minor
在这里,文件名是要创建的设备文件,字符设备的类型是c,块设备的是b,主和次要的设备编号。如果您正在创建一个引用内核中已经存在的驱动程序的设备文件,将检查驱动程序的文档,以找到适当的主设备号和次要设备号。
我在哪里可以找到这个文档,以及如何找到设备驱动程序的大副命令?
我正在尝试编译用于USB转串行设备的Linux驱动程序,但遇到错误
/root/moxa_usb_to_serial/mxu11x0/driver/mxu11x0.c:307: error: ‘usb_serial_probe’ undeclared here (not in a function)
/root/moxa_usb_to_serial/mxu11x0/driver/mxu11x0.c:308: error: ‘usb_serial_disconnect’ undeclared here (not in a function)
我有linux
Linux host 3.10.
根据"Linux设备驱动程序“一书,我试图编写一个简单的设备驱动程序,但是无法设置正确的包含路径。我正在使用一个简单的make脚本。该操作系统是Ubuntu14.04LTS,内核为3.13.0-29-通用的在一个旧的英特尔(奔腾D (EMT/64位)的PC机上)。我试过:
I/usr/src/include
-> Error can't find module.h (there should be links but wasn't there)
I/usr/src/linux-headers-3.13.0-29-generic/include and copi
我有一个带有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