《驱动调试 - printk源码分析和应用实例》
1.在驱动调试中,使用printk(),是最简单,最方便的办法 当uboot的命令行里的“ console=tty1 ”时,表示printk()输出在开发板的LCD屏上 当uboot的命令行里的“ console=ttySAC0,115200 ”时,表示printk()输出在串口UART0上,波特率=115200 当uboot的命令行里的“ console=tty1 console=ttySAC0,115200 ”时,表示printk()同时输出在串口上,以及开发板的LCD屏上 显然printk(),还是根据命令行参数来调用不同控制台的硬件处理函数 内核又是怎么根据上面命令行参数来确定printk()的输出设备? 2.我们以“console=ttySAC0,115200”为例,进入linux-2.6.22.6\kernel\printk.c 找到以下一段: __setup("console=", console_setup); 若uboot传递进来的命令行字符串里含有“ console= ”,便调用 console_setup() 函数,并对“console=”后面带的字符串" ttySAC0,115200 "进行分析 3. 我们以*str= "ttySAC0,115200" 为例,console_setup() 函数如下所示 static int __init console