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.

[参考译文] AM6548:RS232 UART 器件树配置

Guru**** 2551110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1560190/am6548-rs232-uart-devce-tree-config

器件型号:AM6548


工具/软件:

尊敬的 TI 团队  

我正在尝试在 Uart2 上配置 RS232。 以下是器件树中的详细配置。

但是、环回测试失败、并且在使用示波器进行检查时没有从 TX 引脚获得任何波形。

root@am65xx-evm:~# dmesg | grep ttyS
[    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=PARTUUID=e1caf307-02 rw rootfstype=ext4 rootwait
[    0.951112] printk: console [ttyS2] disabled
[    0.963577] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 149, base_baud = 3000000) is a 8250
[    0.971243] printk: console [ttyS2] enabled
[    0.971252] printk: console [ttyS2] printing thread started
[    0.976924] 2820000.serial: ttyS4 at MMIO 0x2820000 (irq = 150, base_baud = 3000000) is a 8250
[    1.059445] 2810000.serial: ttyS3 at MMIO 0x2810000 (irq = 562, base_baud = 3000000) is a 8250

&main_pmx0{

....


rs232_pins_default: rs232_pins_default {
		pinctrl-single,pins = <
			AM65X_IOPAD(0x0288, PIN_INPUT, 6)   /* (Y27) GPIO1_66 */ /*RS232-RXD*/
			AM65X_IOPAD(0x0260, PIN_OUTPUT, 6)  /* (W28) GPIO1_56 */ /*RS232-TXD*/
		>;
	};

..


}

&main_uart2 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&rs232_pins_default>;
	power-domains = <&k3_pds 148 TI_SCI_PD_SHARED>;
};

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

    尊敬的 YunEn:

    内核器件树看起来正确。

    您如何测试 UART2 端口?

    如果您在测试 UART2 时发出“cat /proc/interrupts “命令、您是否会看到 2820000.serial 中断增加?

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

    尊敬的 Bin Liu:  

    I 直接对 RS232 连接器上的 TX 和 RX 引脚短路。 当我尝试使用echo "U" > /dev/ttyS4时、中的值/proc/interrupts增加了 2。

    root@am65xx-evm:~# cat /proc/interrupts
               CPU0       CPU1       CPU2       CPU3
     11:       8539       8689       8627       8538     GICv3  30 Level     arch_timer
     14:        749          0          0          0     GICv3  69 Level     32c00000.mailbox thr_011
     15:         37          0          0          0     GICv3 232 Level     2000000.i2c
     16:          0          0          0          0     GICv3 233 Level     2010000.i2c
     17:          0          0          0          0  MSI-INTA 12779616 Level     46000000.ethernet-tx0
     19:          0          0          0          0  MSI-INTA 12779618 Level     46000000.ethernet
     20:          0          0          0          0  MSI-INTA 12779619 Level     285c0000.dma-controller chan0
     21:          0          0          0          0  MSI-INTA 12779620 Level     285c0000.dma-controller chan1
     49:          0          0          0          0  MSI-INTA 12255536 Level     31150000.dma-controller chan0
     50:          0          0          0          0  MSI-INTA 12255537 Level     31150000.dma-controller chan1
     51:          0          0          0          0  MSI-INTA 12255538 Level     31150000.dma-controller chan2
     52:          0          0          0          0  MSI-INTA 12255539 Level     31150000.dma-controller chan3
     53:          0          0          0          0  MSI-INTA 12255540 Level     31150000.dma-controller chan4
     54:          0          0          0          0  MSI-INTA 12255541 Level     31150000.dma-controller chan5
     55:          0          0          0          0  MSI-INTA 12255542 Level     31150000.dma-controller chan6
    149:       1690          0          0          0     GICv3 224 Level     2800000.serial
    150:         20          0          0          0     GICv3 226 Level
    151:          0          0          0          0     GICv3 584 Level     47040000.spi
    152:          0          0          0          0     GICv3 585 Level     47050000.spi
    153:          0          0          0          0     GICv3 602 Level     46000000.ethernet
    154:          0          0          0          0      INTR 391 Level     310d0000.cpts
    155:        206          0          0          0     GICv3 168 Level     mmc0
    156:      15232          0          0          0     GICv3 169 Level     mmc1
    430:          0          0          0          0  MSI-INTA 12714499 Edge      285c0000.dma-controller chan0
    431:          0          0          0          0  MSI-INTA 12714506 Edge      285c0000.dma-controller chan1
    569:          0          0          0          0     GICv3 216 Level     2100000.spi
    570:          0          0          0          0     GICv3 217 Level     2110000.spi
    574:          0          0          0          0     GICv3 612 Level     TI-am335x-adc.0.auto
    575:          0          0          0          0     GICv3 613 Level     TI-am335x-adc.1.auto
    578:          0          0          0          0     GICv3 152 Level     xhci-hcd:usb1
    IPI0:      1886       5017       5094       8689       Rescheduling interrupts
    IPI1:      3366       1528        692        414       Function call interrupts
    IPI2:         0          0          0          0       CPU stop interrupts
    IPI3:         0          0          0          0       CPU stop (for crash dump) interrupts
    IPI4:         0          0          0          0       Timer broadcast interrupts
    IPI5:         0          0          0          2       IRQ work interrupts
    IPI6:         0          0          0          0       CPU wake-up interrupts
    Err:          0
    root@am65xx-evm:~# dmesg | grep ttyS
    [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=PARTUUID=e1caf307-02 rw rootfstype=ext4 rootwait
    [    0.911903] printk: console [ttyS2] disabled
    [    0.919399] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 149, base_baud = 3000000) is a 8250
    [    0.919642] printk: console [ttyS2] printing thread started
    [    0.919658] printk: console [ttyS2] enabled
    [    0.933728] 2820000.serial: ttyS4 at MMIO 0x2820000 (irq = 150, base_baud = 3000000) is a 8250
    [    1.016447] 2810000.serial: ttyS3 at MMIO 0x2810000 (irq = 562, base_baud = 3000000) is a 8250
    root@am65xx-evm:~#
    

    您能说明一下原因吗?

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

    /proc/interrupts 中的哪个条目增加了 2?

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

    每次运行时、中断 150 会增加 2 倍echo "U" > /dev/ttyS4。 我不知道为什么它不显示中断名称、但内核日志确认此中断已注册到 150。

    150: 20 0 0 0 GICv3 226 Level

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

    好的。 然后请检查您的电路板是否确实在环销 Y27 和 W28。

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

    回送仍然不显示任何消息、但为什么中断 150 在 I 时仍然增加 2echo "Test"

    root@am65xx-evm:~# cat /dev/ttyS4 &
    [1] 613
    root@am65xx-evm:~# echo "Test" > /dev/ttyS4
    root@am65xx-evm:~# cat /proc/interrupts
    CPU0 CPU1 CPU2 CPU3
    11: 13819 16175 17225 16665 GICv3 30 Level arch_timer
    14: 741 0 0 0 GICv3 69 Level 32c00000.mailbox thr_011
    15: 37 0 0 0 GICv3 232 Level 2000000.i2c
    16: 0 0 0 0 GICv3 233 Level 2010000.i2c
    17: 0 0 0 0 MSI-INTA 12779616 Level 46000000.ethernet-tx0
    19: 0 0 0 0 MSI-INTA 12779618 Level 46000000.ethernet
    20: 0 0 0 0 MSI-INTA 12779619 Level 285c0000.dma-controller chan0
    21: 0 0 0 0 MSI-INTA 12779620 Level 285c0000.dma-controller chan1
    49: 0 0 0 0 MSI-INTA 12255536 Level 31150000.dma-controller chan0
    50: 0 0 0 0 MSI-INTA 12255537 Level 31150000.dma-controller chan1
    51: 0 0 0 0 MSI-INTA 12255538 Level 31150000.dma-controller chan2
    52: 0 0 0 0 MSI-INTA 12255539 Level 31150000.dma-controller chan3
    53: 0 0 0 0 MSI-INTA 12255540 Level 31150000.dma-controller chan4
    54: 0 0 0 0 MSI-INTA 12255541 Level 31150000.dma-controller chan5
    55: 0 0 0 0 MSI-INTA 12255542 Level 31150000.dma-controller chan6
    149: 1219 0 0 0 GICv3 224 Level 2800000.serial
    150: 2 0 0 0 GICv3 226 Level 2820000.serial
    151: 0 0 0 0 GICv3 584 Level 47040000.spi
    152: 0 0 0 0 GICv3 585 Level 47050000.spi
    153: 0 0 0 0 GICv3 602 Level 46000000.ethernet
    154: 0 0 0 0 INTR 391 Level 310d0000.cpts
    156: 206 0 0 0 GICv3 168 Level mmc0
    157: 15252 0 0 0 GICv3 169 Level mmc1
    430: 0 0 0 0 MSI-INTA 12714499 Edge 285c0000.dma-controller chan0
    431: 0 0 0 0 MSI-INTA 12714506 Edge 285c0000.dma-controller chan1
    569: 0 0 0 0 GICv3 216 Level 2100000.spi
    570: 0 0 0 0 GICv3 217 Level 2110000.spi
    574: 0 0 0 0 GICv3 612 Level TI-am335x-adc.0.auto
    575: 0 0 0 0 GICv3 613 Level TI-am335x-adc.1.auto
    577: 1 0 0 0 GICv3 132 Level dwc3
    578: 0 0 0 0 GICv3 152 Level xhci-hcd:usb1
    IPI0: 7486 13936 12503 12426 Rescheduling interrupts
    IPI1: 10101 2879 1363 685 Function call interrupts
    IPI2: 0 0 0 0 CPU stop interrupts
    IPI3: 0 0 0 0 CPU stop (for crash dump) interrupts
    IPI4: 0 0 0 0 Timer broadcast interrupts
    IPI5: 0 0 0 0 IRQ work interrupts
    IPI6: 0 0 0 0 CPU wake-up interrupts
    Err: 0
    root@am65xx-evm:~#

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

    为了提供更多背景信息、我目前已从升级 内核 5.x 最终目的 内核 6.1. (最新的 TI SDK 09_03_05_02 )。 在硬件方面、我使用旧的 BSP (5.X) 版本进行了测试、一切都正常工作。

    但是、在使用进行测试时 6.1 DTS 出现问题。

    附件是 5.x 版本的 DTS 文件 。 目前、是与相关的器件树配置 RS232 (UART2) 、包括 pinctrl RS232 节点 、与相同 5.1 DTS

    如果有解决方案或您需要任何其他信息、请告知我。 非常感谢!e2e.ti.com/.../6557.k3_2D00_am654_2D00_base_2D00_board.txt

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

    尊敬的 YunEn:

    这是非常有用的信息 — 如果 UART 在内核 5.x 中工作、但在内核 6.1 中不工作、则肯定不是硬件问题。

    请附加适用于内核 5.x 和 6.1 的电路板 DTB(而非 DTS)文件。 我想比较问题是否在设备树中。

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

    尊敬的 Bin Liu:

    附带的这些文件是 5.1 和 6.1 版的设备树 Blob (DTB) 文件。 如果您需要任何其他信息、请告诉我。 谢谢!

    e2e.ti.com/.../DTB-File.zip

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

    我刚刚进行了测试、发现main_uart1 (RS485) 存在相同的问题。 驱动程序已正确加载、但仍然无法通信。

    [ 0.986258] 2820000.serial: ttyS4 at MMIO 0x2820000 (irq = 150, base_baud = 3000000) is a 8250
    [ 1.068592] 2810000.serial: ttyS3 at MMIO 0x2810000 (irq = 562, base_baud = 3000000) is a 8250

    中断也被触发。 每次使用后echo、它都会增加 2。

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

    尊敬的 YunEn:

    我看过两个 DTB、但没有看到任何明显的错误。 我将继续检查是否有其他事项需要检查。

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

    尊敬的 Bin Liu:  

    我昨天比较了两个 DTB 版本的内容。 引脚多路复用器和属性语法在这两者中是相同的。 但是、电源域似乎存在差异。 两者都是power-domains = <&k3_pds 148 TI_SCI_PD_SHARED>;、但结果显示0x070x08。 我不确定这是错误还是从内核 5.1 到 6.1 的正常修改。

    - power-domains = <0x07 0x93 0x00>;
    + power-domains = <0x08 0x93 0x00>;
    

    如果您有任何新发现或需要更多信息、请告知我。 谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但结果显示0x070x08。 我不确定这是错误还是从内核 5.1 到 6.1 的正常修改。

    不,他们不是。 这些数字是到“&k3_pds"节点“节点的相位、在 DT 编译时确定相位索引。

    如果您有任何新发现或需要更多信息、请告诉我。 谢谢。

    我目前没有任何其他想法、但将在下周继续。

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

    我注意到k3-am65-main.dtsi内核版本 5.1 中的文件包含

    reg-shift = <2>;  

    reg-io-width = <4>;

    但 6.1 版中缺少这些功能。 我不确定他们的目的是什么。 可以有人帮我解决这个问题吗?

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

    您好、我在办公室外一周、请期待收到延迟的回复。

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

    我已经解决了这个问题、谢谢。

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

    尊敬的 YunEn:

    您是否愿意解释问题所在以及如何解决?

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

    删除以下设置后、一切都正常工作。 从规范来看,所有的寄存器似乎是相同的,我不相信内核版本升级会导致任何差异。 我不知道为什么旧内核需要这些设置。

    reg-shift = <2>;  

    reg-io-width = <4>;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    删除以下设置后、一切都正常工作。 [/报价]

    这两行不在内核 6.1 DTS 中、为什么需要“删除“它们?