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.

[参考译文] AM3358:当 USB1_ID 引脚接地时、USB1 OTG 模式不工作

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1003374/am3358-usb1-otg-mode-is-not-working-when-usb1_id-pin-is-grounded

器件型号:AM3358

您好!

我想在基于 BeagleBone Black 的电路板上激活 OTG。 在器件树中、我提到了以下内容:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
&usb {
status = "okay";
};
&usb_ctrl_mod {
status = "okay";
};
&usb0_phy {
status = "okay";
};
&usb1_phy {
status = "okay";
};
&usb0 {
status = "okay";
dr_mode = "peripheral";
interrupts-extended = <&intc 18 &tps 0>;
interrupt-names = "mc", "vbus";
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

当我引导并检查寄存器 USB1MODE 时、我得到了值0x00000100。 根据 TRM、它应该由 USB1_ID 引脚驱动。

但是、当我将 USB1_ID 引脚接地时、USB_DRVVBUS 不会升高。

如果我将 dr_mode 设置为"host"、那么在启动后、我将 USB_DRVVBUS 引脚设置为高电平、并且可以连接 USB 闪存驱动器。 USB1MODE 寄存器为0x00000080。

我使用的是主线 Linux 4.19.68。

下面是我的 defconfig 的 USB 片段:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# CONFIG_USB_NET_DRIVERS is not set
# CONFIG_SND_USB is not set
# CONFIG_USB_HID is not set
CONFIG_USB=y
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_OTG=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_XHCI_PLATFORM=y
CONFIG_USB_EHCI_HCD=y
CONFIG_USB_OHCI_HCD=y
CONFIG_USB_OHCI_HCD_PLATFORM=y
CONFIG_USB_STORAGE=y
CONFIG_USB_MUSB_HDRC=y
CONFIG_USB_MUSB_OMAP2PLUS=y
CONFIG_USB_MUSB_DSPS=y
CONFIG_USB_INVENTRA_DMA=y
CONFIG_USB_TI_CPPI41_DMA=y
CONFIG_NOP_USB_XCEIV=y
CONFIG_AM335X_PHY_USB=y
CONFIG_USB_GPIO_VBUS=m
CONFIG_USB_GADGET=y
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

有什么想法、可能会出什么问题?

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

    Petr、您好!

    对于 dr_mode ='peripheral_and dr_mode ='OTG'、请确保您已加载 USB 小工具驱动程序。 OTG 端口还需要此功能来检测连接的 USB 设备。

    由于 DT 显示 usb0处于外设模式、而 USB1处于 OTG 模式、因此您必须加载两个不同的 USB 小工具驱动程序、每个端口一个。

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

    您好、Bin、

    对于 usb0、我将 dr_mode 更改为"OTG"。 但它仍然不起作用。 USB 小工具驱动程序包含在内核中。

    是否有办法强制驱动器通过 SW 方式通过 OTG 启动主机模式?

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

    我注意到、浮点时、USB1_ID 的一个东西是 Aprox。 377mV 电平。 Shoud 此引脚是否为高电平?

    USB 模块如何识别该引脚是否接地?

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

    Petr、您好!

    [引用 userid="383515" URL"~/support/processors-group/processors/f/processors-forum/1003374/am3358-usb1-otg-mode-is-not-working-when-usb1_id-pin-is-grounded/3707957 #3707957"]对于 usb0,我将 dr_mode 更改为'OTG'。

    我并不是说您需要更改这个。 您可以根据用例设置模式。

    [引用 userid="383515" URL"~/support/processors-group/processors/f/processors-forum/1003374/am3358-usb1-otg-mode-is-not-working-when-usb1_id-pin-is-grounded/3707957 #3707957"]内核中包含 USB 小工具驱动程序。[/quot]

    我提到小工具驱动程序应该"加载"到内存中、而不仅仅是位于根文件系统中。 请在 Linux 控制台上运行以下命令、然后测试您的 USB 设备。

    Fullscreen
    1
    2
    # modprobe g_zero
    # modprobe g_ether
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    您好、Bin、

    执行后、我得到了以下答案:

    modprobe:modules.dep 中未找到模块 g_zero

    但是、正如我说过的、USB 小工具是内核中内置的、因此它不是模块。

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

    Petr、您好!

    好的、请在您的电路板上运行以下脚本并提供其输出。

    e2e.ti.com/.../8105.chkusb.sh.txt

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

    哦、我现在看到了、由于我通过 USB 使用 NFS、所以我设置了 USB_ETH、现在无法选择 USB_zero 或 USB_mass 存储。

    我将在没有通过 USB 进行 NFS 引导的情况下尝试使用 USB 作为模块并告知您。

    如果我说不可能同时使用 USB 上的 NFS 和 OTG 与大容量存储、我是对的吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="383515" URL"~/support/processors-group/processors/f/processors-forum/1003374/am3358-usb1-otg-mode-is-not-working-when-usb1_id-pin-is-grounded/3708168 #3708168"]如果我说不能同时使用 USB 上的 NFS 和带有大容量存储的 OTG,我是否正确?

    它不直接与 USB 上的 NFS 关联、而是与 USB 小工具驱动程序中内置的内核相关、USB 上的 NFS 需要使用该内核。

    在 USB 配置中、每个 USB 端口都需要一个 USB 小工具驱动程序、但在内核映像中构建 USB 小工具时、只有一个小工具驱动程序可用、因此这是冲突。

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

    清除我将尝试不通过 USB 引导 NFS 进行检查。

    同时,我执行了您的脚本,但由于 rootfs 中没有 bash,所以出现以下错误

    root@tsp-transceiver:~#./usb_check.sh
    /usb_check.sh:第234行:未找到 DBG_PRINT:
    /usb_check.sh:第5行:语法错误:未终止引用的字符串

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

    好的、然后忽略此脚本。 它基本上检查了 Linux 中 USB 配置的许多因素、但我相信您的问题是由内核中内置的 USB 小工具引起的。 让我知道它在将 USB 小工具构建为模块并加载两个不同的 USB 小工具驱动程序时是否起作用。

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

    您好、Bin、

    我将 USB 编译为基于模块的、实际上将 USB1_ID 引脚接地将提升 USB_DRVVBUS。 但是、我的闪存盘未加载、并且在一秒或两秒内 USB_DRVVBUS 会下降到低电平。 一秒钟后、它再次升高到高电平、并一直重复此操作。

    以下是 lsmod 结果:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Not tainted
    roles 16384 0 - Live 0xbf39b000
    ohci_platform 16384 0 - Live 0xbf392000
    ohci_hcd 40960 1 ohci_platform, Live 0xbf382000
    ehci_omap 16384 0 - Live 0xbf379000
    ehci_hcd 57344 1 ehci_omap, Live 0xbf365000
    usb_storage 53248 0 - Live 0xbf34e000
    usb_f_mass_storage 40960 0 - Live 0xbf33d000
    usb_f_ecm 16384 1 - Live 0xbf334000
    g_ether 16384 0 - Live 0xbf32b000
    usb_f_rndis 24576 2 g_ether, Live 0xbf31f000
    u_ether 20480 3 usb_f_ecm,g_ether,usb_f_rndis, Live 0xbf316000
    usb_f_ss_lb 24576 2 - Live 0xbf30b000
    g_zero 16384 0 - Live 0xbf302000
    libcomposite 53248 6 usb_f_mass_storage,usb_f_ecm,g_ether,usb_f_rndis,usb_f_ss_lb,g_zero, Live 0xbf2ed000
    arc4 16384 2 - Live 0xbf2e5000
    wl18xx 98304 0 - Live 0xbf2c3000
    wlcore 188416 1 wl18xx, Live 0xbf288000
    mac80211 385024 2 wl18xx,wlcore, Live 0xbf213000
    sha256_arm 24576 0 - Live 0xbf209000
    sha256_generic 20480 0 - Live 0xbf200000
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

    哦、很奇怪。 当我将 USB-C 闪存驱动器旋转180度时、它现在可以工作。 我的闪存驱动器似乎仅连接一侧、或者我们的 USB-C 端口连接错误。 尽管如此、方向良好、它仍然可以正常工作、并且加载了闪存驱动器。

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

    Petr、您好!

    很高兴听到软件问题得到解决。 感谢您的更新。

x 出现错误。请重试或与管理员联系。