Ubuntu Bluetooth Driver 调试

kernel源码:Linux-3.2.16

升级Linux-3.2.16源码(参照:Linux-3.2.6内核升级)。bluetooth驱动模块代码位于linux-3.2.16/net/bluetooth目录下。打开该目录下的Makefile文件,如下:

#    # Makefile for the Linux Bluetooth subsystem.    #       obj-$(CONFIG_BT)    += bluetooth.o   obj-$(CONFIG_BT_RFCOMM)    += rfcomm/   obj-$(CONFIG_BT_BNEP)    += bnep/   obj-$(CONFIG_BT_CMTP)    += cmtp/   obj-$(CONFIG_BT_HIDP)    += hidp/      bluetooth-y := af_bluetooth.o hci_core.o hci_conn.o hci_event.o mgmt.o hci_sock.o hci_sysfs.o lib.o   bluetooth-$(CONFIG_BT_L2CAP)    += l2cap_core.o l2cap_sock.o smp.o   bluetooth-$(CONFIG_BT_SCO)    += sco.o  

这个意思(个人理解)会编译出几个模块bluetooth,rfcomm,bnep,cmtp,hidp,这些模块具体是编译进内核还是编译成.ko有obj-后面的变量指定(y编译进内核,m编译成.ko),变量的定义看根目录地下的.config文件。这里我为了调试,在menuconfig时将这些模块都设置成m,即编译成.ko文件。用来调试时事实insmod。最终在make bzImage时,编译出bluetooth.ko。

编译完kernel安装后,在系统/lib/modules/`uname -r`/kernel/net/bluetooth下会安装这些.ko,这里修改了以上跟bluetooth.ko有关的源文件(比如加些打印)后,直接insmod进内核,然后用dmesg打印信息,当bluetooth.ko运行到打印部分时,打印的信息就会用dmesg打出来。

驱动卸载过程:

1.关闭bluetooth应用

2.sudo rmmod rfcomm

3.sudo rmmod btusb

4.sudo rmmod bnep

5.sudo rmmod bluetooth

驱动装载过程:

1.sudo insmod bluetooth.ko

2.开启bluetooth应用

然后就能调试驱动部分了。

更多Ubuntu相关信息见Ubuntu 专题页面 ?tid=2

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ppyws.html