This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/AM3352:USB RNDIS 连接有时不起作用

Guru**** 2013480 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/779711/linux-am3352-usb-rndis-connection-doesn-t-work-at-times

器件型号:AM3352

工具/软件:Linux

您好!

由于超时、较早的线程已锁定、因此在此处创建新线程。 。 下面是我们面临的两个问题:

a)连接 USB 闪存驱动器时、我们会看到以下 dmesg 日志、并且未检测到 USB 闪存驱动器:

user.err 内核:[25222.819452] USB 1-1:器件描述符读取/64、错误-71

3月 5日23:29:54 BeagleBone user.info 内核:[25223.079452] USB 1-1:使用 musb-hdrc 重置高速 USB 器件编号55

3月 5日23:29:55 BeagleBone user.err 内核:[25223.519758] USB 1-1:器件不接受地址55、错误-71

3月 5日23:29:55 BeagleBone user.info 内核:[25223.659489] USB 1-1:使用 musb-hdrc 重置高速 USB 器件编号55

3月 5日23:29:55 BeagleBone user.err 内核:[25224.099591] USB 1-1:器件不接受地址55、错误-71

3月 5日23:29:55 BeagleBone user.info 内核:[25224.100124] USB 1-1:USB 断开连接、器件编号55

3月 5日23:29:55 BeagleBone user.info 内核:[25224.439405] USB 1-1:使用 musb-hdrc 的新型高速 USB 器件编号56

3月 5 23:29:56 BeagleBone user.err 内核:[25224.579635] USB 1-1:器件描述符读取/64、错误-71

3月 5 23:29:56 BeagleBone user.err 内核:[25224.839588] USB 1-1:器件描述符读取/64、错误-71

3月 5日23:29:56 BeagleBone user.info 内核:[25225.099601] USB 1-1:使用 musb-hdrc 的新高速 USB 器件编号57

3月 5 23:29:56 BeagleBone user.err 内核:[25225.239588] USB 1-1:器件描述符读取/64、错误-71

3月 5 23:29:56 BeagleBone user.err 内核:[25225.499470] USB 1-1:器件描述符读取/64、错误-71

3月 5日23:29:57 BeagleBone user.info 内核:[25225.759581] USB 1-1:使用 musb-hdrc 的新型高速 USB 器件编号58

3月 5日23:29:57 BeagleBone user.err 内核:[25226.199598] USB 1-1:器件不接受地址58、错误-71

3月 5日23:29:57 BeagleBone user.info 内核:[25226.339621] USB 1-1:使用 musb-hdrc 的新型高速 USB 器件编号59

3月 5日23:29:58 BeagleBone user.err 内核:[25226.779588] USB 1-1:器件不接受地址59、错误-71

3月 5 23:29:58 BeagleBone user.err 内核:[25226.779816] USB USB1-port1:无法枚举 USB 设备

2) 2)当我们插入 USB OTG 电缆(将闪存驱动器连接到该电缆)并在不到2秒的时间内将 OTG 电缆替换为微型 USB 电缆时、将无法检测到微型 USB 电缆。

下面是连接和拔下 USB OTG 电缆后连接 USB 电缆时的转储:

root@BeagleBone:~# cat /sys/devices/platform/ocp/47400000.usb/47401400.usb/musb-hdrc.0/mode

b_idle

root@xxx:~# cat /sys/devices/platform/ocp/47400000.usb/47401400.usb/musb-hdrc.0/mode
A_WAIT_VRISE
root@xxx:~# cat /sys/devices/platform/ocp/47400000.usb/47401400.usb/musb-hdrc.0/mode
A_IDLE
root@xxx:~# cat /sys/devices/platform/ocp/47400000.usb/47401400.usb/musb-hdrc.0/mode
A_IDLE
root@xxx:~# cat /sys/devices/platform/ocp/47400000.usb/47401400.usb/musb-hdrc.0/mode
A_IDLE
root@xxx:~# cat /sys/devices/platform/ocp/47400000.usb/47401400.usb/musb-hdrc.0/mode
b_idle
root@xxx:~# cat /sys/devices/platform/ocp/47400000.usb/47401400.usb/musb-hdrc.0/mode
b_idle

root@xxx:~# grep DevCtl /sys/kernel/debug/musb-hdrc.0/regdump

DevCtl:99

此时未检测到 USB 电缆。 我们需要拔下并重新插入 USB 电缆、使其正常工作。 当我们执行此操作(即删除并重新插入)时、我们会看到以下日志

重新插入后:
root@xxx:~# grep DevCtl /sys/kernel/debug/musb-hdrc.0/regdump
DevCtl:99
root@xxx:~# grep DevCtl /sys/kernel/debug/musb-hdrc.0/regdump
DevCtl:91
root@xxx:~# grep DevCtl /sys/kernel/debug/musb-hdrc.0/regdump
DevCtl:89
root@xxx:~# grep DevCtl /sys/kernel/debug/musb-hdrc.0/regdump
DevCtl:81.
root@xxx:~# grep DevCtl /sys/kernel/debug/musb-hdrc.0/regdump
DevCtl:80
root@xxx:~# grep DevCtl /sys/kernel/debug/musb-hdrc.0/regdump
DevCtl:99
root@xxx:~# grep DevCtl /sys/kernel/debug/musb-hdrc.0/regdump
DevCtl:99
root@xxx:~# grep DevCtl /sys/kernel/debug/musb-hdrc.0/regdump
DevCtl:99
root@xxx:~# cat /sys/devices/platform/ocp/47400000.usb/47401400.usb/musb-hdrc.0/mode
B_外设

当 USB 闪存驱动器和 USB 电缆之间发生快速转换时、USB 状态机是否卡在上? 如果您需要更多日志、请告诉我。

此致、

法里亚

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亚里亚

    此测试中使用的内核是什么? 是否应用了修补程序?

    [引用用户="Fariya Fatima"]

    a)连接 USB 闪存驱动器时、我们会看到以下 dmesg 日志、并且未检测到 USB 闪存驱动器:

    user.err 内核:[25222.819452] USB 1-1:器件描述符读取/64、错误-71

    [/报价]

    这种情况是在多个 USB 闪存驱动器上发生的、还是在前一个 e2e 线程中提到的 SanDisk 有问题的驱动器上发生的?

    请尝试在 U-Boot bootargs 中添加以下参数、以查看问题是否仍然发生。

    " usbcore.autosuspend=-1'

    [引用 USER="Fariya Fatima]2)当我们插入 USB OTG 电缆(闪存驱动器连接到该电缆)并且在<=2秒内用微型 USB 电缆替换 OTG 电缆时、将无法检测到微型 USB 电缆。

    USB 驱动程序使用2秒计时器轮询 USB 状态、在2秒内交换电缆会导致意外行为。 如果在您的用例中2秒是工具时间、我们可以缩短它、例如1秒。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bin、

    此线程是早期线程的延续。 内核为4.9.31 +您提供的补丁已应用。 对于#1问题、我将尝试使用 autosuspend 选项、并告知您它是否解决了问题。

    对于#2、我认为2秒应该没问题。 我认为我们可以将其放置在已知位置、并告诉人们不要在2秒内更换电缆。

    此致、
    法里亚
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    箱、

    我们设置了 autosuspend=-1选项、但我们开始更频繁地面对 USB 闪存驱动器(其是正确的 FAT32格式闪存驱动器)检测问题。 下面是日志的一个片段:

    [3087.979685] USB 1-1:使用 musb-hdrc 重置高速 USB 器件编号7
    [3088.150242] SD 0:0:0:0:0:0:器件脱机-错误恢复后未就绪
    [3088.150433] SD 0:0:0:0:[SDA]标签#0未知(0x2003)结果:hostbyte=0x05 driverbyte=0x00
    [3088.150519] SD 0:0:0:0:[SDA]标签#0 CDB:操作码= 0x28 00 00 02 00 00 f0 00
    [3088.150589] blk_update_request:I/O error、dev sda、sector 512
    [3088.150699] SD 0:0:0:0:0:拒绝 I/O 到离线设备
    [3088.150751] SD 0:0:0:0:0:终止请求
    [3088.150789] SD 0:0:0:0:0:0:拒绝 I/O 到脱机设备
    [3088.150830] SD 0:0:0:0:0:[SDA]中止请求
    [3088.150941] SD 0:0:0:0:0:[SDA]未知(0x2003)结果:hostbyte=0x01 driverbyte=0x00
    [3088.151005] SD 0:0:0:0:[SDA] CDB:操作码= 0x28 00 00 02 f0 00 00 10 00
    [3088.151047] blk_update_request:I/O error、dev sda、sector 752
    [3088.281111] SD 0:0:0:0:0:拒绝 I/O 到离线器件
    [3122.996228] USB 1-1:USB 断开连接、器件编号7
    [127.689884] USB 1-1:使用 musb-hdrc 的新型高速 USB 器件编号8
    [127.865025] USB-STORAGE 1-1:1.0:检测到 USB 大容量存储设备
    [127.871033] SCSI host0:USB-storage 1-1:1.0
    [3128.881886] SCSI 0:0:0:0:0:直接访问 通用 UDisk 5.00 PQ:0 ANSI:2.
    [3128.888967] SD 0:0:0:0:[SDA] 3893248 512字节逻辑块:(1.99 GB/1.86 GiB)
    [3128.889408] SD 0:0:0:0:0:[SDA]写保护关闭
    [3128.889468] SD 0:0:0:0:[SDA]模式检测:0B 00 08
    [3128.893610] SD 0:0:0:0:[SDA]找不到缓存模式页
    [3128.893698] SD 0:0:0:0:[SDA]假设驱动器高速缓存:写入
    [3128.900459] sda:sda1.
    [3128.908212] SD 0:0:0:0:[SDA]连接的 SCSI 可拆卸磁盘
    [3129.312727] FAT-FS (SDA1):伪逻辑扇区大小65535
    [3129.312815] FAT-FS (sda1):找不到有效的 FAT 文件系统
    [3129.388566] FAT-FS (sda):无效的介质值(0xf3)
    [3129.388651] FAT-FS (sda):找不到有效的 FAT 文件系统

    此致、
    法里亚
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    法里亚

    日志中的 SCSI 错误主要是由 USB 数据损坏引起的。 请查看以下几项内容。

    -正如我在前面的 e2e 线程中提到的,您使用的 kernel v4.9.31+不是 TI 发布的内核,也不是香草社区内核,它看起来像是社区 v4.9.31内核加上一些其他补丁。 因此、我无法支持您使用此内核。 请使用 Processor SDK v5.2中的内核进行测试。

    -如果处理器 SDK v5.2中的内核仍然存在此类问题、则可能是硬件问题、请检查您的主板 USB 信号完整性。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    我们将在试用最新的 Linux 内核(SDK v5.2中提供)后尽快与您联系。 感谢您的支持。

    此致、

    法里亚

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    我们试用了最新的5.2 SDK、并使用了内核 4.14.79-gbde58ab01e (SDK-Linux-AM335x-EVM-05.02.00.10)。 随附的内容。

    继续前面的主题 http://e2e.ti.com/support/processors/f/791/t/763864?tisearch=e2e-sitesearch&keymatch=RNDIS%20issue 。 此内核没有您先前共享的补丁。 我们应用了此补丁、之后未检测到特定的 USB 闪存驱动器(SanDisk 64GB)。 请注意、这些闪存驱动器可以使用未修补的 USB 驱动程序。 这与之前的观察结果相同(在我们的内核4.9.31上)。

    请找到随附的 musb_dspc.c  

    另一个问题是、我们观察到、即使没有连接设备(闪存驱动器)或 USB 电缆、USB ID 引脚也会每2秒升高一次。 驱动器每2秒轮询一次器件检测吗?

    e2e.ti.com/.../5415.musb_5F00_dsps.c 

    此致

    Dheeraj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    希望您已阅读以下主题。  

    我们试用了最新的5.2 SDK、并使用了内核 4.14.79-gbde58ab01e (SDK-Linux-AM335x-EVM-05.02.00.10)。 随附的内容。

    继续前面的主题 http://e2e.ti.com/support/processors/f/791/t/763864?tisearch=e2e-sitesearch&keymatch=RNDIS%20issue 。 此内核没有您先前共享的补丁。 我们应用了此补丁、之后未检测到特定的 USB 闪存驱动器(SanDisk 64GB)。 请注意、这些闪存驱动器可以使用未修补的 USB 驱动程序。 这与之前的观察结果相同(在我们的内核4.9.31上)。

    请找到随附的 musb_dspc.c  

    另一个问题是、我们观察到、即使没有连接设备(闪存驱动器)或 USB 电缆、USB ID 引脚也会每2秒升高一次。 驱动器每2秒轮询一次器件检测吗?

    5415.musb_dsps.c 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Fariya 和 Dheeraj、

    很抱歉、我的回答很晚、上周我外出、刚回来。

    您附加的文件 musb_dsps.c 看起来很干净。 然后、请应用我之前提供的以下两个补丁。

    marc.info/
    这可以修复初始化期间的 USB phy 驱动程序错误、无论您需要什么。

    e2e.ti.com/.../2842347
    此补丁将检测超时从2sec 增加到10sec、因为我们知道、此有问题的拇指驱动器需要大约2+sec 才能枚举。

    如果使用 SDK 5.2内核上的这两个补丁、拇指驱动器仍然无法枚举、请使用示波器捕获 AM335x 附近的 DRVBUS、VBUS 和 D+线路。

    关于 ID 引脚每2秒变为高电平、是的、这是因为 PHY 在 ID 引脚上拉电流、尝试检测引脚是否接地。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    我应用了两个补丁、但我仍然观察到相同的行为、我将更新捕获的范围结果。   

    此致

    Dheeraj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dheeraj、您是否有机会捕获引脚探头?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    很抱歉、以下  附件的相关延迟是检测到 USB (连接2GB)、未检测到 USB (连接64GB)。  

    e2e.ti.com/.../not_5F00_working.zipe2e.ti.com/.../working.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dheeraj、

    感谢您的观看。

    您能否用"未检测到"拇指驱动器捕获工作案例(没有我的初始补丁)? 我记得您之前提供过类似的捕捉、但这只是探测 DRVVBUS 和 VBUS 线路、没有 D+、我想查看工作用例中的所有3个信号、以便与非工作用例进行比较。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    很抱歉耽误您的时间、请找到所需的捕获。     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    温和地说、如果需要任何其他信息、您能告诉我吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    您是否有机会查看此问题?

    此致

    Dheeraj  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Dheeraj、

    很抱歉我迟到了。
    根据我之前询问的示波器捕获、我想检查 DRVVBUS、VBUS 和 D+线路之间的时序。 但在4月8日的最后一次捕获中、只有 D+上拉至高电平、DRVVBUS 和 VBUS 的上升已经超出了想象。 您是否能够捕捉一个信号以显示所有3个信号的上升/下降转换?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好,我没有听到您的反馈,我认为您能够解决您的问题。 如果不是、只需在下面发布回复(如果该线程由于超时而锁定、则创建新线程)。 谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    问题尚未解决。 会回来的、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Bin、

    DRVVBUS 和 VBUS 始终为高电平。 当我连接 USB DRIVE D+时、它会拉高。 (此测试不带补丁)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Dheeraj、

    这个问题已经持续了这么长时间、以至于我无法跟踪我们为解决这个问题所做的工作。 我认为、如果我可以在工作台上看到问题并直接对其进行调试、这会更有意义。 那么、您是否可以联系您当地的 TI FAE、他们可以将拇指驱动器运送给我?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们将尝试向您发送画笔驱动器。 您将随时了解最新情况。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Fariya、

    我收到了 SanDisk 拇指驱动器、并在 TI 内核 ti2018.05 (在 Processor SDK Linux v5.2或 v5.3中)和社区内核 v4.9.30中进行了测试、并使用我之前在 AM335x GP EVM 上共享的以下补丁、但我无法重现问题 A)。 使用内核 v4.9.30时、我用 OTG 电缆插入/拔下了拇指驱动器50次、并插入/拔下拇指驱动器本身50次、所有这些都已正确枚举。

    您是否在 AM335x GP EVM 上尝试过相同的测试? 或者您只在定制板上看到问题?

    diff -git a/drivers/usb/musb_dsps.c b/drivers/USB/musb/musb_dsps.c
    index 9f125e179acd.88d31d14c6db 100644
    -- a/drivers/usb/structureb/musb_dsps.c
    ++ b/drivers/usb/usb_dsps/gmusb_static
    @@@@ 9、ngdsps、nb、ngdsps、ngb、ngb、ngdsps、nids/dsps
    
    切换(musb->xceiv->OTG->状态){
    案例 OTG_State_a_Wait_VRISE:
    - mod_timer (&cume->timer、jiffies +
    - mss_TO_jiffies (WRP->POLL_TIMEOUT);
    - 中断;
    + if (musb->port_mode == MUSB_port_mode_host){
    + MUSB -> xceiv->OTG->状态= OTG_State_a_WAIT_BCON;
    + mod_timer (&cume->timer、jiffies +
    + mss_TO_jiffies (WRP->POLL_TIMEOUT);
    + 中断;
    +}
    + /*通过*/
    +
    案例 OTG_State_A_WAIT_BCON:
    musb_writeb (musb->mregs、MUSB_DEVCTL、0);
    SKIP_SESSION = 1;
    
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    谢谢。 需要应用的补丁如下(而不是您应用的补丁):

    e2e.ti.com/.../4628.0001_2D00_usb_2D00_musb_2D00_dsps_2D00_fix_2D00_otg_2D00_state_2D00_machine_2D00_v4.14.patch.txt

    应用此补丁后、未检测到 SanDisk 笔驱动器。 如前所述、我们将使用我们的定制板进行此测试。

    此致、

    法里亚

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Fariya、

    抱歉、我在上面的帖子中出现了复制和粘贴错误。 我已使用我应用于 v4.9.30内核的补丁对其进行了更正、该补丁与您应用的 v4.14补丁类似。

    我试图弄清楚为什么我没有看到这个问题、但使用相同的拇指驱动器时、您会遇到这个问题。 您是否可以访问 AM335x GP EVM 以查看是否可以重现 EVM 的问题?

    我将再次查看您的电路板原理图、看看我是否可以在那里找到任何东西。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Fariya、

    如果您的董事会自上次审查以来似乎已经过修订。 您可以向我发送最新的原理图吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Fariya、

    我收到了您的原理图。 谢谢。

    我们之前要求将 USB ID 线路上的 R158替换为0欧姆、请进行更正。

    请进行实验

    在 VBUS 线路上添加120uF 电容;

    -将 VBUS 线路上的 R159替换为0欧姆;

    然后再次测试拇指驱动器。

    您能否在 AM335x GP EVM 上进行相同的测试? 我无法重现您发送给我的 SanDisk 拇指驱动器的问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    我们将根据您的建议进行实验、然后再向您回复。 我们没有要测试的 EVM。  

    此致

    Dheeraj