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/AM5718:在 AM571X idk 平台上以器件模式配置 USB2 (J45)端口。

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/598257/linux-am5718-configuring-the-usb2-j45-port-in-device-mode-on-am571x-idk-platform

器件型号:AM5718

工具/软件:Linux

您好!

目标:AM571X IDK

问题描述:


我想在器件模式下配置 AM571X idk 平台 USB2端口。 是否有人可以建议在设备模式下配置 USB2端口所要遵循的步骤?

谢谢、

Kishore

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

    您是否查看过本指南:
    processors.wiki.ti.com/.../Processor_SDK_Linux_USB

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

    Yordan、您好!

    从链接中提供的步骤中、我可以选择配置。 我没有获取我的配置文件、而是采用了默认配置文件"tisdk_am57xx-EVM-rt_defconfig"、因为它具有在器件模式下运行 USB 端口2、端口1所需的所有配置。

    无法在设备模式下将 USB 端口1显示为 Linux 主机 PC 的存储设备、以下是所执行的步骤。

    对于在器件模式下使用 USB1、USB2端口、遵循以下步骤。

    1)内核配置文件为"tisdk_am57xx-EVM-RT_defconfig"。

    2) 2)通过在"am571x-idk-common.dtsi"文件中设置"dr_mode"创建了 am571x-idk.dtb、如下所示。

            USB1{(&S)

           DR_MODE ="外设";

             };

            USB2{

           DR_MODE ="外设";

           };

    3)我已使用新构建的内核映像 am571x-idk.dTB 文件进行引导,并进行了上述更改。

    4) 4)为了测试 USB 端口1的 USB 器件模式功能、我尝试将 AM571X -IDK 平台显示为具有备用器件 SDcard 的大容量存储(Partition0:boot、Partition1:root)。

    命令:modprobe g_mass 存储文件=/dev/mmcblk0p2

    我已将 USB 电缆从 AM571X-idk 平台的 USB 端口1连接到主机 PC。 但是从主机 PC 中、没有连接大容量存储设备、在主机 PC 的 dmesg 中找不到消息。

    附加了 AM571X-idk platform.e2e.ti.com/.../2625.cutecom_5F00_log1.txt 上的 lsmod 输出、dmesg 输出

    是否缺少任何模块加载以将 am571x 显示为主机 PC 的 USB 存储设备?

    提前感谢。

    谢谢、

    Kishore

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

    您是否尝试过 f_mass 存储?

    此外、驱动程序本身在 drivers/USB/gadget/function/f_mass storage.c 的开头部分有一些说明、请看一下。

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

    Yordan、您好!

    感谢您的支持。

    在下面的设置中、USB2端口通过命令"modprobe g_mass _storage file=/dev/mmcblk0p2 "在器件模式下运行。  

    USB1{(&S)

           DR_MODE ="主机";

            };

            USB2{

          DR_MODE ="外设";

           };

    与最后注释中提供的 cutecom 日志不同、当前引导的电路板 lsmod 在"xhci_plat_hcd          5083 0" xHCI 控制器 driver.e2e.ti.com/.../5001.cutecomlog2.txt 上有所不同

    1. 是否还需要加载 xCHI 控制器驱动程序?
    2. 在命令"modprobe g_mass 存储文件=/dev/mmcblk0p2中、我没有给出任何 DWC3 USB 控制器编号、如1或2、默认情况下、USB 2在器件模式下工作。 如果我在设备模式下配置了 USB1、USB2控制器,并且我想通过 USB1控制器将 SD 卡 mmcblk0p2导出为后备存储,在这里我可以在 g_mass 存储中指定控制器编号?

    谢谢、

    Kishore

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

    [引用 user="Siva Naga Kishore Kampili"]是否还需要加载 xCHI 控制器驱动程序?

    DTS 配置 USB1 dr_mode = host、因此需要 xhci 驱动程序作为主机运行。

    [引用 user="Siva Naga Kishore Kampili"]如果我在设备模式下配置了 USB1、USB2控制器,并且我想通过 USB1控制器将 SD 卡 mmcblk0p2导出为后备存储,我可以在 g_mass 存储中指定控制器编号?

    我的第一个问题是您在定制板或 TI AM571x-IDK EVM 上执行此操作? IDK EVM 的 USB1端口设计为仅主机模式、因此您无法让内核使其在器件模式下工作。

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

    您好、Bin Liu、

    • 是否还需要加载 xCHI 控制器驱动程序?

    DTS 配置 USB1 dr_mode = host、因此需要 xhci 驱动程序作为主机运行。

    是的、我同意 AM571X idk 平台将 USB1端口固定为主机。 我错误地更改了 DTS 文件中的 USB1、USB2 dr_mode ="外设"、并使用 g_mass 存储命令将 USB2端口作为器件连接到主机 PC。 因此、在 AM571X idk 平台上、在器件模式下的 USB1端口应该存在问题、但在将 USB2作为器件连接到主机 PC 时、如果将 xHCI 驱动程序加载到正确的位置、应该不会出现问题?

    • 如果我在设备模式下配置了 USB1、USB2控制器,并且我想通过 USB1控制器将 SD 卡 mmcblk0p2导出为后备存储,在这里我可以在 g_mass 存储中指定控制器编号?

    我的第一个问题是您在定制板或 TI AM571x-IDK EVM 上执行此操作? IDK EVM 的 USB1端口设计为仅主机模式、因此您无法让内核使其在器件模式下工作。

    是的、我使用的是 TI AM571X IDK 平台。 我提出这个问题是为了以后的目的,以确认只为特定设备控制器加载了大容量存储小工具驱动程序。

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

    [引用用户="Siva Naga Kishore Kampili"]

    我错误地更改了 DTS 文件中的 USB1、USB2 dr_mode ="外设"、并使用 g_mass 存储命令将 USB2端口作为器件连接到主机 PC。 因此、在 AM571X idk 平台上、器件模式下的 USB1端口应该存在问题、但将 USB2作为器件连接到主机 PC 时、如果将 xHCI 驱动程序加载到右侧、则不应该出现问题?

    我从未尝试为仅主机端口设置 dr_mode =外设、因为它无效、 但我相信您看到的 USB2问题是由于这个原因、现在您有两个 UDC 控制器、在使用 modprobe 加载小工具驱动程序时无法指定要使用的 UDC、 但小工具驱动程序绑定到系统找到的第一个小工具驱动程序、我想在您的情况下它是 USB1、因此 USB2没有与关联的小工具驱动程序。 这就是为什么您看到 USB2在器件模式下不工作的原因。

    要验证此推测、请检查/sys/class/udc 下每个 UDC 的 uevent 条目内容、以查看哪个 UDC 具有小工具驱动程序。

    [引用 user="Siva Naga Kishore Kampili">是的、我使用的是 TI AM571X idk 平台。 我提出这个问题是为了以后的目的,以确认只为特定设备控制器加载了大容量存储小工具驱动程序。

    我在上面的评论是否对其进行了解释? 如果您有多个 UDC 并且希望使用特定的 UDC、而不是 modprobe、则可以使用 USB 小工具 configfs 来定义小工具、然后可以指定小工具驱动程序绑定到哪个 UDC。

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

    您好、刘斌、Yordan

    非常感谢您的支持。

    • 我同意 Bin 注释、并通过不同的 dr_mode 配置验证了/sys/class/udc。
    • 我将介绍 USB 小工具 configfs、感谢您的指导。

    谢谢、

    Kishore

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

    以下是我首选的 USB 小工具 configfs 文档供您参考
    -内核文档:文档/USB/gadget_configfs.txt
    Andrzej 的演讲: events.linuxfoundation.org/.../LinuxConNA-Make-your-own-USB-gadget-Andrzej.Pietrasiewicz.pdf