如何在设备树(.dts)文件中指定UART设备的名称?

7
我正在编译OpenWrt(一款基于Linux的无线路由器),我向OpenWrt源代码添加了一个板子,我的板子有两个串口端口,我可以声明并启用这两个串口端口,这两个串口端口分别命名为“uartfull”和“uartlite”。
“uartlite”被注册到“/dev/ttyS1”,而“uartfull”被注册到“/dev/ttyS0”。但是我想让“uartlite”连接到“/dev/ttyS0”,而“uartfull”连接到“/dev/ttyS1”。
    uartlite@c00 {
        compatible = "ralink,rt5350-uart", "ralink,rt2880-uart", "ns16550a";
        reg = <0xc00 0x100>;

        resets = <&rstctrl 19>;
        reset-names = "uartl";

        interrupt-parent = <&intc>;
        interrupts = <12>;

        reg-shift = <2>;
    };

    uart@500 {
        compatible = "ralink,rt5350-uart", "ralink,rt2880-uart", "ns16550a";
        reg = <0x500 0x100>;

        resets = <&rstctrl 12>;
        reset-names = "uart";

        interrupt-parent = <&intc>;
        interrupts = <5>;

        reg-shift = <2>;

        status = "okay";
    };

这是我dts文件中的'uartfull'(名为uart)和'uartlite'节点。我在猜测是什么决定了设备名称(/dev/ttyS0 /dev/ttyS1等),我能否强制为这两个uart节点指定设备名称。


更改块的顺序。 - VivekD
2个回答

4

在设备树文件的顶部使用aliases字段:

aliases {
serial0 = &uart0; // becomes /dev/ttyS0
serial1 = &uart2; // becomes /dev/ttyS1
serial2 = &uart5; // becomes /dev/ttyS2 (not /dev/ttyS3)
serial3 = &uart4; // becomes /dev/ttyS3 (not /dev/ttyS2)

};


0
嗯,我认为这是一个bug。如dashxdr在她/他的回答中所描述的那样,/aliases/serial0赋值应该是有效的,但实际上并不是。我也在使用基于mt7620a的设备,运行OpenWRT 18.06.1 (Linux 4.14.64)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接