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应用


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

你可能感兴趣的:(linux,ubuntu,makefile,BT)