Openwrt编译 -- uboot修改波特率以及Openwrt使用115200波特率乱码问题
环境:Openwrt,MT7620、MT7688
一、修改默认的波特率
当前路径:uboot
在 ./lib_mips/board.c 中
初始化函数 board_init_f() 里面调用 init_baudrate 来初始化波特率
1 static int init_baudrate (void) 2 { 3 //uchar tmp[64]; /* long enough for environment variables */ 4 //int i = getenv_r ("baudrate", tmp, sizeof (tmp)); 5 //kaiker 6 gd->baudrate = CONFIG_BAUDRATE; 7 /* 8 gd->baudrate = (i > 0) 9 ? (int) simple_strtoul (tmp, NULL, 10) 10 : CONFIG_BAUDRATE; 11 */ 12 return (0); 13 }
而且在文件 ./include/configs/rt2880.h 中配置默认的波特率,将
1 #define CONFIG_BAUDRATE 57600
修改成
1 #define CONFIG_BAUDRATE 115200
使用make V=99完成编译
二、将Uboot中串口波特率更改为115200,那么在串口工具中如果还是用115200的时候可能会出现乱码
解决方案:
1、使用工具的问题,比如使用Shell 6、SecureCRT、Putty等等,或者可以使用XCOM进行验证
2、在串口工具里把波特率改成 117200 即可。
三、在openwrt SDK中将波特率修改成和Uboot中 115200 匹配的波特率
在这个地方修改波特率的时候出现了一点小意外,就是在修改了文件 target/linux/ramips/dts/mt7628an.dtsi (请注意是mt7628an.dtsi,因为我使用的就是此模块)中
1 bootargs = "console=ttyS0,115200";
之后,重新编译并且烧写到开发板上(因为Uboot的原因,此时的串口工具的波特率为 117200 )之后,还是在最后会出现乱码,将串口工具的波特率调成115200之后,还是乱码,又换成57600之后,能够正常显示,这说明之前的波特率的修改没有效果。
解决方案:
使用命令 make menuconfig 查看一下目前自己使用的硬件平台。
那么,查看一下对应的 dts 文件,有一个对应的 LINKIT7688.dts 文件,打开并编译,发现了如下的设置
1 chosen { 2 bootargs = "console=ttyS0,57600"; 3 };
应该是之前设置的波特率并此处的给替换了,到时在kernel启动过程中在最后才出现乱码,将他果断修改成
1 chosen { 2 bootargs = "console=ttyS0,115200"; 3 };
然后编译,烧写测试,大功告成!
请注意:
- 此处 Uboot 、openwrt的波特率都设置的的波特率是 115200,串口助手设置为 117200
- 不同的厂家的硬件平台,可能存在自己的配置的 dts 文件,需要查看在他们的 dts 文件中,是否有相关的重复的配置
- 经过实际的测试,mt7628an.dtsi 中的波特率设置实际没有效果,因为LINKIT7688.dts文件中对此设置有重新设置,但是如果换成MT7628.dts,那么 mt7628an.dtsi 中设置起作用(貌似是废话。。。)。
问题:
- 在目前的设置中(Uboot波特率 115200,串口工具 117200, openwrt的波特率为 115200)出现一个小的问题,就是在终端进行操作的时候,老感觉有点迟钝,如果运气好可能会出现乱码,这是因为串口工具 117200 的波特率和 openwrt 的 115200 的波特率的误差导致的部分指令不能识别的原因。
- 后来将openwrt的波特率设置为其他的值,比如 117200、113200等值,出现的情况跟115200的情况一样,但是整体来说不怎么影响使用,就是不太爽。如果有大佬知道应该怎么调整,请劳烦告知一下,谢谢啦