low level debug of linux omap

Dec 12th, 2008 | Posted by yajin | Filed under OMAP, emulation, kernel

Working on qmeu-omap3. A starange problem. If I use the kernel image downloaded from http://beagleboard.googlecode.com/files/uImage_OTG, some kernel boot informations can be displayed in uart3. But when I use the kernel source from linux omap git and build it by myself, there are NO linux kernel boot informations at all.

Linux kernel uses printk to output informations to console and the console struct is initialized in function console_init(). So why the linux can be displayed before function console_init()?

The answer is that there is another way to output informations to console. That is low level debug. It uses printascii to print informations. The following is the code in vprintk.

556 #ifdef  CONFIG_DEBUG_LL
557         printascii(printk_buf);
558 #endif

So if we want to output debug information as early as possible, define CONFIG_DEBUG_LL first.

The default configuration of beagle board in http://www.beagleboard.org/uploads/2.6_kernel_revb-v2.tar.gz defines this macro while the source code from  linux omap git does not define this macro.

Function printascii is defined in include/asm-arm/arch-omap/debug-macro.S.

No comments yet.