嵌入式Linux关闭串口终端信息的方法和调试手段

关于Linux终端和控制台的基本概念如下:

  • /dev/console即控制台,是与操作系统交互的设备,系统将一些信息直接输出到控制台上。/dev/console根据不同系统的设定可以链接到/dev/tty0或者其他/dev/tty*终端设备上。
  • /dev/tty代表当前tty设备,在当前的终端中输入 echo “hello” > /dev/tty ,都会直接显示在当前的终端中。
  • /dev/ttyS*是串行/串口终端设备。
  • /dev/pty*即伪终端,所谓伪终端是逻辑上的终端设备,多用于模拟终端程序。例如,我们在X Window下打开的终端,以及我们在Windows使用telnetssh等方式登录Linux主机,此时均在使用pty设备(准确的说在使用pty从设备)。
  • /dev/tty0代表当前虚拟控制台,而/dev/tty1等代表第一个虚拟控制台,例如当使用ALT+F2进行切换时,系统的虚拟控制台为/dev/tty2 ,当前的控制台则指向/dev/tty2

在嵌入式Linux产品开发的最终镜像发布时,一般希望关闭串口终端的打印信息,关闭串口打印后,还可以使用ssh方式来确认系统是否正常启动。下面介绍关闭u-bootLinux内核和根文件系统(rootfs)串口打印的方法,以及如何使用ssh来确认系统正常启动。

u-boot关闭串口终端信息

u-boot里面有串口终端静默的开关,在u-boot/include/configs/at91san9260ek.h中最后一行添加以下代码:

#define CONFIG_EXTRA_ENV_SETTINGS "silent=1\0"
#define CONFIG_SILENT_CONSOLE 
#define CONFIG_SILENT_U_BOOT_ONLY

Linux内核关闭串口控制台信息

通过内核配置选项来去掉串口控制台配置选项(CONFIG_SERIAL_ATMEL_CONSOLE

#make menuconfig
Devices drivers -> character drivers->serial drivers->
[]support for console on AT91/AT32 serial port 

根文件系统关闭串口控制台信息

Yocto项目的目标板配置文件里面需要去掉如下这一行:

SERIAL_CONSOLE = "115200 ttyS0"

这样就相当于将目标板根文件系统/etc/inittab文件中的

S0:12345:respawn:/sbin/getty 115200 ttyS0 

自动修改为默认的

1:12345:respawn:/sbin/getty 115200 tty1

使用ssh来调试

以上更改后,重新下载u-boot、内核及根文件系统,就看不到任何串口打印信息了,所以我们需要在Yocto目标板根文件系统镜像里面添加一个dropbear包:

DISTRO_FEATURE_append =" dropbear"
IMAGE_INSTALL_append = " dropbear"

重新构建和下载根文件系统后,使用pingssh远程登陆目标板来确认系统启动成功(这里需要注意的一点是dropbear默认是禁止root用户远程登陆的,所以需要自行添加一个普通用户账号用来测试验证):

$ ping 192.168.1.10
$ ssh [email protected]

ping通并且ssh可以正常登陆目标板,则说明系统正常启动。

你可能感兴趣的:(Linux驱动,U-Boot)