USB设备驱动程序1】的更多相关文章

现象:把USB设备接到PC1. 右下角弹出"发现android phone"2. 跳出一个对话框,提示你安装驱动程序 问1. 既然还没有"驱动程序",为何能知道是"android phone"答1. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone"     提示你安装的是"设备驱动程序"          USB总线…
USB驱动编程原理: 当我们把USB设备插入USB口时会提示需要安装相对应的驱动,如USB鼠标.USB键盘等,这些电脑自己自身已经自带有相对于的驱动程序, 当电脑检查到该USB设备类型相同就去帮你安装相对于驱动,但有些由于系统没有自带有相对于的USB驱动程序,需要联网或者厂家资料自带有 就需要手动安装驱动,如USB转串口驱动,搞开发搭建前期时需要安装一大推驱动程序开可以进行开发. USB驱动开发依据主从关系的:也就是把USB口这一端作为主设备,也即开发板,USB设备作为从设备,主设备上具备有一个…
linux-3.4.2\driver\hid\usbhid\usbmouse.c 内核只带USB驱动程序 (hub和usb是两个不同的设备,hub在内核上电的过程中在usb_hub_init函数中调用usb_register来注册,usb驱动才是我们自己写的驱动,也是用usb_register来注册,内核只带驱动程序是通过宏module_usb_driver来注册的,作用和usb_register一样) 现象:把USB设备接到PC 1. 右下角弹出"发现android phone"2.…
目的:USB鼠标用作按键,左键相当于字母L,右键相当于字母S,中键相当于Enter.如何来实现?用到输入子系统:1)分配input_dev2)设置3)注册4)硬件相关操作对于USB鼠标来说,硬件操作应该怎么做呢?使用USB总线驱动程序提供的读写函数来收发数据,主要针对于硬件相关的这一部分.怎么写USB设备驱动程序?1)分配/设置usb_drv结构体 .id_table .probe .disconnect2)注册首先来看一个例子:usbmouse.c 1.史上最简单的USB设备驱动程序 /* *…
本文简单介绍一下USB设备的驱动程序是如何匹配设备以及被加载的: 上文(UDK中USB总线驱动的实现框架)提到USB总线枚举设备的最后一步是调用gBS->ConnectController()去查找device的驱动并加载. 1.查找驱动: 首先UEFI中所有符合UEFI Driver Model的驱动在模块的入口点,都会去安装EFI_DRIVER_BINDING_PROTOCOL:gBS->ConnectController()会去遍历系统中所有的EFI_DRIVER_BINDING_PRO…
1.驱动编写分析 (1)usb总线驱动程序在我们接入USB设备的时候会帮我们构造一个新的usb_device.注册到总线里面来.左边这一块已经帮我们做好了,我们要做的是右边这一块.我们要构造一个usb_driver结构体,然后注册进去.usb_driver结构体里面的id_table表示能够支持哪一些设备,里面的probe函数表示能够支持接入设备时会被调用. (2)目的 USB鼠标用作键盘.左键按下时相当于字母L,右键按下时相当于字母S,鼠标中间的滑轮相当于回车. (3)输入子系统 在probe…
1.usbmouse.c (1)probe函数 在这个probe函数后判断是不是一个鼠标,先得到usb_host_interface结构体,除了端点0外,端点个数如果不是1,返回错误,表示不是自己能支持的设备.如果只有一个端点,放在endpoint这个数组里面.endpoint[0]是表示除了端点0外的第一个端点.得到它的端点描述符. 如果不是输入(中断)类型端点,输入输出是站在主机角度说的,鼠标是输入设备(数据输入给主机).返回错误.可以查看端点描述符里面的属性知道 ,这个属性表明其类型和方向…
首先我们来看USB设备描述符的结构: 在USB总线识别设备阶段就将USB描述符发送给了USB总线驱动程序,设备的数据传输对象是端点,端点0是特殊端点,在USB总线驱动程序识别阶段, 会分配一个地址给USB设备,然后发送命令来获取USB描述符,来获取给USB设备信息,如厂家ID等: -------------------------------------------------------------------------------------------------------------…
一.usbmouse_as_key.c /* * drivers\hid\usbhid\usbmouse.c */ #include <linux/kernel.h>#include <linux/slab.h>#include <linux/module.h>#include <linux/init.h>#include <linux/usb/input.h>#include <linux/hid.h> static struct…
韦老师写的,供参考 /*  * drivers\hid\usbhid\usbmouse.c  */ #include <linux/kernel.h> #include <linux/slab.h> #include <linux/module.h> #include <linux/init.h> #include <linux/usb/input.h> #include <linux/hid.h> static struct inp…