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/AM5728:AM5728上的 g_serial 存在问题

Guru**** 2553260 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/570254/linux-am5728-problem-with-g_serial-on-am5728

器件型号:AM5728

工具/软件:Linux

Linux 专家、

我们的客户在使用 AM5728 EVM 时遇到以下问题:

我在使 USB 端口(用作设备)正常工作时遇到了问题(未创建/dev/ttyGS0设备、当我将 USB 端口连接到 Windows PC 时、PC 未自动创建 COM 端口设备。  我最终确定需要加载 g_serial 模块。  加载了 g_serial 模块后、/dev/ttyGS0器件现在正在创建、 当连接到 Windows PC 时、会自动创建 COM 端口。

我现在正在尝试将小工具串行驱动程序静态链接到 Linux 内核,但设备模式下的 USB 似乎无法与此配置配合使用。 未创建/dev/ttyGS0器件、将 USB 端口连接到 Windows PC 不会自动创建 COM 端口器件。

您是否知道将小工具串行驱动程序静态链接到 Linux 内核需要其他哪些驱动程序?

其他意见:

当我尝试静态编译以支持小工具串行时、在主机模式下运行的其他 USB 端口停止工作。

有什么建议吗?


谢谢、

Darren

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

    [引用]您是否知道将小工具串行驱动程序静态链接到 Linux 内核需要哪些其他驱动程序?[/引用]

    他们可以导航到 drivers/usb/sgadget/legacy 并浏览 Kconfig 文件。 它定义了驱动程序相关性,即对于内核4.4.19,它们如下所示:
    配置 USB_G_serial
    TRISTATE "串行小工具(支持 CDC ACM 和 CDC OBEX)"
    取决于 TTY
    选择 USB_U_serial
    选择 USB_F_ACM
    选择 USB_F_serial
    选择 USB_F_OBEX
    选择 USB_LIBCOMPOSITE
    帮助
    串行小工具与 Linux-USB 通用串行驱动程序通信。
    此驱动程序支持可使用的 CDC-ACM 模块选项
    与 MS-Windows 主机或 Linux-USB 进行互操作
    "CDC-ACM"驱动程序。

    该驱动程序还支持 CDC-OBEX 选项。 您将需要一个
    自内核以来与/dev/ttyGS 通信的用户空间 OBEX 服务器
    本身不会实施 OBEX 协议。

    假设"y"以静态方式连接驱动程序、或"m"以构建 A
    名为"g_serial"的动态链接模块。

    如需更多信息、请参阅 Documentation/USB/gadget_serial.txt
    其中包括指令和所需的"驱动程序信息文件"
    使 MS-Windows 与 CDC ACM 配合使用。

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

    请访问 http://processors.wiki.ti.com/index.php/Linux_Core_DWC3_User%27s_Guide#Driver_Configuration

    所有相关的 USB 驱动程序都应内置于内核映像中。

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

    这些指令为 DRA7、OMAP5、AM437x 指定了 EVM。 他们应该为 AM5728-EVM 选择哪一个。

    哪些 USB 外设控制器应该在内核中进行配置?

    Darren
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Yordan。
    客户尝试过此操作、但无法创建/dev/ttyGS0。 他还尝试手动创建(在引导完成后)、但也不起作用。

    当启用静态链接选项时、USB 主机也会停止在其他 USB 端口上工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Darren、

    AM57x 使用与 DRA7、OMAP5和 AM437x 相同的 USB IP 系列、因此我提到的 wiki 也适用于 AM57x。

    DWC3 (DesignWare USB3 DRD 内核)是 UDC。

    如果您提供客户的.config (/proc/config.gz)、我可以帮助检查内核配置是否有任何问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Darren、

    感谢您向我发送 config.gz、它基本上是正确的、但我确认它在内置时不会使 g_serial 起作用。

    经过一些调查、在 v4.4之前的内核中似乎不支持 am57x 上的任何内置 USB 小工具驱动程序。 小工具驱动程序不与 dwc3 UDC 相关联。

    我还确认、此问题在社区 v4.9内核中似乎已得到解决、该内核是 TI 将在2017处理器 SDK 中迁移到的版本。

    您是否知道客户希望以 g_serial 而不是模块的形式进行构建的原因?

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

    箱、

    以下是客户的解释:

    多年来、我们一直在开发基于 Linux 的嵌入式产品、我们的政策是静态链接任何所需的驱动程序、除非我们需要传递参数以在内核加载时更改其行为。

    我们的新产品需要在主机模式下使用多个 USB 端口、在小工具模式下使用1个 USB 端口。

    是否有针对4.4.32内核的权变措施?

    TI 预计何时发布4.9内核2017 SDK。

    您能否发送一个与4.9内核一起使用的配置文件来静态链接支持 USB 主机和小工具模式?

    谢谢、

    Darren

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

    Darren、

    [引用 user="Darren "]是否有针对4.32内核的变通办法?

    将 USB 相关驱动程序构建为模块、然后在文件系统中添加以下文件、modprobe 将自动加载 g_serial.ko。

    $ cat /etc/modules-load.d/gserial.conf
    G_serial
    

    [引用 user="Darren "] TI 预计何时发布4.9内核2017 SDK。

    第一个基于 v4.9内核的 SDK 将于今年夏天发布。

    [引用 user="Darren "]您能否发送一个配置文件与4.9内核一起使用、以静态链接 USB 主机和小工具模式支持?[/quot]

    e2e.ti.com/.../7610._5F00_am57x_2D00_config.v4.9_2D00_g_5F00_serial_2D00_builtin.txt

    客户的.config 几乎是正确的、唯一缺失的是构建 xHCI 驱动程序并将 DWC3配置为双角色模式、而不是仅小工具。