调试记录-USB异常断开调试

问题描述

平台:rk3228 android7.1
问题:板子上有一个USB 4G模块,模块不是用标准的USB接口,而是M2接口。接着4G模组开机是可以正常工作的,但是只要点开任意一个app,就会出现设备断开,之后再重新连接。
相关的log如下:

[  385.418741] usb 1-1: new high-speed USB device number 18 using ehci-platform
[  385.571469] usb 1-1: New USB device found, idVendor=2ecc, idProduct=3001
[  385.571543] usb 1-1: New USB device strings: Mfr=3, Product=2, SerialNumber=0
[  385.571578] usb 1-1: Product: WUKONG
[  385.571603] usb 1-1: Manufacturer: MARVELL
[  386.065871] usb 1-1: USB disconnect, device number 18
[  393.369346] usb 1-1: new high-speed USB device number 19 using ehci-platform
[  393.518644] usb 1-1: New USB device found, idVendor=2c7c, idProduct=6005
[  393.518721] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  393.518764] usb 1-1: Product: Android
[  393.518801] usb 1-1: Manufacturer: Android
[  393.518835] usb 1-1: SerialNumber: 0000
[  393.531364] rndis_host 1-1:1.0 usb0: register 'rndis_host' at usb-30080000.ehci0-1, RNDIS device, 02:0c:29:a3:9b:6d
[  393.538138] option 1-1:1.2: GSM modem (1-port) converter detected
[  393.541797] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[  393.543830] option 1-1:1.3: GSM modem (1-port) converter detected
[  393.546451] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[  442.186492] usb 1-1: USB disconnect, device number 19

log与正常的拔出完全一样,未见异常报错。

分析过程

从问题描述看,最关键的应该是“只要点开任意一个app,就会出现设备断开”,什么情况下会出现这种问题呢?

  1. USB供电,点开一个app,CPU的负载可能增大,这时候会提高CPU频率,如果供电不足,可能会导致USB供电不稳定,因此会导致USB供电。要确认供电,一般会把USB相关的供电都确认一遍,USB相关的供电包括:设备的VBUS和USB-PHY的供电,USB-PHY的供电一般在原理图可以看到,如下图的USB_AVDD_3V3,USB_DVDD_1V0:
    调试记录-USB异常断开调试_第1张图片
    然而经过示波器测量,在开启app的过程中,USB相关的供电都很稳定,未发现异常。
  2. 为了确保CPU,DDR变频的影响,把CPU,DDR定频再测试,发现还是不能解决问题。
  3. 根据经验,有时候LPM也会导致USB设备异常断开,把LPM功能关闭,却发现该SDK本来就没有用到LPM。
  4. 休眠可能会导致USB异常,为了排除影响,把sutosuspend和USB-PHY休眠都关了,问题还是未能解决。
  5. 没招了,只能重新查电路,发现M2的接口里面不止有USB数据线,还有4G模块的reset脚,查了一下dts配置,竟然把reset脚配置到codec模块下的spk_ctl_io,这下找到问题了,把该引脚配置改为硬件对应的引脚即可。

问题解释

由于把4G模块的reset脚配置到codec模块的spk_ctl_io,一般android系统会有提示音,点开app的时候会打开音频,因此会操作reset脚,这时候就会误操作到4G模块的reset脚,导致4G模块断开了。

你可能感兴趣的:(ROCKCHIP,USB,调试记录,嵌入式硬件)