感谢网络各路大神的慷慨分享,不然无门可入!
用于和STM片子通信的,单片机的uart很快搞好,openwrt的uart配置太绕,但是设备树(dts)似乎是linux老大推进的。弄呗。。
- 默认情况,dev下有ttyS0-2,但只有ttyS0用于console。启动log看不到其他tty信息。
- cat ttyS1会报错:read error: I/O error, 程序里open后发数据,tx3上看不到信号。
- 打开 uart3:target/linux/ramips/dts/mt7621.dtsi
注释一句:
uartlite3: uartlite3@e00 {
compatible = "ns16550a";
reg = <0xe00 0x100>;
clock-frequency = <50000000>;
interrupt-parent = <&gic>;
interrupts = <GIC_SHARED 28 IRQ_TYPE_LEVEL_HIGH>;
reg-shift = <2>;
reg-io-width = <4>;
pinctrl-names = "default";
pinctrl-0 = <&uart3_pins>;
//status = "disabled";
};
打开target/linux/ramips/dts/MT7621.dts,注释uart3的复用
…
&pinctrl {
state_default: pinctrl0 {
gpio {
ralink,group = "i2c", "uart2", /*"uart3",*/ "rgmii2", "sdhci";
ralink,function = "gpio";
};
};
};
…
查找资料,有说修改mt7621.c的代码中uart相关的部分,在这个版本里似乎并不需要修改。总之我没改,数据出来了,底层代码略生涩。。。
4.编译,下载
5.启动log中有了ttyS1的信息:
[ 2.907721] console [ttyS0] disabled
[ 2.914735] 1e000c00.uartlite: ttyS0 at MMIO 0x1e000c00 (irq = 22, base_baud = 3125000) is a 16550A
[ 2.932740] console [ttyS0] enabled
[ 2.932740] console [ttyS0] enabled
[ 2.946502] bootconsole [early0] disabled
[ 2.946502] bootconsole [early0] disabled
[ 2.963194] 1e000e00.uartlite3: ttyS1 at MMIO 0x1e000e00 (irq = 23, base_baud = 3125000) is a 16550A
6. cat /dev/ttyS1不会报错,但也不能像console的ttyS0那样,输入什么就返回什么。
编程open ttyS1,写数据,则可以在tx3上看到数据波形。