1.1:硬件原理
从RT5350的芯片手册上可以得知,RT5350共有两个串口,分别为UART Lite ,UART Full ,详细定义如下:
、
UART Lite就是我们习惯称为的串口1,作为系统的调试串口,通过这个串口,我们就可以看到Openwrt(Linux)系统的启动信息,并且可以通过串口来控制开发版。 UART Full 就是我们习惯成为的串口2,我们通常就是用他来做Wi-Fi串口,然后用来控制其他的串口设备。
通过上面的表格,我们发现串口1是和GPIO15,16复用的,而串口2是和GPIO7~14复用的。如果我们再详细看芯片手册,我们就会发现,串口2起始也是和I2S复用的:
1.2为了使用开发板的串口2,必须首先把串口使能,由于使用的是MPRA2这款路由的配置,在他的配置上串口被配置成了GPIO,用于控制LEDs,所以这里需要改为串口模式。修改非常简单,只需要修改dts的配置文件就可以了。首先修改 $<openwrt_dir>/target/linux/ramips/dts 目录下的RT5350.dtsi配置文件,是将那个扩展口给禁用了,所以我们看不到扩展串口。这里需要把那行去掉或者将状态改为“okay”;下面附上段源码:
uart@500 {
81 compatible = "ralink,rt5350-uart", "ralink,rt2880-uart", "ns16550a";
82 reg = <0x500 0x100>;
83
84 resets = <&rstctrl 12>;
85 reset-names = "uart";
86
87 interrupt-parent = <&intc>;
88 interrupts = <5>;
89
90 reg-shift = <2>;
91
92 pinctrl-names = "default";
93 pinctrl-0 = <&uartf_pins>;
94
95 status = "disabled";
96 };
修改后为:
uart@500 {
81 compatible = "ralink,rt5350-uart", "ralink,rt2880-uart", "ns16550a";
82 reg = <0x500 0x100>;
83
84 resets = <&rstctrl 12>;
85 reset-names = "uart";
86
87 interrupt-parent = <&intc>;
88 interrupts = <5>;
89
90 reg-shift = <2>;
91
92 pinctrl-names = "default";
93 pinctrl-0 = <&uartf_pins>;
94
95 status = "okay";
96 };
rt5350.dtsi配置文件中除了修改扩展口状态外,还需要修改设备节点。因为我们把扩展串口状态使能以后,它将在调试串口的前面,扩展串口变为ttyS0,而调试串口变为ttyS1,这里需要把调试串口的ttyS0,变为ttyS1,具体如下:
chosen {
13 bootargs = "console=ttyS0,57600";
14 };
上面的ttyS0,改为ttyS1 。
这样,配置文件就修改完了,但是扩展口相应引脚被设置为了GPIO模式,怎样才可以设置成为串口模式呢?需要修改MPRA2.dts这个配置文件,同样位于$<opwrt_dir>/target/linux/ramips/dts 目录下。把GPIO的设置项中uartf这个给去处掉,详细如下图:
(没有板子,别人的图)命令如下:echo helllo >/dev/ttyS0
在没有你的世界里,爱你,叶铮