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/processor-SDK-AM335X:内核4.4的 RS485问题

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/571538/linux-processor-sdk-am335x-rs485-issue-with-kernel-4-4

器件型号:PROCESSOR-SDK-AM335X

工具/软件:Linux

您好!

我正在尝试在内核4.4.x 中使 RS485功能在我们的平台上工作、但遇到了一些问题。

我对 TI-kernel 4.4.4.19 (ti-processor-sdk-linux-am335x-evm-03.01.00.06)进行了以下修改:

内核配置:

   禁用 CONFIG_SERIAL_8250_OMAP
   启用  CONFIG_SERIAL_OMAP

 2.设备树: (我使用 uart2作为 RS485端口)

uart2_pins:uart2_pins{                                                                                                                                                                             
               pinctrl-single、pins =<
                       0xc4 (PIN_OUTPUT | MUX_MODE7)          /* LCD_data9.GPIO2[15]*/
                       0x150 (PIN_INPUT | MUX_MODE1)          /* spi0_SCLK.uart2_RxD *
                       0x154 (PIN_OUTPUT | MUX_MODE1)         /* spi0_d0.uart2_TxD *
               >;
 };

uart2{(&U)
       pinctrl-names ="default";
       pinctrl-0 =<uart2_PINs>;                                                                                                                                                                           
       状态="正常";
       RTS-GPIO =<&GPIO2 15 GPIO_ACTIVE_HIGH_>;
       RS485-RTS-高电平有效;
       RS485-RTS-DELAY =<0 0>;
       Linux、在引导时启用 RS485;
};

RS485只能在2~3 μ 字节中正确发送/接收数据。

我设置了两个器件、并通过以下命令进行了测试:


器件 A:

root@AM335x-EVM:~# stty -F /dev/ttyO2 115200 -echo

root@AM335x-EVM:~# echo "abcdefghij">/dev/ttyO2
root@AM335x-EVM:~# echo "abcdefghij">/dev/ttyO2

器件 B:

root@AM335x-EVM:~# stty -F /dev/ttyO2 115200 -echo
root@AM335x-EVM:~# cat /dev/ttyO2
abcdedghIn
mfabdghkj


相同的配置和硬件可以在内核3.14.x 上正常工作

我尝试将 OMAP-serial.c 从内核3.14.x 移植到内核4.4.x、但结果相同。

请给我一些帮助。

谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您能否尝试使用8250_OMAP 驱动程序、请参阅此主题以获取参考:
    e2e.ti.com/.../514549

    具体而言、来自 Brad 的答案。

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

    您好!

    我找到了根本原因。 我使用相同的图像测试了两个器件的 RS485传输。

    由于 在器件树中设置了在引导时启用 RS485、因此在引导时默认开启 RS485。

    在内核4.4中、将调用 serial_omap_start_tx、但串行端口仅用作读取端口。

    因此、当运行命令"cat /dev/ttyO2时、GPIO 引脚将由两侧控制。

    解决方案不是在启动时启用 RS485。 只需在 AP 中通过 ioctl 启用 RS485。