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.

[参考译文] SK-AM62P-LP:UART 通信问题

Guru**** 2826855 points

Other Parts Discussed in Thread: AM62P

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1627565/sk-am62p-lp-issue-with-the-uart-communication

器件型号: SK-AM62P-LP
主题: AM62P 中讨论的其他器件

尊敬的专家:

我们目前正在将 AM62P 评估板与 Debian Trixie OS 配合使用。

在我们的应用中、UART5 (/dev/ttyS5) 配置为主器件、设置如下:

  8 位模式

   全双工

  无奇偶校验

  115200 波特率

  1 个停止位

从控制器配置匹配的参数。 最初、通信按预期工作、器件之间的数据交换成功。

但是、在长时间运行期间、我们观察到 UART 主器件侧有一个问题。 具体来说:

从器件继续正确传输数据。使用 PicoScope 串行解码器、我们可以在 AM62P 的 UART RX 引脚上看到有效数据。

主器件上的 UART 接收缓冲区也正在正确更新(我们持续监控缓冲区大小以进行调试,它按预期变化)。

我们能够从缓冲区中读取数据。

尽管如此、应用程序不会反映更新的数据。

如果我们执行下电上电并重新启动应用程序、系统将恢复正常运行。

问题:

1.如果从器件正确发送,主器件缓冲区正在接收数据,为什么应用程序无法更新?

2.这是否与驱动程序问题、缓冲、线程或用户空间中的阻塞条件有关?

3.对于 AM62P (Debian Trixie) 上的 UART 处理、是否存在已知问题或建议的调试步骤?

请提供任何指导或建议。

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

    尊敬的 Raj:

    [引述 userid=“597546" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1627565/sk-am62p-lp-issue-with-the-uart-communication

    主器件上的 UART 接收缓冲区也正在正确更新(我们持续监控缓冲区大小以进行调试,它按预期变化)。

    我们能够从缓冲区中读取数据。

    [/报价]

    请解释缓冲区的具体情况? 还是 Linux 用户空间中的某个位置? 任何其他日志或信息都有助于我了解 RX 路径中数据到达的位置。

    尽管如此、应用程序不会反映更新的数据。

    请解释什么是应用程序、您自己的程序或来自开源社区的内容?

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

    尊敬的 Bin:

    我们目前在主器件端使用 UART 内核驱动程序进行通信。 在我们的应用中、我们使用 Linux 系统调用来检查内核缓冲区中可用的字节数:

    ioctl(fd, FIONREAD, &bytes_avail);

    由于我们在每个周期中传输 10 个字节、因此bytes_avail在运行期间观察到缓冲区大小 () 发生变化、这是预期的行为。

    在附加测试中、我在后台监控串行接口状态。 状态输出表示系统工作正常、没有报告错误。 RX 和 TX 字节计数器也在 expected.please 中进行更新、以查找所附的屏幕截图以供参考。

    如果需要进一步分析或验证、请告知我。

    此致、
    Rajkumar。



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

    尊敬的 Rajkumar:

    首先,我从来没有看到任何终端程序使用 FIONREAD ioctl。 然后我搜索了内核 TTY 驱动程序框架、但我看不到大多数 TTY/串行驱动程序都支持 FIONREAD、AM62x UART 不使用的 ipwireless 和 HDLC 除外。 我不知道这个 ioctl 是如何在你的程序中使用的。

    无论如何、请解释您的程序、它如何从 UART 读取以及它是如何卡住的?