首页 > 技术文章 > 如何连接捕获串口信息

Tzyyviki 2021-04-19 17:01 原文

串口


1. 使用背景

在开发,生产,测试等环节,遇到问题导致无法继续使用,例如:关机卡死,开机卡死等,串口信息可以帮助我们收集一些系统日志看不到的细节,以及硬件的返回值


2. 串口介绍

​ 串口(串行端口),一般场景下使用的串口多为三针角,分别为:TXD、RXD、GND

TXD:发送数据

RXD:接收数据

GND:信号地



主板对应上也会有三个同样的接口,连接需要硬件厂商提供串口线,将对应发送、接收、地址连接即可

值得注意的是,有些机器主板上(大多为笔记本)串口针不是突出的(只有一个焊锡的小点点),此时就需要联系硬件同事把串口线利用焊锡焊在主板上



串口线长这样(在主板上俗称公口,连接是为下图母口加 USB 转接线):



3. 连接串口修改参数

为了能更好的更全面的记录串口输出的日志信息,需要修改 grub 中的内核参数


修改分为两种:

  1. 单词修改(进入系统后就会失效)
  2. 长久修改(s3,s4,reboot等会一直生效)

3.1 gurb菜单单次修改

此方法启动后就会失效,重启,s4再次到grub菜单时需要再次修改,适用于临时改动

修改步骤:

  1. 开机后在弹出 grub 菜单界面,按 e 进入 grub 编辑模式


  1. 进入 grub 编辑模式后,将 quiet 参数去掉,并将 loglevel=0 修改为 loglevel=7 如下图


  1. 修改完成后,按 ctrl + x 即可启动系统,并在串口输出端完成完整打印信息(串口输出端配置见标题 4)

3.2 长久修改

长久修改是进系统之后,修改 grub.cfg 此种方式修改后会长久生效,每次重启,s4时不需要再次改动

需要注意的是,更新内核或执行命令 update-grub 后,该修改会失效


  1. 桌面右击 - 打开终端,执行 sudo su 获取 root 权限

  2. 编辑文件 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 串口参数

  1. 一般串口识别为 /dev/ttyUSB0,根据情况也可能识别为 /dev/ttyAMA0/dev/ttyS0,具体识别为哪个根据现场环境来判断

  2. 系统串口不输出东西:若串口无法输出信息,检查线序是否接对,检查串口识别成哪个,然后在 grub 行尾添加串口识别信息,例: console=ttyS0,115200,若还不行可考虑是否为串口线或其他硬件问题

  3. 系统串口输出乱码:可查看系统下有无 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        |
            +--------------------------+
  1. 输入该命令后,会弹出如上表,利用光标上线停留在 Serial port setup 选项,然后摁 enter 键,会弹出如下图界面

  1. 利用上面确认串口识别命令确认好串口设备后,按 shift a 切换到 Serial Device 选项上修改对应的串口设备,根据频率按 shift e 切换到 Bps/Par/Bits 选项上修改串口频率,修改完成后按 enter

  2. 然后利用上下光标移动到 save setup as dfl 选项上按 enter 键保存

  3. 然后利用上下光标移动到 exit 选项上按 enter 键进入到串口输出界面

推荐阅读