一、USB设备发现
PC的USB口内部,D-和D+接有15K的下拉电阻,未接USB设备时为低电平,USB设备的USB口内部,D-或D+接有1.5K的上拉电阻;它一接入PC,就会把PC USB口的D-或D+拉高,从硬件的角度(电平由低变高)通知PC有新设备接入。下面的全速设备和低速设备区别在于上拉电阻接在D+还是D-端。在usb device端,这时就有高速低速设备的区别了,高速设备:d+ 接一个1.5kohm的上拉电阻,d-不接;低速设备则相反。
二、USB层次简介
USB采用树形拓扑结构,主机侧和设备侧的USB控制器分别称为主机控制器和USB设备控制器,每条总线上只有一个主机控制器,负责协调主机和设备之间的通信。而设备不能主动向主机发送任何消息。所以,我们在分析USB驱动框架时,不妨从两个角去看,一是主机侧;一是设备侧。
从主机测看:
处于最底层的是USB主机控制器,其上为USB主机控制器驱动,然后是USB和核心层,处理USB核心事务,最上面为USB设备驱动,如:插入主机的U盘,鼠标,键盘等USB设备。要实现的USB驱动包含两类:USB主机控制器驱动和USB设备驱动。Linux内核中的USB核心负责驱动控制器和设备驱动的以及USB协议的管理。
从设备侧看:
USB驱动包含:USB设备控制器、UDC驱动、Gadget Function API 、Gadget Function 驱动。USB驱动直接访问底层一硬件。
三、USB设备逻辑单元
如图所示,