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.

[参考译文] AM3356:无法与/dev/ttyACM 通信

Guru**** 2487425 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1437069/am3356-communication-with-dev-ttyacm-is-not-possible

器件型号:AM3356

工具与软件:

你好、专家

我们正面临一个问题、请提供帮助

使用的 SDK 和内核如下所示:
μ・SDK 版本09.01.00.001
μ・Linux 内核版本6.1.46 (2023 LTS)

/dev/ttyACM0用于发送和接收 AT 命令、/dev/ttyACM1用于接收 GPS 数据。

配置 GPS 接收后、如果未从/dev/ttyACM1读取数据、

一段时间后、您将无法在/dev/ttyACM0.上发送或接收 AT 命令

/dev/ttyACM1每秒收到几十个句子。

从/dev/ttyACM1读取数据时、可以在/dev/ttyACM0.上发送和接收 AT 命令

以下 SDK 和内核版本以相同方式使用时不会出现此问题。

・SDK Version.06.03.00.106
・Linux 内核版本4.19.59+(2019 LTS)

・SDK 版本08.02.00.24
・Linux Kernel Versions.5.10.100 (2021 LTS)


该软件是供重用的。

请告诉我如何解决这个问题。

此致。

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

    嗨、Ohya-San、

    请解释哪个模块引发了/dev/ttyACM0和 ttyACM1器件模式?

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

    您好、Bin

    我们将向您提供信息。

    您需要的信息是什么?

    - dmesg

    $dmesg | grep ttyACM0
    cdc_acm 2-1:1.0: ttyACM0: USB ACM device
    
    $dmesg | grep ttyACM1
    cdc_acm 2-1:1.2: ttyACM1: USB ACM device

    - lsmod

    $lsmod | grep cdc_acm
    cdc_acm                24576  0

    - modinfo

    $modinfo cdc_acm
    filename:       /lib/modules/6.1.46-g1d4b5da681/kernel/drivers/usb/class/cdc-acm.ko
    alias:          char-major-166-*
    license:        GPL
    description:    USB Abstract Control Model driver for USB modems and ISDN adapters
    author:         Armin Fuerst, Pavel Machek, Johannes Erdfelt, Vojtech Pavlik, David Kubicek, Johan Hovold
    alias:          usb:v1519p0452d*dc*dsc*dp*ic*isc*ip*in*
     .....(omit)
    alias:          usb:v0424p274Ed*dc*dsc*dp*ic*isc*ip*in*
    depends:
    intree:         Y
    name:           cdc_acm
    vermagic:       6.1.46-g1d4b5da681 preempt mod_unload ARMv7 p2v8
    

    此致、

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

    嗨、Ohya-San、

    谢谢、我想我知道/dev/ttyACM0和 ttyACM1节点是通过连接的 USB 调制解调器创建的。

    [报价用户 id="606922" url="~/support/processors-group/processors/f/processors-forum/1437069/am3356-communication-with-dev-ttyacm-is-not-possible "]

    配置 GPS 接收后、如果未从/dev/ttyACM1读取数据、

    一段时间后、您将无法在/dev/ttyACM0.上发送或接收 AT 命令

    [报价]

    出现问题时、Linux 控制台是否打印任何消息?

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

    您好、Bin

    发生这种情况时、Linux 控制台上不会显示任何内容。

    此致、

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

    嗨、Ohya:

    请检查内核.config 以查看是否启用了"CONFIG_USB_TI_CPPI41_DMA"选项。 如果是、请尝试将其禁用、以查看问题是否仍然发生。

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

    您好、Bin

    启用了"CONFIG_USB_TI_CPPI41_DMA"选项、因此我禁用了该选项并进行了检查。

    它没有解决问题。

    在以下版本中、无论启用还是禁用、都不会出现任何问题。

    ・SDK 版本08.02.00.24
    ・Linux Kernel Versions.5.10.100 (2021 LTS)

    此致、

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

    嗨、Ohya-San、

    好的、感谢运行测试。

    要确定导致问题的内核更改、可以使用内核源代码上的"git bisect"工具、这将缩小导致问题的内核提交 ID 的范围。

    我建议您在上游内核上执行"git bisect"过程、而不是在 SDK 内核上执行。 近年来、TI 并没有做过多的 AM335x USB 相关内核的开发工作、因此上游内核中的 USB 驱动程序应该与 TI SDK 内核相同。

    TI SDK v9.1内核与上游内核 v6.1.46相当。 首先检查这个内核是否有这个问题;

    接下来、检查上游内核 v6.1-rc1是否存在问题。 如果没有、则可以在上游内核 v6.1-rc1和 v6.1.46之间使用"git bisect"。

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

    您好、Bin

    我发现这是由某些内核更改引起的。

    您能调查并修复它吗?

    这可能是一个致命的问题。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我发现这是由某些内核更改引起的。

    您找到了什么?

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

    您好、Bin

    对不起、我找不到任何内容

    我误解了 Bin 的回答。

    我们需要调查原因是什么。

    此致、

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

    嗨、Ohya-San、

    正如我解释过如何使用"git bisect"、我希望您能够对其进行调试。

    我没有具有两个 ACM 接口的 USB 器件来重现和调试问题。