串口
1. 使用背景
在開發,生產,測試等環節,遇到問題導致無法繼續使用,例如:關機卡死,開機卡死等,串口信息可以幫助我們收集一些系統日志看不到的細節,以及硬件的返回值
2. 串口介紹
串口(串行端口),一般場景下使用的串口多為三針角,分別為:TXD、RXD、GND
TXD:發送數據
RXD:接收數據
GND:信號地
主板對應上也會有三個同樣的接口,連接需要硬件廠商提供串口線,將對應發送、接收、地址連接即可
值得注意的是,有些機器主板上(大多為筆記本)串口針不是突出的(只有一個焊錫的小點點),此時就需要聯系硬件同事把串口線利用焊錫焊在主板上
串口線長這樣(在主板上俗稱公口,連接是為下圖母口加 USB 轉接線):
3. 連接串口修改參數
為了能更好的更全面的記錄串口輸出的日志信息,需要修改 grub 中的內核參數
修改分為兩種:
- 單詞修改(進入系統后就會失效)
- 長久修改(s3,s4,reboot等會一直生效)
3.1 gurb菜單單次修改
此方法啟動后就會失效,重啟,s4再次到grub菜單時需要再次修改,適用於臨時改動
修改步驟:
- 開機后在彈出 grub 菜單界面,按 e 進入 grub 編輯模式
- 進入 grub 編輯模式后,將
quiet
參數去掉,並將loglevel=0
修改為loglevel=7
如下圖
- 修改完成后,按
ctrl + x
即可啟動系統,並在串口輸出端完成完整打印信息(串口輸出端配置見標題 4)
3.2 長久修改
長久修改是進系統之后,修改 grub.cfg 此種方式修改后會長久生效,每次重啟,s4時不需要再次改動
需要注意的是,更新內核或執行命令 update-grub
后,該修改會失效
-
桌面右擊 - 打開終端,執行
sudo su
獲取 root 權限 -
編輯文件
vim /boot/efi/boot/grub.grub.cfg
(efi 和 傳統引導的 grub 文件位置不同,配置文件根據自己的環境來更改哦)進入到 grub 菜單后,找到 grub 菜單默認啟動內核入口
menuentry ‘Kylin V10 4.4.131-20200710.kylin.x86-generic’
,可參考下列修改后 grub,實際情況根據環境變化而定
menuentry 'Kylin V10 4.4.131-20200710.kylin.x86-generic' --class kylin --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-a2533f78-c422-4b9a-a355-5a7b555a6daf' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_msdos
insmod ext2
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 3fe01578-2edf-454b-bf0a-35066831d915
else
search --no-floppy --fs-uuid --set=root 3fe01578-2edf-454b-bf0a-35066831d915
fi
linux /vmlinuz-4.4.131-20200710.kylin.x86-generic root=UUID=a2533f78-c422-4b9a-a355-5a7b555a6daf ro locale=zh_CN splash loglevel=7 resume=UUID=a7260390-d01c-4e72-aee8-160140054ce1 security=
initrd /initrd.img-4.4.131-20200710.kylin.x86-generic
}
3.3 其他修改
3.3.1 穩定性測試參數
若是在做穩定性測試時出現異常,則需要在 gurb 參數行尾(loglevel=7 那一行)添加 initcall_debug=1
,此參數會在做 shutdown、reboot、s3、s4 測試時打印更為詳細的內核日志
3.3.2 grub 串口參數
-
一般串口識別為
/dev/ttyUSB0
,根據情況也可能識別為/dev/ttyAMA0
或/dev/ttyS0
,具體識別為哪個根據現場環境來判斷 -
系統串口不輸出東西:若串口無法輸出信息,檢查線序是否接對,檢查串口識別成哪個,然后在 grub 行尾添加串口識別信息,例:
console=ttyS0,115200
,若還不行可考慮是否為串口線或其他硬件問題 -
系統串口輸出亂碼:可查看系統下有無 pabiometric 軟件包,此軟件包會影響串口輸出,可直接卸載
# dpkg -P pabiometric
串口默認頻率是 115200,若一直輸出亂碼,可通過命令來修改串口頻率
1. 查看對應串口頻率
# stty -F /dev/ttyUSB0
speed 115200 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel iutf8 -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
2. 修改串口頻率
# stty -F /dev/ttyUSB0 115200
4. 串口接收端配置
在 release 版本中,一般都會存在一個命令 minicom
使用方法:
# minicom -s
+-----[configuration]------+
| Filenames and paths |
| File transfer protocols |
| Serial port setup |
| Modem and dialing |
| Screen and keyboard |
| Save setup as dfl |
| Save setup as.. |
| Exit |
| Exit from Minicom |
+--------------------------+
- 輸入該命令后,會彈出如上表,利用光標上線停留在
Serial port setup
選項,然后摁enter
鍵,會彈出如下圖界面
-
利用上面確認串口識別命令確認好串口設備后,按
shift a
切換到Serial Device
選項上修改對應的串口設備,根據頻率按shift e
切換到Bps/Par/Bits
選項上修改串口頻率,修改完成后按enter
鍵 -
然后利用上下光標移動到
save setup as dfl
選項上按enter
鍵保存 -
然后利用上下光標移動到
exit
選項上按enter
鍵進入到串口輸出界面