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.

[参考译文] AM4376:Linux SDK 8.02.00.24的 RS-485换向问题(内核5.10)

Guru**** 691310 points
Other Parts Discussed in Thread: AM4376, AM4372
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1203290/am4376-rs-485-commutation-issue-with-linux-sdk-8-02-00-24-kernel-5-10

器件型号:AM4376

您好专家

我们的客户目前正在开发小改动模型,并将 SDK ( 4.2.0.9版)更新到最新的 Linux SDK 版本( 08.02.00.24版)。 因此、客户现在遇到了换向缺失问题。 客户正在使用 OMAP-serial.c 文件,当他们将 OMAP-serial.c (08.02.00.24 版)替换为 OMAP-serial.c (4.2.0.9版)时,此问题似乎已解决。

我发现 E2E 论坛中也有类似的问题报告主题、所以我将此 URL 分享给客户。 之后、我收到了以下问题。

  1. 客户了解 OMAP-serial.c 已有很长时间没有保留、但客户询问 TI 是否可以使用 OMAP-serial.c (4.2.0.9版)。 我相信这是很难回答。 不过、我可以向您的专家提供有关这些建议/评论吗?
  2. 关于8250-omap.c、客户了解到这是新的 UART 驱动程序… 客户希望执行 RS-485换向。 在这种情况下、客户认为他们需要控制 RTS/CTS。 这意味着、当客户想要传输数据时、他们需要将"高"设置为 RTS、然后当客户想要接收数据时、他们需要将"低"设置为 RTS。 但是、似乎无法控制 RTS 信号。 因此、 客户询问这种行为是否有任何解决方案。

我可以向您的专家提供有关它们的建议/意见吗?

此致、

宫崎市

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

    尊敬的 Miyazaki-San:

    leo wang2 说:
    客户理解 OMAP-serial.c 已经有很长时间没有维护了、但是客户问 TI 是否可以使用 OMAP-serial.c (4.2.0.9版)。 我相信这是很难回答。 但是,我可以向您的专家提供有关这些建议/意见吗?

    我们对此没有任何意见、因为我们不会验证该情形。

    [quote userid="38951" url="~/support/processors-group/processors/f/processors-forum/1203290/am4376-rs-485-commutation-issue-with-linux-sdk-8-02-00-24-kernel-5-10关于8250-omap.c、客户了解到这是一款新的 UART 驱动程序… 客户希望执行 RS-485换向。 在这种情况下、客户认为他们需要控制 RTS/CTS。 这意味着、当客户想要传输数据时、他们需要将"高"设置为 RTS、然后当客户想要接收数据时、他们需要将"低"设置为 RTS。 但是、似乎无法控制 RTS 信号。 因此, 客户询问此行为是否有任何解决方案。

    我们需要客户配置和问题描述的详细信息。

    是否使用原生 RTS 引脚? 还是使用基于 GPIO 的 RTS 引脚?

    如何配置 RS485模式? 通常、打开 UART 端口时、应在用户空间应用程序 termios 设置中启用该功能。

    RTS 极性是反向的还是根本不切换? RTS 极性可以使用内核设备树进行调整。 有关详细信息、请参阅内核器件树绑定文档:  /Documentation/devicetree/bindings/serial/rs485.yaml.

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

    您好、Bin、

    感谢您的评论。

    我将专家的意见与客户分享并收到了客户的反馈。 客户正在将 SN65HVD10DRG4用作 RS-485收发器、AM4376似乎一直为 RTS 输出"低"。 这意味着、客户能够仅接收数据。  在使用8250-omap.c 的情况下、客户按如下方式对其进行了配置。

    uart2_pins_default: uart2_pins_default {
                  pinctrl-single,pins = <
                                AM4372_IOPAD(0xa54, PIN_OUTPUT | MUX_MODE7 ) /* (R24) spi4_d0.gpio5[5] */
                                AM4372_IOPAD(0x980, PIN_INPUT_PULLUP | MUX_MODE0 ) /* (K21) uart1_rxd.uart1_rxd */
                                AM4372_IOPAD(0x984, PIN_OUTPUT_PULLDOWN | MUX_MODE0 ) /* (L21) uart1_txd.uart1_txd */
                  >;
    };
    
    &uart1 {
                  status = "okay";
                  pinctrl-names = "default";
                  pinctrl-0 = <&uart2_pins_default>;
                  rts-gpios=<&gpio5 5 GPIO_ACTIVE_HIGH>;
                  rs485-rts-active-high;
                  rs485-rts-delay = <1 1>;
                  linux,rs485-enabled-at-boot-time;
    };
    
    

    如何配置 RS485模式? 通常、当打开 UART 端口时、应在用户空间应用程序 termios 设置中启用该功能。

    Snice "Linux, rs485-enabled-at-boot-time;"如上所述设置、客户假设 AM4376将在 RS485模式下引导。 是这样吗? 客户询问他们是否需要额外配置任何内容。

    然后、客户使用"stty"作为配置工具、但客户提到 stty 无法更改为 RS485模式(stty:无效参数'rs485')。 因此、客户希望知道从 shell 设置"RS485 mode"的命令。

    请我们进一步提供您对这些建议/意见吗?

    非常感谢您一如既往地提供的帮助。

    此致、

    宫崎市

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

    尊敬的 Miyazaki-San:

    我不确定如何使用 stty 命令设置为 RS485模式、我从未使用过它。 我使用以下工具测试 RS485。

    https://github.com/cbrake/linux-serial-test

    顺便说一下、客户器件树显示 GPIO5_5用于 RS485 DE 控制。 请确保客户正在使用最新 SDK 8.6中的内核。 我们有客户反馈内核5.10的早期版本不能完全支持基于 GPIO 的 RS485 DE 控制。 该问题应该在最新的5.10内核中解决。

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

    抱歉、我刚刚意识到客户使用的是 AM437x、最新的 SDK 是8.2。

    您能否作为客户使用以下内核进行测试?

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tag/?h=08.06.00.007

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

    您好、Bin、

    感谢您的评论。

    我与我们的客户分享了您的意见。 我收到了他们的反馈。 他们…在这个时候很难更新内核版本 但是、如果可以创建与 RS485相关的补丁文件、客户提到他们将能够对其进行评估。 有可能吗?   如果不是这样、客户正在考虑使用旧版本的 OMAP-serial.c 并在客户 评估时保证它。

    然后、客户希望知道 OMAP-serial.c 何时不再受支持。 您会解释一下吗?

    此致、

    宫崎市

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

    尊敬的 Miyazaki-San:

    我们无法为 SDK8.2提供补丁。 如您所知、 处理器 SDK (高达 SDK8.5)并未正式为任何 Sitara 器件支持 RS485、因此 RS485功能尚未经过 Linux 软件开发团队的验证。 我一直尽力帮助客户在他们的项目中启用 RS485。 不过、AM437x 在 EVM 上没有 RS485收发器、因此我要创建设置、再次验证 RS485功能并为您的客户创建补丁、这一点很重要。 请理解。

    通过查看内核源代码、OMAP-serial.c 中的最后一个更新位于2021年4月18日(git commit 565e7c98d3328050b5eecc7f0a2ea3681c15657d)。 但请参阅 git commit 6cfd8117f5722689a9125b5b302dbe9025b663 (见下方链接)、它向内核添加了 AM437x 初始支持、使用了8250-omap.c drvier。 omap-serial.c 从未在 AM437x 上使用/验证过。

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm/boot/dts/am4372.dtsi?id=6cfd8117f5722689a9125b5b30302dbe9025b663#n45

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

    您好、Bin、

    感谢您的澄清。

    我与我们的客户分享了您的意见。

    此致、

    宫崎市