首页 > TAG信息列表 > urb

usb设备识别流程

 USB模块包括usb core,host,hub,device驱动,其中hub会启动一个内核线程名曰:khubd(hub_events一直在查询(hub使用的是中断传输), 当usb 设备连接在 hub 的某个端口上,hub检测到有设备连接了进来,hub会去调用hub_port_status函数去获取hub端口状态,要是真有设备了,会调用hub_port_connect_cha

Linux usb子系统(二) _usb-skeleton.c精析

"./drivers/usb/usb-skeleton.c"是内核提供给usb设备驱动开发者的海量存储usb设备的模板程序, 程序不长, 通用性却很强,十分经典, 深入理解这个文件可以帮助我们更好的理解usb子系统以及usb设备驱动框架, 写出更好的usb海量存储设备驱动。匹配前既然是一个usb设备驱动的模板,那么就少不

Linux 驱动架构简析

1) 首先,需要熟悉操作系统的设计与实现,推荐大家看 MINIX作者的那部书,同时把MINIX的kernel代码研读一下。 不然,你不知道操作系统都有哪些模块, 不知道操作系统要做些什么事情,提供什么功能。简单地说,操作系统首先要驱动 CPU,然后提供那几大管理(进程,内存,文件),实现一两百个系统呼叫,提

Linux 驱动架构简析

1) 首先,需要熟悉操作系统的设计与实现,推荐大家看 MINIX作者的那部书,同时把MINIX的kernel代码研读一下。 不然,你不知道操作系统都有哪些模块, 不知道操作系统要做些什么事情,提供什么功能。简单地说,操作系统首先要驱动 CPU,然后提供那几大管理(进程,内存,文件),实现一两百个系统呼叫,提

Linux _USB 驱动

需要的宏如下: struct usb_device_id usbmouse_id_table[] = USB_INTERFACE_INFO(cl, sc, pr); USB_INTERFACE_INFO()设置usb_driver 驱动的id_table成员 cl:接口类:由于我们USB鼠标为HID类 所以填入0x03 也就是USB_INTERFACE_CLASS_HID sc: 接口自雷为启动设备 填入USB_INTERFACE_SU

Linux USB驱动层次分析

1、USB驱动层次简介 Linux内核中USB驱动程序分为两类:USB主机控制器驱动程序(Host Controller Driver)、USB设备驱动程序(USB device drivers),它们在内核中的USB驱动的层次关系,如下图所示: 由上图可以看出,内核中的USB驱动层次可以分为三层。USB主机控制器驱动位于USB驱动层次最底层,直

static关键词用法

static void usbmouse_as_key_irq(struct urb *urb) { int i; static int cnt = 0;// 此处使用 static 可以不用定义全局变量,蠢逼老用 printk("data cnt %d: ", ++cnt); for (i = 0; i < len; i++) { printk("%02x ", usb_buf[i]); } printk("\n"

《驱动学习 - USB鼠标驱动》

参考/drivers/hid/usbhid/usbmouse.c(内核自带的USB鼠标驱动) 1.本节需要用到的宏如下: struct usb_device_id usbmouse_id_table []=USB_INTERFACE_INFO(cl,sc,pr);   USB_INTERFACE_INFO()设置usb_driver驱动的id_table成员。 cl:接口类,我们USB鼠标为HID类,所以填入0X03,

USB驱动框架与驱动架构

1. USB协议 1.1 USB主机系统        在USB主机系统中,通过根集线器与外部USB从机设备相连的处理芯片,称为USB主机控制器。USB主机控制器包含硬件、软件和固件一部分。 1.2 USB设备系统         USB设备按功能分为两部分:集线器(Hub)和功能部件。从下图可知,主机通过根

Linux 内核提交和控制一个 urb

当驱动有数据发送到 USB 设备(如同在驱动的 write 函数中发生的), 一个 urb 必须被 分配来传送数据到设备.   urb = usb_alloc_urb(0, GFP_KERNEL); if (!urb) { retval = -ENOMEM; goto error; }   在 urb 被成功分配后, 一个 DMA 缓冲也应当被创建来发送数据到设备以最有效的

Linux 内核提交和控制一个 urb

当驱动有数据发送到 USB 设备(如同在驱动的 write 函数中发生的), 一个 urb 必须被 分配来传送数据到设备.   urb = usb_alloc_urb(0, GFP_KERNEL); if (!urb) { retval = -ENOMEM; goto error; }   在 urb 被成功分配后, 一个 DMA 缓冲也应当被创建来发送数据到设备以最有效的

UVC 摄像头驱动(三)配置摄像头,实时数据采集

前面分析了 UVC 摄像头的硬件模型和描述符,对于一个 usb 摄像头来说,内部大概分为一个 VC 接口和一个 VS 接口,VC 接口内部有许多 unit 和 terminal 用来“控制”摄像头,比如我们可以通过 Process unit 设置白平衡、曝光等等。对于 VS 接口来说,标准 VS 接口往往含有许多个设置,每一

linux usb 总线驱动(二)

原文:https://blog.csdn.net/weiqing1981127/article/details/8215708  2.USB鼠标驱动 usbmouse.c 下面我们分析下USB鼠标驱动,鼠标输入HID类型,其数据传输采用中断URB,鼠标端点类型为IN。好了,我们先看看这个驱动的模块加载部分。 static int __init usb_mouse_init(void) {   

(十) 编写UVC程序

目录 编写UVC程序 流程简述 11个ioctl函数 查询属性 VIDIOC_QUERYCAP 枚举格式 VIDIOC_ENUM_FMT 查询当前格式 VIDIOC_G_FMT 尝试某种格式 VIDIOC_TRY_FMT 设置某种格式 VIDIOC_S_FMT (未传递USB) 队列请求 VIDIOC_REQBUFS 队列查询 VIDIOC_QUERYBUF 缓冲放入队列 VIDIOC_QBUF

Android 基于USB_BUIK 触摸驱动

1、概述          Android 和PC系统本身是支持 usb hid输入设备的。不过由于业务的发展,需要采用高精度触摸框。重新设计框架,改变原来   串口+usb_hid的方式。采用俩路usb,一路usb_buik+一路usb_hid方式。具体架构如下图:        2、触摸驱动      该驱动是基于An