1、 usb-serial核心层(tty驱动层实现)分析 2、 usb转串口驱动分析(pl2303为例)
Linux是一种自由和开放源代码的操作系统,而ioctl是Linux中用来控制设备I/O的系统调用。在Linux系统中,设备包括了硬件设备(如磁盘驱动器、USB设备等)和虚拟设备(如伪终端等)。ioctl系统调用能够通过命令来控制这些设备的操作。 USB(Universal Serial Bus)是一种用于计算机和外部设备之间传输数据的通信接口。在Linux系统...
usb_serial_tty_driver->init_termios.c_ispeed = 9600; usb_serial_tty_driver->init_termios.c_ospeed = 9600; tty_set_operations(usb_serial_tty_driver, &serial_ops); result = tty_register_driver(usb_serial_tty_driver); if (result) { printk(KERN_ERR"usb-serial: %s - tty_register_drive...
也许你觉得我们的串口驱动可以直接通过tty核心提供的功能就可以实现了。 这个确实是可以,但是linux内核因为要兼容世界上存在的各种串口设备,所以针对串口额外实现了一个serial核心层,针对usb转串口额外实现了usb-serial核心层,它们就是所谓的tty驱动层。我们的串口或者usb转串口实现就是与tty驱动层打交道,当然串口芯片或者...
Linux内核的USB Gadget Function驱动都在drivers/usb/gadget/function/目录下,有通讯设备类(Communication Device Class)驱动(f_acm.c、f_ecm、f_serial.c等)、USB音频设备类驱动(f_uac1.c、f_uac2.c、u_audio.c)、大容量存储设备驱动(f_mass_storage.c)、USB视频设备类驱动(f_uvc.c)等。 Gadget Function...
USB,是英文Universal Serial Bus(通用串行总线)、支持设备的即插即用和热插拔功能。在1994年底由英特尔、IBM、Microsoft等公司联合提出的,在此之前PC的接口杂乱,扩展能力差,热拔插不支持等。USB正是为了解决速度,扩展能力,易用性等而出现。 USB各版本速率对比 ...
二,USB子系统 2.1 USB驱动基础概念 2.1.1 USB版本 2.1.2 USB主从结构 2.1.3 USB的传输类型 2.1.4 USB设备描述符 2.1.4.1 设备描述符 2.1.4.2 配置描述符 2.1.4.3 接口描述符 2.1.4.4 端点描述符 2.1.4.5 字符串描述符 2.1.4.6 人机接口描述符 2.1.4.6 USB描述符的类型值 2.1.5 USB的数据传输对象 2.2...
嵌入式Linux下的USB设备驱动技术 Linux以其稳定、高效、易定制、硬件支持广泛、源代码开放等特点,已在嵌入式领域迅速崛起,被国际上许多大型的跨国企业用作嵌入式产品的系统平台。 USB是Universal Serial Bus (通用串行总线)的缩写,是1995年由Microsoft、Compaq、IBM等公司联合制定的一种新的PC串行通信协议。它是一种快...
void usb_serial_deregister(struct usb_serial_device_type *device);//向核心注销USB转串口设备。 3.USB设备驱动程序 USB设备驱动的实现,首先需要定义一个usb_driver结构变量作为要注册到USB核心的设备驱动,在USB转串口中该结构的定义如下: 定义了USB设备驱动的probe()函数,该函数由usb_serial_probe()函数实现。
probe用来看看这个USB驱动是否愿意接受某个接口的函数。Disconnect函数将在接口失去联系或使用rmmod卸载驱动将它和接口强行分开时被调用。Ioctl函数则用在驱动通过usbfs和用户空间进行交流时使用。Suspend、esume分别在设备被挂起和唤醒时使用。pre_reset、post_reset分别在设备将要复位(reset)和已经复位后使用。id_table的...