OpenWRT(RT5350) 默認使能一個串口(uartlite) ,當做console口了,另外一個串口(uartf)與gpio復用。
在查找資料的過程中,發現在新的內核中使用到了設備樹(device tree)的概念,使用dts文件描述SOC的所有資源。
針對RT5350平台,系統相關配置文件有如下幾個:
1、~/openwrt/build_dir/target-mispel_24kec+dsp_musl-1.1.10/linux-ramips_rt305x/linux-3.10.49/arch/mips/ralink/rt305x.c
2、~/openwrt/build_dir/target-mispel_24kec+dsp_musl-1.1.10/linux-ramips_rt305x/linux-3.10.49/drivers/pinctrl/pinctrl-rt2880.c
3、~/openwrt/target/linux/ramips/dts/rt5350.dtsi
4、~/openwrt/target/linux/ramips/dts/MPRA2.dts
兩個C文件主要是針對硬件平台相關接口寄存器定義,與dts文件密切相關,添加調試信息做了跟蹤,並不需要修改。
兩個dts文件主要是對接口的配置,如系統啟動輸出串口設置,gpio口,spi,i2c接口設置等;
下面開始配置串口,使能兩個串口:(關鍵的修改在兩個dts文件)
1、MPRA2.dts中將state_default從以下內容:
gpio { ralink,group = "i2c", "jtag", "rgmii", "mdio", "uartf"; ralink,function = "gpio"; };
修改成:
gpio { ralink,group = "i2c", "jtag", "rgmii", "mdio"; ralink,function = "gpio"; }; uartf { ralink,group = "uartf"; ralink,function = "gpio uartf"; };
2、MPRA2.dts中注釋掉該文件最后gpio_export的所有內容。
3、rt5350.dtsi需要修改bootargs以使uartlite仍然作為console:
(開啟uartf之前,uartlite為ttyS0作為console的,開啟uartf之后,uartf成為ttyS0,uartlite變為ttyS1)
chosen { bootargs = "console=ttyS1,57600"; };
4、rt5350.dtsi中釋掉uart@500中的status = “disabled”;
// status = "disabled";
至此,兩個串口使能完畢!