linux驱动调试小结
近期被赶鸭子上架整linux上的驱动,折腾了好些天,趁着还有印象将自己搜罗的尝试的学到的记录一下,以备今后查阅
一、一些基础
1.驱动文件形式 --> *.ko
2.安装命令 --> insmod 卸载命令--> rmmod 都需要root权限 ,也可用modprobe
3.其他可能用到的命令:
modinfo -- 查看模块信息
demsg --- 查看硬件信息
objdump---查看模块详细信息(功能很强大,具体man)
4.关于驱动模型 及char block stream等详细信息 可以参考 Linux Device Driver 3thd
二、关于调试
主要尝试过两种方法:打印或单步调试
1.打印: printk 分很多级别信息,功能类似于c语言的printf, 一般来说信息打印到/var/log/messages,可通过cat命令或tail命令查看
大多数问题都可以通过printk来解决,缺点在于不够直感
2.调试工具: GDB ,KDB,KGDB
都需要编译DEBUG版本内核。
KDB单机汇编级调试,需要单独下载kernel对应的patch,
GDB没整明白,只知道 gdb vmlinux启动后 通过add-symobl-file增加被调试模块的符号信息
KGDB 在2.6.*后就已缺省放在内核源码里了,其他的需要单独下载PATCH,反正我的2.6.18内核里没有(在kernel.org中,people/ark 下应该能找到2.6.18的patch,注意打patch的顺序) 查看是否有KGDB的方法是:源码路径下make menuconfig后能看到KGDB这一项。下面主要介绍2.6.18上KGDB环境的建立:
KGDB需要两台机器配合,一个开发机,一个测试机,两台机器通过串口线连接(该线是需要处理的,具体的与window上调试驱地的一致)
a.硬件连接性测试:在开发机上 执行 stty -ispeed 115200 -ospeed 115200 -F /dev/ttyS0
 
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......
1 定义文件
linux/errno.h
#ifndef _LINUX_ERRNO_H
#define _LINUX_ERRNO_H
#include <asm/errno.h>
#ifdef __KERNEL__
/* Should never be seen by user programs */
#define ERESTARTSYS 512
#define ERESTARTNOINTR 513
#define ERESTARTNOHAND 5 ......
用命令 whereis java就可以看到了
eg:
-bash-3.1$ whereis java
java: /usr/bin/java /etc/java /usr/lib/java /usr/share/java /opt/jdk1.6.0_01/bin/java
如果仅仅想知道java执行路径在那里的话 用which java就可以了
eg:
-bash-3.1$ which java
/usr/bin/java ......
一般来讲,如果你有一个有线调制解调器或者数字用户线路,你就可以使用家里的电脑获取由你的服务提供商动态分配的IP地址。如果在调制解调器和本地网络之间安装了有线/数字用户线路的路由器,你的电脑很有可能是在启动过程中从路由器获取了IP地址。你也可以选择禁用本地路由器中DHCP服务器的功能,而设置 ......