Linux设备驱动调试之printk

终极法宝:

//#define DBG_PRINTK printk
#define DBG_PRINTK(x...)

         printk(KERN_DEBUG"%s %s %d\n", __FILE__, __FUNCTION__, __LINE__);

驱动程序的调试
一. 打印: prink, 自制proc文件
UBOOT传入console=ttySAC0 console=tty1
1、 内核处理UBOOT传入的参数
console_setup
add_preferred_console // 我想用名为”ttySAC0”的控制台,先记录下来

2、. 硬件驱动的入口函数里:
drivers/serial/s3c2410.c
register_console(&s3c24xx_serial_console);
3、源码分析


printk
        vprintk
            /* Emit the output into the temporary buffer */
            // 先把输出信息放入临时BUFFER
            vscnprintf

            // Copy the output into log_buf.
            // 把临时BUFFER里的数据稍作处理,再写入log_buf
            // 比如printk("abc")会得到"<4>abc", 再写入log_buf
            // 可以用dmesg命令把log_buf里的数据打印出来重现内核的输出信息


            // 调用硬件的write函数输出
            release_console_sem();
                call_console_drivers(_con_start, _log_end);
                    // 从log_buf得到数据,算出打印级别
                    _call_console_drivers(start_print, cur_index, msg_level);           
                        // 如果可以级别够格打印
                        if ((msg_log_level < console_loglevel
                            __call_console_drivers
                                con->write(con, &LOG_BUF(start), end - start);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值