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/AM3358:USB 强制进入主机/设备模式

Guru**** 2937830 points

Other Parts Discussed in Thread: AM3358

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/665403/linux-am3358-usb-force-to-host-device-mode

器件型号:AM3358
主题中讨论的其他器件: TX12

工具/软件:Linux

您好!

我想在主机和小工具模式下使用 am3358上的 USB 主机控制器。 一个外部触发器触发"变换"。

该器件只有一个 USB A 母连接器、因此我必须覆盖 id 引脚才能进入分页模式。 对于测试、我使用 Beagle Bone Black (femal 连接)

我将器件树中的 USB 端口更改为

DR_MODE ="OTG";

系统引导,dmesg | grep USB 显示:


root@BeagleBone:~# dmesg |grep USB                                                                                                                                                
[1.532469]   usbcore:注册的新接口驱动程序 usbfs
[1.532549]   usbcore:注册的新接口驱动程序集线器
[1.532674]   usbcore:注册的新设备驱动程序 USB
[2.182201]   usbcore:注册的新接口驱动程序 USB 存储
[2.184238]   47401300.usb-phy 未找到使用虚拟稳压器的电源 VCC
[2.186947]   musb-hdrc:ConfigData=0xde (UTMI-8、dyn FIFO、大容量组合、大容量分离、HB-ISO Rx、 HB-ISO Tx、SoftConn)
[2.1869]   musb-hdrc:MHDRC RTL 版本2.0
[2.186978]   musb-hdrc:设置 fifo_mode 4.
[2.186997]   musb-hdrc:28/31最大 EP、16384/16384存储器
[2.187159]   musb-hdrc musb-hdrc.0.auto: MUSB HDRC 主机驱动程序
[2.187202]   musb-hdrc musb-hdrc.0.auto:新 USB 总线已注册、分配的总线编号1
[2.187508]   USB USB1:找到新的 USB 器件、idVendor=1d6b、idProduct=0002
[2.187523]   USB USB1:新 USB 器件字符串:MFR=3、Product=2、SerialNumber=1
[2.187533]   USB USB1:产品:MUSB HDRC 主机驱动程序
[2.187542]   USB USB1:制造商:Linux 4.4.9.91-ti-R133 musb-hcd
[2.187551]   USB USB1:Serial Number:musb-hdrc.0.auto
[2.190863]   47401b00.usb-phy 电源 VCC 未找到、使用虚拟稳压器
[2.193353]   musb-hdrc:ConfigData=0xde (UTMI-8、dyn FIFO、大容量组合、大容量分离、HB-ISO Rx、 HB-ISO Tx、SoftConn)
[2.193373]   musb-hdrc:MHDRC RTL 版本2.0
[2.19332]   musb-hdrc:设置 fifo_mode 4.
[2.193398]   musb-hdrc:28/31最大 EP、16384/16384存储器
[2.193572]   musb-hdrc musb-hdrc.1.auto: MUSB HDRC 主机驱动程序
[2.193607]   musb-hdrc musb-hdrc.1.auto:新 USB 总线已注册、分配的总线编号2
[2.193876]   USB USB2:找到新的 USB 器件、idVendor=1d6b、idProduct=0002
[2.193891]   USB USB2:新 USB 器件字符串:MFR=3、Product=2、SerialNumber=1
[2.193901]   USB USB2:产品:MUSB HDRC 主机驱动程序
[2.193911]   USB USB2:制造商:Linux 4.4.9.91-ti-R133 musb-hcd
[2.193920]   USB USB2:Serial Number:musb-hdrc.1.auto
[2.283548]   usbcore:注册的新接口驱动程序 usbhid
[2.283560]   usbhid:USB HID 内核驱动程序


lsusb -v


总线002设备001:ID 1d6b:0002 Linux Foundation 2.0根集线器
器件描述符:
 b 长度               18.
 b 描述符类型        1
 bcdusb              2.00
 bDeviceClass           9集线器
 bDeviceSubClass        0未使用
 b DeviceProtocol        1 Single TT
 bMaxPacketSize0       64
 idVendor          0x1d6b Linux Foundation
 idProduct         0x0002 2.0根集线器
 bcdDevice           4.04
 制造商          3 Linux 4.4.9.91-ti-r133 musb-hcd
 iProduct               2 MUSB HDRC 主机驱动器
 iSerial                1 musb-hdrc.1.auto
 b 数字配置     1.
 配置描述符:
   b 长度                9.
   b 描述符类型        2
   wTotalLength          25.
   b 数字接口         1
   b ConfigurationValue    1
   iConfiguration         0
   bmAttributes        0xe0
     自供电
     远程唤醒
   最大功率               0mA
   接口描述符:
     b 长度                9.
     b 描述符类型        4
     b 接口编号       0
     b AlternateSeting      0
     b 结束点          1
     b 接口9类        集线器
     b 未     使用 InterfaceSubClass 0
     b 接口协议     0全速(或根)集线器
     iInterface             0
     端点描述符:
       b 长度                7.
       b 描述符类型        5
       b 中的 EndpointAddress    0x81 EP 1
       bmAttributes 3.            
         传输类型           中断
         同步类型              无
         使用类型              数据
       wMaxPacketSize    0x0004 1x 4字节
       b 间隔             12
集线器描述符:
 b 长度              9.
 b 描述符类型     41
 n 端口            1
 wHubistic 0x0011
   每端口电源开关
   无过流保护
   TT 思考时间8 fs 位
 bPwrOn2PwrGood       5 * 2毫秒
 b HubContrCurrent     0毫安
 DeviceRemovable   0x02
 PortPwrCtrlMask   0xff
 集线器端口状态:
  端口1:0000.0100电源
器件状态:    0x0001
 自供电


我想在主机模式下启动并为 WiFi 模块加载驱动程序、但 USB 功率计显示 USB 端口未通电。

在主机模式下,启用 USB 端口电源的常用方法是什么?

 引导我的一方的可能解决方案:

在主机模式下加载 USB 内核驱动程序?

启用电源 USB1_DRVVBUS (bbb 原理图中的信号)为 USB 端口供电、电压为5伏

加载 WiFi 记忆棒的驱动程序

要小工具的主机:

卸载 wifi 驱动程序

禁用电源 USB1_DRVVBUS

卸载主机驱动程序?

加载 RNDIS 驱动程序(绑定到 USB1端口)

主机的小工具

反之亦然

是否有管理此问题的通用解决方案?

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

    Stefan、

    这里有两个问题。

    内核启动后 USB 端口没有 VBUS 电源。

    2.如何在主机和小工具模式之间切换。

    让我们首先解决第一个问题。

    要使 OTG 端口(DR_MODE ="OTG")正常工作、您必须加载小工具驱动程序、这对于小工具模式来说是合理的、但端口在主机模式下工作也是必需的。

    现在您将第二个端口更改为"OTG"模式、我不知道如何为第一个 USB 端口(微型 AB 端口)设置 DR_MODE、但您可以检查文件夹"/sys/class/udc。

    如果只有一个文件夹"musb-hdrc.0.auto"、它用于第二个端口、则只需加载一个 USB 小工具驱动程序。

    但是、如果有两个文件夹"musb-hdrc.0.auto"和"musb-hdrc.1.auto"、这意味着两个 USB 端口都处于"OTG"模式、则必须加载两个不同的小工具驱动程序才能使第二个 USB 端口在"OTG"模式下正常工作、或者如果您根本不使用第一个 USB 端口、则禁用它。

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

    我在/sys/class/udc/"musb-hdrc.0.auto"中只有一个文件、我通过 modprobe 加载 USB 迷宫驱动程序。 模块加载正确、但 lsmod 显示无人使用 Rinds 模块。 我尝试将驱动程序绑定到1-1:1.0、但遇到错误、没有这样的设备。

    但 USB 设备无法正常工作、也无法通电。 是否可以重新加载 USB 控制器的 USB 内核驱动程序?

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

    [引用 user="Stefan Blattmann"]我只有一个文件位于/sys/class/udc/"musb-hdrc.0.auto"

    请运行以下两个命令以获取两个 USB 控制器的 dr_mode。

    # cat /proc/device-tree/ocp/usb@47400000/USB\@47401000/dr_mode
    # cat /proc/device-tree/ocp/usb@47400000/USB\@47401800/dr_mode

    [引用 user="Stefan Blattmann"]我通过 modprobe 加载 USB Rinds 驱动程序。 [/报价]

    请显示您使用的确切命令。

    [引用 user="Stefan Blattmann"] lsmod 显示任何人都不使用 Rinds 模块

    也请显示确切的日志。 我必须查看确切的日志才能知道发生了什么。

    [引用 user="Stefan Blattmann]'我尝试将驱动程序绑定到1-1:1.0、但我遇到错误、没有这样的设备。 [/报价]

    不要绑定它。 USB 小工具驱动程序用于 UDC、而不是任何 USB 主机总线、例如1-1:1.0...

    [引用 user="Stefan Blattmann"]但 USB 设备不能正常工作、也不能通电。 是否可以重新加载 USB 控制器的 USB 内核驱动程序? [/报价]

    请向我展示确切的命令和日志。 它假设在所有步骤都正确完成时正常工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另请运行以下命令、它将告知哪个 USB 端口是 musb-hdrc.0.auto UDC。

    # ls -l /sys/class/udc/musb-hdrc.0.auto
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    抱歉出现排印错误。

    以下是输出:


    Cat /proc/device-tree/ocp/usb@47400000/USB\@47401000/dr_mode;echo

    外设


    Cat /proc/device-tree/ocp/usb@47400000/USB\@47401800/dr_mode;echo

    OTG


    根据 DTS/DTB 文件 USB 部分:

    dr_mode 的输出看起来正确。 注意:USB 端口0在设备树中被禁用!


          USB@47400000{
             兼容="ti、am33xx-usb";
             REG =<0x47400000 0x1000>;
             范围;
             #address-cells =<0x1>;
             大小单元格=<0x1>;
             ti、hwmonds ="USB_OTG_hs";
             状态="正常";
             linux、phandle =<0xaf>;
             相位=<0xaf>;

             控制@44e10620{
                兼容="ti、am335x-usb-ctrl-module";
                REG =<0x44e10620 0x10 0x44e10648 0x4>;
                reg-names ="phy_ctrl"、"wakeup";
                状态="正常";
                linux、phandle =<0x3a>;
                相位=<0x3a>;
             };

             USB-phy@47401300{
                兼容="ti、AM335x-USB-phy";
                REG =<0x47401300 0x100>;
                reg-names ="phy";
                状态="正常";
                TI、CTRL_mod =<0x3a>;
                Linux、phandle =<0x3b>;
                相位=<0x3b>;
             };

             USB@47401000{
                兼容="ti、musb-am33xx";
                status ="放弃";
                REG =<0x47401400 0x400 0x47401000 0x200>;
                reg-names ="mC"、"control";
                中断=<0x12>;
                中断名称="MC";
                DR_MODE ="外设";
                Mentor、多点=<0x1>;
                Mentor、num-eps =<0x10>;
                Mentor、ram-bits =<0xc>;
                Mentor、power =<0x1F4>;
                PHY =<0x3b>;
                DMA =<0x3c 0x0 0x0 0x3c 0x1 0x3c 0x2 0x3c 0x3 0x0 0x3c 0x4 0x3c 0x5 0x3c 0x0 0x6 0x0 0x3c 0x7 0x0 0x3c 0x8 0x3c 0x3c 0x9 0x0 0x3c 0xA 0x0 0x3c 0xb 0x0 0x0 0x3c 0x0 0x0 0x3c 0x0 0x0 0x0 0x3c 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x3c 0x0 0x0 0x0 0x0 0x0 0x 0x3c 0x1 0x1 0x3c 0x2 0x3c 0x3 0x3c 0x4 0x1 0x3c 0x5 0x1 0x3c 0x6 0x3c 0x7 0x1 0x3c 0x1 0x3c 0x9 0x1 0x3c 0x1 0x3c 0xb 0x1 0x3c 0xc 0x1 0x3c 0xd 0x1 0x3c 0x10x3c 0x10x10x3c 0x10x1c 0x1c 0x1c 0x1c 0x1c 0x1c
                dma-names ="rx1"、"rx2"、"rx3"、"RX4"、"rx5"、 "rx6"、"rx7"、"rx8"、"rx9"、"RX10"、 "rx11"、"rx12"、"rx13"、"rx14"、"rx15"、 "TX1"、"TX2"、"TX3"、"TX4"、"TX5"、 "TX6"、"Tx7"、"Tx8"、"Tx9"、"Tx9"、"TX10"、 "tx11"、"tx12"、"tx13"、"tx14"、"Tx15";
                linux、phandle =<bb0>;
                phandle =<b0>;
             };

             USB-phy@47401b00{
                兼容="ti、AM335x-USB-phy";
                REG =<0x47401b00 0x100>;
                reg-names ="phy";
                状态="正常";
                TI、CTRL_mod =<0x3a>;
                linux、phandle =<0x3D>;
                相位=<0x3D>;
             };

             USB@47401800{
                兼容="ti、musb-am33xx";
                状态="正常";
                REG =<0x47401c00 0x400 0x47401800 0x200>;
                reg-names ="mC"、"control";
                中断=<0x13>;
                中断名称="MC";
                DR_MODE ="OTG";
                Mentor、多点=<0x1>;
                Mentor、num-eps =<0x10>;
                Mentor、ram-bits =<0xc>;
                Mentor、power =<0x1F4>;
                PHY =<0x3D>;
                DMA =<0x3c 0xF 0x0 0x3c 0x10 0x3c 0x11 0x0 0x3c 0x12 0x0 0x3c 0x13 0x3c 0x14 0x3c 0x15 0x0 0x3c 0x16 0x3c 0x17 0x3c 0x3c 0x18 0x3c 0x19 0x1c 0x0 0x1c 0x1c 0x0 0x1c 0x1c 0x0 0x1c 0x1 0x1c 0x0 0x1c 0x1 0x1 0x1c 0x0 0x1c 0x0 0x1 0x1c 0x0 0x1 0x1 0x1 0x0 0x3c 0x10 0x1 0x3c 0x11 0x10x3c 0x12 0x10x3c 0x13 0x10x3c 0x14 0x1c 0x15 0x1c 0x16 0x1c 0x17 0x1c 0x18 0x1 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x1c 0x10x1c 0x1c
                dma-names ="rx1"、"rx2"、"rx3"、"RX4"、"rx5"、 "rx6"、"rx7"、"rx8"、"rx9"、"RX10"、 "rx11"、"rx12"、"rx13"、"rx14"、"rx15"、 "TX1"、"TX2"、"TX3"、"TX4"、"TX5"、 "TX6"、"Tx7"、"Tx8"、"Tx9"、"Tx9"、"TX10"、 "tx11"、"tx12"、"tx13"、"tx14"、"Tx15";
                linux、phandle =<bb1>;
                phandle =<b1>;
             };

             DMA 控制器@47402000{
                兼容="ti、am3359-cppi41";
                REG =<0x47400000 0x1000 0x47402000 0x1000 0x47403000 0x1000 0x47404000 0x4000>;
                reg-names ="cule"、"controller"、"scheduler"、"queuemgr";
                中断=<0x11>;
                中断名称="胶合";
                dma-cells =<0x2>;
                DMA 通道数=<0x1E>;
                dma-requests =<0x100>;
                状态="正常";
                linux、phandle =<0x3c>;
                相位=<0x3c>;
             };
          };


    正在加载 RNDIS 驱动程序:

    # modprobe -v USB_f_RNDIS



    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/libcomposite.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/function/u_ether.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/function/usb_f_rndis.ko


    # lsmod


    使用的模块                 大小  
    USB_f_RNDIS           26581 0
    U_ether               14733 1 USB_f_RNDIS
    libcomposite          54488 1 USB_f_RNDIS
    evdev                 14151 1.
    uio_pdrv_genirq        4243 0
    uio                   11100 1 uio_pdrv_genirq
    spidev                 9289 0
    tieqep                10422 0
    IP_Tables             15525 0
    x_tables              21069 1 IP_tables
    PRU_rproc             15879 2.
    pruss_INTC             9009 1 PRU_rproc
    pruss                 12346 1 PRU_rproc


    #dmesg | grep usb


    [1.532458]   usbcore:注册的新接口驱动程序 usbfs
    [1.532535]   usbcore:注册的新接口驱动程序集线器
    [1.532655]   usbcore:注册的新设备驱动程序 USB
    [2.182061]   usbcore:注册的新接口驱动程序 USB 存储
    [2.184121]   47401300.usb-phy 电源 VCC 未找到、使用虚拟稳压器
    [2.185650]   使用虚拟稳压器未找到47401b00.usb-phy 电源 VCC
    [2.188133]   musb-hdrc:ConfigData=0xde (UTMI-8、dyn FIFO、大容量组合、大容量分离、HB-ISO Rx、 HB-ISO Tx、SoftConn)
    [2.188154]   musb-hdrc:MHDRC RTL 版本2.0
    [2.188164]   musb-hdrc:设置 fifo_mode 4.
    [2.188184]   musb-hdrc:28/31最大 EP、16384/16384存储器
    [2.188336]   musb-hdrc musb-hdrc.0.auto: MUSB HDRC 主机驱动程序
    [2.188388]   musb-hdrc musb-hdrc.0.auto:新 USB 总线已注册、分配总线编号1
    [2.188944]   USB USB1:找到新的 USB 器件、idVendor=1d6b、idProduct=0002
    [2.188961]   USB USB1:新 USB 器件字符串:MFR=3、Product=2、SerialNumber=1
    [2.188971]   USB USB1:产品:MUSB HDRC 主机驱动程序
    [2.188980]   USB USB1:制造商:Linux 4.4.9.91-ti-R133 musb-hcd
    [2.1889]   USB USB1:序列号:musb-hdrc.0.auto
    [2.278926]   usbcore:注册的新接口驱动程序 usbhid
    [2.278938]   usbhid:USB HID 内核驱动程序


    # ls -l /sys/class/udc/musb-hdrc.0.auto


    lrwxrwxrwx 1 root root 用户0 jan 1 2000 /sys/class/udc/musb-hdrc.0.auto ->../../devices/platform/ocp/47400000.usb/47401c00.usb/musb-hdrc.0.auto/udc/musb-hdrc.0.auto


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

    Stefan、

    [引用用户="Stefan Blattmann"]

    正在加载 RNDIS 驱动程序:

    # modprobe -v USB_f_RNDIS

    [/报价]

    我认为这是问题所在。 您不能单独使用 USB_f_RNDIS 驱动程序、它是一个 USB"功能"、而不是一个"小工具"、这是 USB 世界中的两个不同方面。 USB_f_RNDIS 主要用于 USB 小工具 configfs。

    在您的用例中、要使用 USB-Ethernet 小工具、您可以改用"modprobe g_ete"。 请告诉我此命令是否解决了 USB 端口 VBUS 电源问题。

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

    您好、Bin、

    我调制 g_ether

    # modprobe -v g_ether


    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/libcomposite.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/function/u_ether.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/function/usb_f_rndis.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/legacy/g_ether.ko


    # lsmod


    USB_F_ECM             11448 1.
    G_Ether                5763 0
    USB_f_RNDIS           26581 2 g_ether
    U_ether               14733 3 USB_f_ECM、USB_f_RNDIS、g_ether
    libcomposite          54488 3 USB_f_ECM、USB_f_RNDIS、g_ether
    evdev                 14151 1.
    uio_pdrv_genirq        4243 0
    uio                   11100 1 uio_pdrv_genirq
    spidev                 9289 0
    tieqep                10422 0
    IP_Tables             15525 0
    x_tables              21069 1 IP_tables
    PRU_rproc             15879 2.
    pruss_INTC             9009 1 PRU_rproc
    pruss                 12346 1 PRU_rproc


    # lsusb


    总线001器件001:ID 1d6b:0002 Linux Foundation 2.0根集线器


    但端口上仍然没有 USB 电源。

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

    [引用用户="Stefan Blattmann"]

    我调制 g_ether

    # modprobe -v g_ether


    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/libcomposite.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/function/u_ether.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/function/usb_f_rndis.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/legacy/g_ether.ko

    [/报价]

    之后您是否看到更多日志? 我有更多信息、请参阅下面的日志。

    如果现在您将器件树中的 USB1端口 dr_mode 更改为"host"、则该端口是否具有 VBUS 电源?

    我刚刚在 BeagleboneBlack 上进行了测试。 这对我很有用。 请参阅以下详细信息。

    diff -git a/arch/arm/boot/dts/AM335x-bone-common.dtsi b/arch/arm/boot/dts/AM335x-bone-common.dtsi
    index 07ed84c0b8f2.1dd5f540c15b 100644
    -- a/sarm/boot/arch/am335x-common.dtx
    
    @@@@-13+dtds/bs/bd-13 bons/b/sb/sm
    Ω-diss/dtb/sb/s-b/s-b/sm Ω-diss/diss-diss/diss-and/b/s-b/sne-be-band/diss-13+13+13+dtdtdtb
    
    
    状态="确定";
    + STATUS ="禁用";
    DR_MODE ="外设";
    };
    
    &USB1{
    状态="正常";
    - DR_MODE ="主机";
    + DR_MODE ="OTG";
    };
    
    &cppi41dma{ 

    AM335x-EVM
    ~:root root 用户@AM335x-EVM:modprobe -v g_ether
    insmod /lib/modules/4.4.41-03567-g7c580a51af52-dirty/kernel/drivers/usb/gadget/libcomposite.ko
    insmod /lib/modules/4.4.41-03567-g7c580a51af52-dirty/kernel/drivers/usb/gadget/function/u_ether.ko
    insmod /lib/modules/4.4.41-03567-g7c580a51af52-dirty/kernel/drivers/usb/gadget/function/usb_f_rndis.ko
    insmod /lib/modules/4.4.41-03567-g7c580a51af52-dirty/kernel/drivers/usb/gadget/legacy/g_ether.ko
    [ 44.380437]使用随机自以太网地址
    [ 44.388473]使用随机主机以太网地址
    [ 44.404250] usb0:主机 MAC 2e:90:31:a5:
    usb178:44.178] Mac 16:e8:5a:b4:4D:C3
    [44.423824]使用随机自以太网地址
    [44.429719]使用随机主机以太网地址
    [44.442823] g_ether 小工具:以太网小工具、版本:2008阵亡将士纪念日
    [44.4499474] g_ether 小工具:g_ether ready
    root@AM335x-evm:~ 4491-evmusb:4491#使用新 USB 设备[44.9471]
    找到新的 USB 设备、idVendor=13b1、idProduct=003A
    [ Serial101742] USB 1-1:新的 USB 设备字符串:MFR=1、Product=2、SerialNumber=3
    [ 45.108907] USB 1-1:产品:Linksys AE2500
    [ 45.117051] USB 1-1:制造商:Cisco
    [ 45.123614] USB 1
    
    @AM35001]
    
    根:AM35x EVM:1根:AM3001根:AM3001~ AM35001根:AM3001@AM3001根:AM35001~ AM3001 ID 13b1:003A Linksys AE2500 802.11abgn 无线适配器[Broadcom BCM43236]
    总线001设备001:ID 1d6b:0002 Linux Foundation 2.0根集线器
    
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果我将 dr_mode 更改为 HOST、它工作正常、外设也工作。

    我使用内核版本

    # uname -r


    4.4.9.91-ti-R133


    # modprobe -v g_ether


    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/libcomposite.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/function/u_ether.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/function/usb_f_rndis.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/legacy/g_ether.ko


    # dmesg


    [8.782348]   systemd-journale[242]:已收到从 PID 1刷新运行时日志的请求
    [11.364378]  cgroup:新的安装选项与现有超级块不匹配,将被忽略
    [12.660167]  random:非阻塞池已初始化
    [117.750185] 使用随机自以太网地址
    [117.750215] 使用随机主机以太网地址
    [117.751329] usb0:主机 MAC 0e:15:D8:75:71:12
    [117.751546] usb0:Mac D2:b9:F6:70:06:20
    [117.751608] 使用随机自以太网地址
    [117.751621] 使用随机主机以太网地址
    [117.751773] g_ether 小工具:以太网小工具、版本:2008年阵亡将士纪念日
    [117.751788] g_ether 小工具:g_ether 就绪


    # lsusb


    总线001器件001:ID 1d6b:0002 Linux Foundation 2.0根集线器


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

    加载 # modprobe -v g_ether 后、RNDIS 可能在 OTG 模式下工作

    # dmesg


    [47.837418]  使用随机自以太网地址
    [47.837450]  使用随机主机以太网地址
    [47.838586]  usb0:主机 MAC D2:A6:BD:06:C5:68
    [47.838804]  usb0:Mac 9e:98:26:18:aa:ae
    [47.838867]  使用随机自以太网地址
    [47.838881]  使用随机主机以太网地址
    [47.839032]  g_ether 小工具:以太网小工具、版本:2008阵亡将士纪念日
    [47.839045]  g_ether 小工具:g_ether 准备就绪
    [48.300288]  g_ether 小工具:高速配置#1:CDC 以太网(ECM)


    但主机模式无法正常工作

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

    加载小工具驱动程序后、主机模式没有 VBUS 电源、我想不到任何明显的原因。
    请使用以下命令在加载 g_ether 后转储寄存器。
    # devmem2 0x47401c60 b

    您的 BeagleBone Black 的修订版是什么? 我的是 C0。
    如果您在显示修订版本的电路板上找不到任何标签、则可以使用以下命令从 U-Boot 提示符中读取它。

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

    箱、

    # devmem2 0x47401c60 b


    /dev/mem 已打开。
    映射到地址 bb6f14000的内存。
    地址0x1195383904 (bb6f14c60)的值:0x128


    hexdump -e '8/1 "%c""/sys/bus/i2c/devices/0-0050/eeprom -s 13 -n 3 2>&1


    C0


    检查修订版本 c0版本使用4GB NAND 闪存、以此类推

    # df


    文件系统    1K 块   已使用%已安装
    udev             221852      0   221852  0%/dev/dev
    tmpfs             49936   3788    46148  8%/run
    /dev/mmcblk0p1  3357264 1715736  1451272 55%/
    tmpfs            249672      0   249672  0%/dev/shm
    tmpfs              5120      0     5120  0%/run/lock
    tmpfs            249672      0   249672  0%/sys/fs/cgroup
    tmpfs             49932      0    49932  0%/run/user/0


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

    Stefan、

    [引用用户="Stefan Blattmann"]

    # devmem2 0x47401c60 b


    /dev/mem 已打开。
    映射到地址 bb6f14000的内存。
    地址0x1195383904 (bb6f14c60)的值:0x128

    [/报价]

    您确定回读0x128吗? 不是复制粘贴错误?

    该命令只能读取一个字节、无法获取0x128。

    [引用用户="Stefan Blattmann"]

    hexdump -e '8/1 "%c""/sys/bus/i2c/devices/0-0050/eeprom -s 13 -n 3 2>&1


    C0

    [/报价]

    好的、我们有相同的修订版本。 硬件系数已用完。

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

    箱、

    我从编译了 memdv2

    https://github.com/VCTLabs/devmem2

    #制造

    #进行安装

    我重新检查的输出

    # devmem2 0x47401c60 b and get


    root@BeagleBone:~ evmem2 0x47401c60 b
    /dev/mem 已打开。
    映射到地址 bb6fe3000的内存。
    地址0x1195383904 (0xb6fe3c60)的值:0x128


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

    我不知道该工具为什么会产生一个以上的字节。 但请使用以下命令读取寄存器。

    # grep -i devctl /sys/kernel/debug/musb-hdrc.0.auto/regdump
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    箱、

    好的、

    此处是"grep -i devctl /sys/kernel/debug/musb-hdrc.0.auto/regdump "的输出

    在启动时输出、而不加载 g_ether


    root@BeagleBone:~# grep -i devctl /sys/kernel/debug/musb-hdrc.0.auto/regdump
    DevCtl     :80

    加载 g_ether 后输出


    root@BeagleBone:~# modprobe -v g_ether
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/libcomposite.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/function/u_ether.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/function/usb_f_rndis.ko
    insmod /lib/modules/4.4.91-ti-r133/kernel/drivers/usb/gadget/legacy/g_ether.ko
    root@BeagleBone:~# grep -i devctl /sys/kernel/debug/musb-hdrc.0.auto/regdump
    DevCtl     :80


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

    [~用户="Stefan Blattmann]root@BeagleBone:# modprobe -v g_ether
    (笑声)
    root@BeagleBone:~# grep -i devctl /sys/kernel/debug/musb-hdrc.0.auto/regdump
    DevCtl     :80
    [/报价]

    我现在期望 DevCtl 寄存器应该为0x19。 如果为0x80、则不会有 VBUS 电源。

    要检查的另一点是、请在"modprobe g_ete"之后运行以下两条命令。

    # ls -l /sys/class/udc

    # cat /sys/class/udc/musb-hdrc.0.auto/uevent

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

    您是否修改了 BeagleBone Black 板? USB1端口的 ID 引脚接地、您是否移除了接地?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

    # ls -l /sys/class/udc


    root@BeagleBone:~# ls -l /sys/class/udc
    总计0
    lrwxrwxrwx 1 root root 用户0 11月 3日17:17 musb-hdrc.0.auto ->../../devices/platform/ocp/47400000.usb/47401c00.usb/musb-hdrc.0.auto/udc/musb-hdrc.0.auto
    root@BeagleBone:~#


    CAT /sys/class/udc/musb-hdrc.0.auto/uevent


    root@BeagleBone:~# cat /sys/class/udc/musb-hdrc.0.auto/uevent
    驱动程序=g_ether
    USB_UDC_NAME=musb-hdrc
    USB_UDC_DRIVER=g_ETher
    root@BeagleBone:~#


    实际上、我没有修改 bbb 上的 id 引脚

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

    Stefan、

    我们检查了所有可能会出错的东西、一切看起来都很好、除了驱动程序不能正常工作、它应该是将 MUSB 控制器置于主机模式- DevCtl 寄存器是0x80、在加载小工具驱动程序后应该是0x19。

    您是否在 uboot 中添加了任何自定义内核引导选项? 请运行命令'cat /proc/cmdline。

    如果内核引导参数中没有什么特别之处、则导致问题的唯一原因是 MUSB 驱动程序。 您使用的内核 4.4.9.91-ti-R133似乎不是来自 TI 处理器 SDK 软件包。 您能否使用 TI 处理器 SDK 软件包中的预构建二进制文件进行测试、以查看其是否存在相同的问题?

    您能否分享您在 DTS 中以补丁格式所做的更改? 我记得您之前发布过 DTS、但它不是补丁格式、我很难知道更改了什么。

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

    您好、bin、

    此处是输出:

    CAT /proc/cmdline


    console=ttyO0、115200n8 root=/dev/mmcblk1p1 root ro rootfstype=ext4 root wait 相干池=1M net.ifnames=0安静


    明天我从 devicetree 上载补丁文件

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

    您的内核参数看起来正常。
    您能否使用 TI 处理器 SDK 软件包中的预构建二进制文件进行测试、以查看其是否存在相同的问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Stefan、

    我没有听到您的反馈,我认为您能够解决您的问题。 如果不是、只需在下面发布回复(如果该线程由于超时而锁定、则创建新线程)。 谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Stefan:

    感谢您迄今进行的建设性交流。

    我们就这一未决问题进行了内部呼叫、我们的业务部门随时准备为您提供进一步支持。  

    请尝试根据前一条消息中提供的最新软件包重现此问题、并返回报告。

    谢谢你

    此致

    Karim

    成员组技术人员

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

    您好 Karim、

    您好 Bin、

    很抱歉、我的回答延迟了、我 无法解决 USB OTG 问题。

    我已经解决了另一个 BeagleBoneBlack 和一个 具有内置的自定义 Linux 构建的问题。 我的测试 BeagleBone 似乎具有硬件故障。

    内置配置:


    BR2_ARM=y
    BR2_cortex_A8=y
    BR2_ARM_FPU_NEON = y
    BR2_GLOBAL_PATCH_DIR="board/testo/beagleBoneTesto/patches"
    BR2_SSP_All=y
    BR2_RELRO_FULL = y
    BR2_foraling_source_2=y
    BR2_toolchain_BuildRoot_glibc=y
    BR2_PACKAGE_HOST_LINUX_HEADER_CUSTOM_4_14=y
    BR2_binutils_version_2_30_X=y
    BR2_GCC_VERSION_7_X=y
    BR2_toolchain_BuildRoot_CXX=y
    BR2_GCC_ENABLE_LTO=y
    BR2_TARGET_general_issue="Welcome to Testo BeagleBone "(欢迎使用 Testo BeagleBone)
    BR2_ROOTFS_DEVICE_CREASE_DYNAL_MDEV=y
    BR2_TARGET_general_Getty_port="ttyO0"
    BR2_TARGET_general_Getty_BAUDRATE_115200=y
    BR2_ROOTFS_OVERR="board/testo/beagleBoneTesto/add2rootfs"
    BR2_ROOTFS_POST_IMAGE_script="board/testo/beagleBoneTesto/post-image.sh"
    BR2_Linux_kernel=y
    BR2_Linux_kernel_custom_git=y
    BR2_Linux_kernel_custom_repo_url="github.com/.../linux.git"
    BR2_Linux_kernel_custom_repo_version="5d84ea71b463b8c98bad9fcd8d92e0781a0e5b2a"
    BR2_Linux_kernel_use_custom_config=y
    BR2_Linux_kernel_custom_config_file="board/testo/beagleBoneTesto/linux.config"
    BR2_Linux_kernel_dts 支持=y
    BR2_Linux_kernel_use_custom_dts = y
    BR2_Linux_kernel_custom_dts_path="board/testo/beagleBoneTesto/dts/AM335x-BBT.dts"
    BR2_PACKAGE_Busybox_config="board/testo/beagleBoneTesto/busybox.config"
    BR2_PACKAGE_Busybox_show_Others=y
    BR2_PACKAGE_Busybox_Individue_Binaries = y
    BR2_PACKAGE_Busybox_Watchdog=y
    BR2_PACKAGE_SWUPDATE=y
    # BR2_PACKAGE_SWUPDATE_INSTALL_Website 未设置
    BR2_TARGET_ROOTFS_EXT2=y
    BR2_TARGET_ROOTFS_EXT2_4=y
    BR2_TARGET_ROOTFS_EXT2_SIZE="256M"
    BR2_TARGET_UBoot=y
    BR2_TARGET_UBOOT_BUILING_SYSTEM_KCONFIG=y
    BR2_TARGET_UBOOT_CUSTOM_VERSION=y
    BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE ="2018.01"
    BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG=y
    BR2_TARGET_uBoot_custom_config_file="board/testo/beagleBoneTesto/uboot.config"
    BR2_TARGET_UBOOT_Needs DTC = y
    未设置# BR2_TARGET_UBOOT_FORMAT_BIN
    BR2_TARGET_UBOOT_FORMAT_IMG=y
    BR2_TARGET_UBOOT_FORMAT_CUSTOM=y
    BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin"
    BR2_TARGET_UBOOT_SPL=y
    BR2_TARGET_UBOOT_SPL_NAME="MLO"
    BR2_PACKAGE_HOST_DOSFSTOOLS=y
    BR2_PACKAGE_HOST_GENIMAGE=y

    BR2_PACKAGE_HOST_MTOOLS=y


    我下一步是在定制板上使用 am3358进行配置移植。

    感谢您的帮助!!

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

    Stefan、

    [引用 user="Stefan Blattmann">我已解决另一个 BeagleBoneBlack 和一个 具有内置的自定义 Linux 版本的问题。 我的测试 BeagleBone 似乎具有硬件故障。[/quot]

    我很高兴听到这个问题得到解决。 我要关闭此主题。 当您有新的项目问题时、请打开一个新的问题。 谢谢。