USB识别错误或不识别调试错误
在对一些usb,u盘进行调试,适配时,可能会出现usb无法识别,或者usb识别错误的问题。
USB协议介绍
USB是通用串行总线(Universal Serial Bus)的缩写。在USB总线出现之前,计算机与键盘、鼠标、扫描仪、打印机都使用专用的接口连接,不同设备的接口不能互用,扩展性很差,每次插拔设备都要关闭计算机,不支持热插拔,且通信速率很低。为了解决上述问题,USB总线诞生了。USB总线就好像一条管道,管道里流过的东西只要符合USB协议,至于具体流的是什么东西,USB总线并不关心,可以是自来水,可以是污水,可以是天然气,也可以是石油。对应具体的设备上,只要是支持USB协议的设备,都可以连接计算机,如USB键盘、USB鼠标、USB摄像头、USB音箱等。USB的出现简化了计算机与外围设备的连接,增强了扩展性,支持热插拔,且通信速度很快。
关于USB的硬件和软件协议见百科
usb-device-tree-viewer
实例
flowchart BT;
HUB1-->id1{CPU};
id1{CPU}-->|GPIO控制切换|HUB2_SWITCH;
HUB2_SWITCH-->id1{CPU};
host_usb1-->HUB1;
host_usb2-->HUB1;
u盘1-3.0-->HUB2;
u盘2-->HUB2;
u盘3-->HUB2;
HUB2-->HUB2_SWITCH;
HUB2_SWITCH-->HDMI1;
HUB2_SWITCH-->OPS;
HUB2_SWITCH-->TYPE-C;
假设某设备的拓扑图如上所示
1.USB协议识别错误
在一般情况下,若u盘1被识别成2.0,可以检查u盘1链路上的上电顺序,靠近HOST端先下电–>HUB–>切换switch。上电应先将switch切换–>HUB–>HOST,这样可以解决一些usb兼容性问题。
2.U盘不识别
U盘不识别绝大部分是U盘格式的问题,检查U盘格式是否正确,分区表是否正常,是否有不正常的分区。
在安卓平台可以抓取log分析
1 | logcat | gerp vold |