作者 QQ: 35327864,msn: fgwf1@hotmail.com,mail: agooou@gmail.com
零,bluetooth概念及原理,请参考http://blog.sina.com.cn/s/blog_602f87700100e902.html,这是一篇极好的文章。
一,内核bluetooth驱动的支持
我是基于smp865x-sdk3.8.0开发的,其中的linux内核为2.6.22.19-27。配置smp865x开发环境的步骤就略了。本人用的是市面上普通的USB dongle蓝牙模块。
1,重新配置linux内核
make menuconfig
进入Networking support -> Bluetooth subsystem support,选择L2CAP protocol support,RFCOMM protocol support,
接着,进入Bluetooth device drivers,选择HCI USB driver。
本人的蓝牙只为了进行简单数据通讯,不作为鼠标,音频等使用,故而仅选择如上选项,并都作为built-in编译进内核。
2,配置usb驱动
进入Device Drivers -> USB support,选择SMP86xx EHCI HCD (USB 2.0) support,这是smp86xx平台上专用于usb2.0的驱动。可以build-in,也可以以模块方式编译,但在运行时需要modprobe。
同时,我也选了EHCI HCD (USB 2.0) support,不清楚这个有没有用。
3,编译
host> make all
host> make modules
host> make modules_install // put them in rootfs
host> make all zbimage-linux-xload
最后生成了zbimage-linux-xload 在 ./arch/mips/boot/下。这就是rootfs固件了,将它烧写到sata上进行测试或直接烧进nand完成固件升级。
4,启动系统,将需要的驱动加载,插入usb蓝牙,如果一切正常则能发现设备。
二,bluez程序库移植,包含hcitool,hciconfig,rfcomm工具的移植及使用
上一步,我们将bluetooth的支持编译到了内核中。此时,我们还无法使用蓝牙,真正要操作蓝牙,需要编写应用程序支持。bluez程序库就是提供给我们编写蓝牙程序的基本库。该库负责进行系统调用,用以驱动硬件。我们只需要调用bluez的API即可。下载地址:git://git.kernel.org/pub/scm/bluetooth/bluez.git
1,bluetooth库
bluetooth库即bluez/lib下内容,只有3个c文件,就这三个c文件和一些头文件构成了bluetooth库。因为这几个文件并不依赖外部,所以,很好移植,不详述。
2,编译tools
tools比较多,我选择了hcitool,hciconfig,rfcomm这三个进行编译。其中,有parser.y,lexer.l。需要使用yacc和lex进行预处理。我直接在x86下configure并编译,直接生成了parser.c,parser.h和lexer.c。
记得要把config.h也拷过去用。
3,编译过程也很简单,不述。
三,基于hci层协议的程序编写
四,基于L2CAP层协议的程序编写
五,基于rfcomm层协议的程序编写
SMP865X广告机之蓝牙(bluetooth)
最新推荐文章于 2022-11-11 22:44:21 发布