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     };

然后編譯,燒寫測試,大功告成!

請注意:

  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的情況一樣,但是整體來說不怎么影響使用,就是不太爽。如果有大佬知道應該怎么調整,請勞煩告知一下,謝謝啦


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM