linux驱动调试记录】的更多相关文章

linux驱动调试 linux 目录 /proc 下面可以配置驱动的调试信息,比如给proc目录的自己定制的驱动的一文件设置一个变量,然后驱动程序跟了proc的参数值来配置调试级别.类似于内核调试的级别来配置自己驱动调试级别.可以在dev目录创建一个设备专门用来打印相应的驱动调试信息.…
本文转载自:http://blog.chinaunix.net/uid-20671208-id-4940381.html 原文地址:linux驱动调试--修改系统时钟终端来定位僵死问题 作者:枫露清愁 曾经遇到过一个bug是这样的,通过串口终端和开发板交互时,执行一个程序后,整个系统就挂了,也不接受输入了,只能重启,后来发现是死在某段代码里了,当时可是费了一番功夫,今天来说一下怎么调试这种系统僵死的程序. 首先说一下linux的时钟中断.linux的时钟中断也是一种硬件中断,通过计数器产生输出脉…
linux驱动调试--段错误之oops信息分析 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29401328&id=4923447 1. 分析coredump打印信息 2. 确定发生错误的函数 看发生错误的地方的函数和pc PC is at segment_test_open+0x14/0x1c [segdrv] 看pc值: pc : [<7f000014>]    lr : [<800d958c>…
1.当驱动有误时,比如,访问的内存地址是非法的,便会打印一大串的oops出来 1.1以LED驱动为例 将open()函数里的ioremap()屏蔽掉,直接使用物理地址的GPIOF,如下图所示: 1.2然后编译装载26th_segmentfault并执行测试程序后,内核便打印了oops出来,如下图所示: 2.接下来,我们便来分析oops: Unable to handle kernel paging request at //无法处理内核页面请求的虚拟地址56000050 pgd = c38500…
原文网址:http://blog.csdn.net/dwyane_zhang/article/details/7180779 网上关于BT的驱动很少,所以我在开发过程中把其中的步骤记录下来.供大家相互学习讨论. 一.关于BT driver的移植: 1. Enablebluetootch in BoadConfig.mk BOARD_HAVE_BLUETOOTH := true 2.实现BT电源管理rfkill驱动. Kernel/driver/bluetooth/bluetooth-power.…
vim kernel_imx/arch/arm/configs/imx6s_{yourdevice}_android_defconfig CONFIG_CFG80211=y CONFIG_MAC80211_MESH=y CONFIG_MAC80211=y CONFIG_HOSTAP=y CONFIG_RTL8192CU=y CONFIG_RTLWIFI=y CONFIG_RTL8192C_COMMON=y #CONFIG_RTL8723AS=m CONFIG_USB_USBNET=y CONFI…
当内核或驱动出现僵死bug,导致系统无法正常运行,怎么找到是哪个函数的位置导致的? 答,通过内核的系统时钟,因为它是由定时器中断产生的,每隔一定时间便会触发一次,所以当CPU一直在某个进程中时,我们便在中断函数中打印该进程的信息 1.先来回忆下 在之前的第5章内核中断运行过程:http://www.cnblogs.com/lifexy/p/7506504.html分析过,当内核中断产生时,会做以下几步: 1)pc-4(计算返回地址值),然后将各个寄存器值存到sp栈里 2)获取中断号,获取sp地址…
上章链接入口: http://www.cnblogs.com/lifexy/p/8006748.html 在上章里,我们分析了oops的PC值在哪个函数出错的,那如何通过栈信息来查看出错函数的整个调用过程? 本章接着上章,来分析oops的栈信息 1.上章的oops栈信息如下图所示: 9fe0: 代表最初的栈顶SP寄存器位置 9e80:代表函数出错的SP寄存器位置 2.我们先来分析上图的栈信息,又是怎样的过程呢? 2.1内核主要是通过STMDB和LDMIA汇编命令来入栈和出栈 (STMDB和LDM…
上章链接入口: http://www.cnblogs.com/lifexy/p/8006748.html 在上章里,我们分析了oops的PC值在哪个函数出错的 本章便通过栈信息来分析函数调用过程 1.上章的oops栈信息如下图所示: 9fe0: 代表最初的栈顶SP寄存器位置 9e80:代表函数出错的SP寄存器位置 2.我们先来分析上图的栈信息,又是怎样的过程呢? 2.1内核主要是通过STMDB和LDMIA汇编命令来入栈和出栈 (STMDB和LDMIA汇编命令参考: http://www.cnbl…
1. struct task_struct current->comm[16]; /*此进程可执行文件的名字!!可只对此进程执行打印*/…