本文共 2699 字,大约阅读时间需要 8 分钟。
1.将USB设备接入电脑上,右下角弹出“发现android phone”
2.跳出对话框。提示你安装驱动程序答1:windows里已经有了USB的“总线驱动程序”,接入USB设备后,是“总线驱动程序”知道你是“android phone”,提示按安装“设备驱动程序”
USB总线驱动程序:识别USB设备,给USB设备找到对应的驱动程序答2:PC和USB设备都遵循一些规范。
比如:USB设备接入电脑后,PC会发出“你是什么”? USB设备就必须回答“我是XXX”,并且回答的格式一样,如语言必须是中文(拟人化) USB总线驱动程序会发出某些命令想获取设备信息(描述符), USB设备必须返回“描述符”给PCUSB接口只有4条线:5V,GND,D+,D-
答3.接在USB总线上的每一个USB设备都有自己的编号(地址) 每一个USB设备接入PC时,USB总线驱动程序都会给它分配一个编号 PC机想访问某个USB设备时,发出的命令都含有对应的编号(地址)答4.新接入的USB设备的默认编号为0,在未分配新编号前,PC使用0编号和它通信。
答5.
PC的USB口内部,D-和D+接有15K的下拉电阻,未接USB设备时为低电平 USB设备的USB口内部,D-和D+接有1.5K的下啦电阻:它一接入PC,就会把PC的USB口的D-或D+拉高,从硬件角度通知PC有新设备接入。所有的USB传输,都是从USB主机这方发起:USB设备没有“主动”通知USB主机的能力
例子:USB鼠标滑动一下立刻产生数据,但是它没有能力通知PC机来读数据,只能被动地等待PC机来读。a.控制传输:可靠、时间有保证,比如:USB设备的识别过程
b.批量传输:可靠、时间没有保证,比如:U盘 c.中断传输:可靠、实时,比如USB鼠标 d.实时传输:不可靠,实时,比如:USB摄像头我们说“读U盘”、“写U盘”、可以细化为:把数据写到U盘的端点1,从U盘的端点2里读出数据
除端点0外,每一个端点只支持一个方向的数据传输 端点0用于控制传输,既能输出也能输入比如鼠标的数据是从鼠标传到PC机,对应的端点称为“输入端点”
1.识别USB设备
2.查找并安装对应设备驱动程序 3.提供USB读写函数/不了解数据含义 USB驱动程序框架app:--------------------------------------------------------------------------------USB设备驱动程序//知道数据含义--------------------------------------------------------------------------------USB总线设备驱动程序 //1识别.2.找到匹配的设备驱动,3.提供USB读写函数--------------------------------------------------------------------------------USB主机控制器UHCI OHCI EHCI --------------------------------------------------------------------------------
硬件 USB设备
UHCI:intel,低速/全速USB设备 OHCI:micrsoft 低速/全速 EHCI :全速1.1分配地址,
1.2并告诉USB设备地址(set address) 1.3发出命令获取描述符usb_device_descriptor 描述符的信息可以在\include\linux\usb\Ch9.h看到将USB插入开发板
usb 1-3.3: new high speed USB device number 6 using s5p-ehci [17009.531552] usb 1-3.3: New USB device found, idVendor=04e8, idProduct=6860, bcdDevice=0400 [17009.538377] usb 1-3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [17009.545701] usb 1-3.3: New USB device Class: Class=0, SubClass=0, Protocol=0 [17009.552682] usb 1-3.3: Product: SAMSUNG_Android [17009.557190] usb 1-3.3: Manufacturer: SAMSUNG [17009.561443] usb 1-3.3: SerialNumber: 357c9909 拔掉: usb 1-3.3: USB disconnect, device number 6 在内核目录下搜: grep “USB device using”* -nR kernel/driver/usb/core/hub.c:2897:”%s %s speed %sUSB device number %d using %s\n” kernel/driver/usb/core/hub.c:3011: “%s SuperSpeed USB device number %d using%s\n”, kernel/driver/usb/core/hub.c USB总线调用关系 当USB设备插入主机后,由于硬件电路使主机感知到设备接入,主机产生一个中断