串口
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
键进入到串口输出界面