在嵌入式开发中,有时候需要进行源码级别的调试,可以设置断点,单步执行,相比于每步打印printf或者printk来说,更加友好。下面就来介绍这种调试方法。 gdb交叉调试类似于网络浏览器,本地PC为客户端,远程开发板为服务器端,双方都要统一编译工具链,版本最好保持一致。 --target 指定了目标...
分类:
数据库 时间:
2015-04-10 13:22:13
阅读次数:
275
静态编译,动态加载应用想访问内核需要通过系统调用驱动:1.模块(打包,加入内核)2.内核机制3.操作硬件在Kconfig里面配置menuconfig的时候,不同的类型会在图形化界面的终端显示不用的配置选项:bool CONFIG_HELLO []hello_driver 两态tri...
分类:
系统相关 时间:
2015-04-05 15:52:17
阅读次数:
221
linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函数的实质是调用printk(KERN_DEBUG )来输出打印信息。要打开这个开关需要下面两步。1)打开调试开关:你调试的文件中必然包含了,或者,后者包含了前者,在包含此头文件之前,使用#define DEBUG 1...
分类:
数据库 时间:
2015-03-31 15:57:25
阅读次数:
331
在linux 中,内核打印语句 printk() 会将内核信息输出到内核信息缓冲区中。内核信息缓冲区是一个环形缓冲区(ring buffer),因此,如果插入的信息过多,就会将之前的信息冲刷掉。printk() 定义了8个消息级别,分为级别0 ~ 7,级别越低(数值越大)的消息越不重要,第0级是紧急...
分类:
系统相关 时间:
2015-03-30 12:45:16
阅读次数:
476
上一篇介绍了linux驱动的概念,以及linux下设备驱动的基本分类情况及其各个分类的依据和差异,这一篇我们来描述如何写一个类似hello world的简单测试驱动程序。而这个驱动的唯一功能就是输出hello world。
在编写具体的实例之前,我们先来了解下linux内核下调试程序的一个重要函数printk以及几个重要概念。
printk类似c语言的printf,是内核中输出打印信息...
分类:
系统相关 时间:
2015-03-29 18:05:03
阅读次数:
221
printk打印的信息要在console注册之后才能打印出来,但是在start_kernel中,还没有注册console之前
已经有printk的动作.这些信息会保存在printk的buf里边,这个buf大小可以配置:
General setup
(14) Kernel log buffer size (16 => 64KB, 17 => 128KB)
14=2^14=16KB, 16=2...
分类:
系统相关 时间:
2015-03-16 14:35:35
阅读次数:
166
通常我们使用的C函数的参数个数都是固定的,但也有不固定的。比如printf()与scanf()。如何自己动手实现一个可变参数函数,这个还是有点技巧的。我们最常用的就是定义一个宏,使用printf或者printk,如下#define wwlogk(fmt, args...) printk(fmt, #...
分类:
编程语言 时间:
2015-03-15 22:40:46
阅读次数:
214
作者:彭东林邮箱:pengdonglin137@163.com开发板:tiny4412ADK+S700 4GB Flash主机:Wind7 64位虚拟机:Vmware+Ubuntu12_04u-boot:U-Boot 2010.12Linux内核版本:linux-3.0.31Android版本:an...
分类:
其他好文 时间:
2015-03-15 16:44:18
阅读次数:
430
作者:彭东林邮箱:pengdonglin137@163.com开发板:tiny4412ADK+S700 4GB Flash主机:Wind7 64位虚拟机:Vmware+Ubuntu12_04u-boot:U-Boot 2010.12Linux内核版本:linux-3.0.31Android版本:an...
分类:
其他好文 时间:
2015-03-07 22:32:23
阅读次数:
390
#ifdef DEBUG #define debug(fmt,args...) printk(fmt ,##args) #define debugX(level,fmt,args...) if (DEBUG>=level) printk(fmt,##args); #else #define debu...
分类:
其他好文 时间:
2015-03-06 09:33:56
阅读次数:
171