Openwrt编译 -- uboot修改波特率以及Openwrt使用115200波特率乱码问题

2020-01-14 21:48发布

环境: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     };

然后编译,烧写测试,大功告成!

请注意:

  1. 此处 Uboot openwrt的波特率都设置的的波特率是 115200串口助手设置为 117200
  2. 不同的厂家的硬件平台,可能存在自己的配置的 dts 文件,需要查看在他们的 dts 文件中,是否有相关的重复的配置
  3. 经过实际的测试,mt7628an.dtsi 中的波特率设置实际没有效果,因为LINKIT7688.dts文件中对此设置有重新设置,但是如果换成MT7628.dts,那么 mt7628an.dtsi  中设置起作用(貌似是废话。。。)。

问题:

  • 在目前的设置中(Uboot波特率 115200,串口工具 117200, openwrt的波特率为 115200)出现一个小的问题,就是在终端进行操作的时候,老感觉有点迟钝,如果运气好可能会出现乱码,这是因为串口工具 117200 的波特率和 openwrt 115200 的波特率的误差导致的部分指令不能识别的原因。
  • 后来将openwrt的波特率设置为其他的值,比如 117200、113200等值,出现的情况跟115200的情况一样,但是整体来说不怎么影响使用,就是不太爽。如果有大佬知道应该怎么调整,请劳烦告知一下,谢谢啦
标签: