《ARM Linux开发-warewin 2G/3G无线传输(DTU)和路由器—笔记》
嵌入式linux产品开发,大部分不希望串口或telnet输出调试信息。一下介绍如何屏蔽打印调试信息。
整个系统运行过程分3个部分:bootstrap、uboot、内核及根文件系统,bootstrap由at91sam9260在从片内启动,运行bootstrap串口无打印信息,但at91sam9260芯片启动会向串口输出“RomBOOT”信息,此部分无法屏蔽。所以只需屏蔽掉uboot、内核及根文件系统向串口输出的信息,方法如下:
1、Uboot部分
使Uboot中串口静默、uboot所有信息不打印,但是要注意配置好自启动命令,以便可以启动linux内核。因env_common.c中用到uchar default_environment[]结构,可以添加CONFIG_EXTRA_ENV_SETTINGS,在/u-boot-1.3.4/include/configs/at91san9260ek.h中最后一行添加以下代码:
#define CONFIG_EXTRA_ENV_SETTINGS "silent=1\0"
#define CONFIG_SILENT_CONSOLE 1
2、内核部分
(1)配置选项
#make menuconfig
去掉控制台配置选项( CONFIG_SERIAL_ATMEL_CONSOLE)
Devices drivers -> character drivers->serial drivers->
[]support for console on AT91/AT32 serial port
(2)去掉自解压时的打印信息
在运行内核开始会有以下打印信息:
Uncompressing Linux... done, booting the kernel.
在内核源文件/Linux-2.6.36/arch/arm/boot/compressed/misc.c中的 decompress_kernel()函数中注释掉以下代码:
putstr("Uncompressing Linux...");
putstr(" done, booting the kernel.\n");
3、根文件系统部分
把根文件系统/etc/inittab文件中的
:2345:askfirst:-/sbin/getty 115200 ttyS0
更改为
:2345:askfirst:-/sbin/getty tty0
4、调试
以上更改后,重新下载uboot、内核及根文件系统,查看调试串口输出的信息,可以看到每次加电系统运行只有at91sam9260芯片启动时输出的信息,如下图所示:
图2.27 系统启动图
待系统进入内核运行应用程序后,串口无其它打印信息则屏蔽成功。