本文主要介紹基于瑞薩64位MPU RZ/G2L,討論uboot下非常規(guī)波特率115200的支持方法,用于解決客戶對uboot下特殊波特率的需求,供客戶參考。
部分客戶在MPU的uboot調(diào)試過程中,希望能支持常見的115200波特率之外的其他波特率,有串口接收終端方面的原因,終端希望使用比較低的波特率,或者是希望使用比較高的波特率輸出信息更快。還有比較普遍的原因,就是部分客戶希望做一個(gè)簡單的加密功能,因?yàn)槭褂闷渌浅R姴ㄌ芈实脑?,如果終端還是設(shè)定常見的115200波特率,MPU啟動(dòng)時(shí)的uboot打印信息就會(huì)在終端上面顯示亂碼,從而實(shí)現(xiàn)一種加密目的。
有兩種方式可以達(dá)到這種目的:
(均以9600新波特率為例,串口終端軟件是Tera Term)
1在uboot的配置文件里面設(shè)定默認(rèn)波特率
RZ/G2L的uboot配置文件是u-boot-source/configs/smarc-rzg2l_defconfig。
如果不修改這個(gè)配置文件,編譯出來的uboot鏡像里面會(huì)使用默認(rèn)的波特率115200,這個(gè)默認(rèn)值是在u-boot-source/drivers/serial/Kconfig里面設(shè)定的,如下所示:
如果想修改成其他波特率,可以在上述defconfig文件里面添加一行:
CONFIG_BAUDRATE=9600
如下添加到該文件尾部即可:
(uboot源碼需要已經(jīng)支持新波特率9600,后面有說明)
然后,重新編譯一遍uboot,即可得到修改了初始默認(rèn)波特率的uboot鏡像文件。
注意
uboot發(fā)生了變化時(shí),需要重新編譯一遍Trusted firmware,以生產(chǎn)正確的BL2鏡像。
實(shí)際測試過程中,很可能會(huì)遇到一個(gè)現(xiàn)象:
燒寫了新的Trusted firmware和uboot,重啟板子之后,發(fā)現(xiàn)uboot還是使用的之前的波特率115200,終端設(shè)定9600波特率反而顯示亂碼,設(shè)定115200波特率才正常。
這是因?yàn)樾薷闹?,uboot里面使用了115200波特率,而且將這個(gè)波特率保存到了uboot環(huán)境變量baudrate,而uboot啟動(dòng)之后,會(huì)首先加載環(huán)境變量區(qū)域的所有環(huán)境變量,然后根據(jù)環(huán)境變量115200波特率來設(shè)定當(dāng)前使用波特率,代碼里面設(shè)定的是默認(rèn)波特率,只有在環(huán)境變量區(qū)域無效或者沒有執(zhí)行過saveenv命令的情況下,才會(huì)被用到。這種情況下,可以參考下述方式2)來切換到希望使用的波特率。
2在uboot啟動(dòng)之后,使用uboot命令修改
默認(rèn)波特率
在某些情況下,可能不希望或者不能修改uboot的配置文件來修改默認(rèn)波特率,這時(shí)可以在線修改成需要的波特率。(uboot源碼需要已經(jīng)支持新波特率9600,后面有說明)
從115200切換到9600波特率:
Uboot下運(yùn)行setenv baudrate 9600命令之后,會(huì)提示切換串口終端軟件波特率到9600bps,然后按Enter鍵。這時(shí)打開終端軟件的Setup -> Serial port…,可以在彈出對話框中選擇9600波特率,然后點(diǎn)擊New Setting按鍵,就會(huì)關(guān)閉對話框切換至終端顯示界面,波特率已經(jīng)切換到了9600bps:
然后,安裝提示要求,按一次Enter按鍵,即可切換成功波特率,不會(huì)顯示亂碼:
此后,終端界面就會(huì)使用9600bps波特率,如果啟動(dòng)Linux kernel,會(huì)顯示亂碼,因?yàn)長inux kernel波特率默認(rèn)115200,需要兩邊波特率保持一致。
下面討論一下uboot源碼層面波特率支持問題。默認(rèn)情況下,uboot源碼僅僅支持配置115200bps波特率,現(xiàn)在需要支持新的其他波特率,所有源碼層面也要配合修改,否則上面的兩種波特率切換方法都不成功。還是以新增9600波特率為例加以說明,如果客戶需要支持其他波特率,可以找對口FAE尋求幫助,瑞薩會(huì)提供對應(yīng)補(bǔ)丁給客戶。
1首先修改一個(gè)數(shù)組,添加新波特率
文件:
u-boot-source/ include/configs/smarc-rzg2l.h
#define CONFIG_SYS_BAUDRATE_TABLE { 115200,9600}
2添加新波特率對于寄存器配置代碼
文件:
u-boot-source/drivers/serial/serial_sh.c
函數(shù):
左右滑動(dòng)查看完整內(nèi)容
sh_serial_setbrg_generic(): + uint8_t semr; + uint16_t scr; + if (port->clk_mode == EXT_CLK) { unsignedshort dl = DL_VALUE(baudrate, clk); sci_out(port, DL, dl); /* Need wait: Clock * 1/dl * 1/16 */ udelay((1000000 * dl * 16 / clk) * 1000 + 1); } else { + scr = sci_in(port, SCSCR); + semr = sci_in(port, SCSEMR); + + sci_out(port, SCSCR, 0); + + sci_out(port, SCSEMR, 0); + if(9600 == baudrate) + sci_out(port, SCBRR, 163); + elseif(115200 == baudrate) + sci_out(port, SCBRR, 15); + + sci_out(port, SCSEMR, 0x30); + if(9600 == baudrate) + sci_out(port, MDDR, 129); + elseif(115200 == baudrate) + sci_out(port, MDDR, 151); + + udelay(100); + + sci_out(port, SCSEMR, semr); + sci_out(port, SCSCR, scr); + }
-
瑞薩
+關(guān)注
關(guān)注
36文章
22383瀏覽量
88045 -
MPU
+關(guān)注
關(guān)注
0文章
415瀏覽量
49917 -
串口
+關(guān)注
關(guān)注
15文章
1588瀏覽量
79935 -
波特率
+關(guān)注
關(guān)注
2文章
313瀏覽量
34949 -
Uboot
+關(guān)注
關(guān)注
4文章
129瀏覽量
29093
原文標(biāo)題:RZ/G2L uboot串口多波特率支持介紹
文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
瑞薩RZ/G2L串口SCI的使用(下)

RZ/G2L高速虛擬串口方案 基于瑞薩RZ/G2L SMARC開發(fā)板的虛擬(Virtual UART)實(shí)現(xiàn)方案

評論