6

我正在编译 OpenWrt(基于 Linux 的无线路由器),我在 OpenWrt 源代码中添加了一块板,我的板有两个 uart 端口,我可以声明并启用两个 uart 端口,这两个 uart 端口被命名为“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 节点强制使用设备名称吗?

4

2 回答 2

3

使用 devicetree 文件顶部的 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)

};

于 2017-05-11T20:39:12.433 回答
0

嗯,我将称之为错误。该/aliases/serial0作业应该按照 dashxdr 在她/他的回答中描述的那样工作,但事实并非如此。我还在使用基于 mt7620a 的设备和 OpenWRT 18.06.1 (Linux 4.14.64)。

于 2018-10-19T03:42:28.477 回答