蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术。工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段。数据速率为1Mb/s。时分双工传输方案被用来实现全双工传输,使用IEEE802 15 .15协议。 蓝牙使用了更稳定和更快的跳频技术,使得蓝牙通信抗干扰能力更强。
一、 BlueZ 5.44体系结构
蓝牙技术的系统结构分为三大部分:底层硬件模块、中间协议层和应用层。
(1)底层硬件模块包括:无线跳频( RF)、基带( BB)和链路管理(LM)
蓝牙的SIG规定了四种与硬件连接的物理总线方式USB、RS232、 UART和PC卡
(2)BlueZCore层包括各种Profile:
GAP:设备连接
SDAP:查询相关信息
SPP:虚拟串口连接
GOEP:数据传输
(3)中间协议层:
HCI接口:设备扫描、配对
L2CAP协议:蓝牙适配
(4)应用层包括BlueZ各种工具集:
hciconfig:配置蓝牙设备,用于打印设备信息和配置设备
hcitool:配置蓝牙连接,执行比如扫描等命令
gatttool:一种直接使用参数对蓝牙设备进行控制,二就是使用-I参数进入interactive模式对蓝牙设备进行控制
sdptool:搜索并管理设备服务
二、交叉编译蓝牙协议栈BlueZ 5.44
bin和sbin的编译安装目录下生成的操作蓝牙工具, libs编译安装目录下生成的是蓝牙通信时所依赖的库,其他的都是编译这两个所依赖的库,将bin、sbin和lib移植到板子上的相关文件中,下图是编译BlueZ 5.44所依赖的库。
#!/bin/sh
cd zlib-1.2.8
CC=arm-histbv310-linux-gcc ./configure --prefix=$PWD/../bluetooth-build/zlib-1.2.8-build
make -j8
make install
cd -
cd libffi-3.0.13
./configure --prefix=$PWD/../bluetooth-build/libffi-3.0.13-build --host=arm-linux CC=arm-histbv310-linux-gcc
make -j8
make install
cd -
cd glib-2.40.0
./configure --prefix=$PWD/../bluetooth-build/glib-2.40.0-build --host=arm-linux CC=arm-histbv310-linux-gcc PKG_CONFIG_PATH=$PWD/../libffi-3.0.13-build/lib/pkgconfig glib_cv_stack_grows=no glib_cv_uscore=yes ac_cv_func_posix_getpwuid_r=yes ac_cv_func_posix_getgrgid_r=yes CPPFLAGS="-I$PWD/../bluetooth-build/libffi-3.0.13-build/lib/libffi-3.0.13/include -I$PWD/../bluetooth-build/zlib-1.2.8-build/include" LDFLAGS="-L$PWD/../bluetooth-build/libffi-3.0.13-build/lib/ -L$PWD/../bluetooth-build/zlib-1.2.8-build/lib/"
make -j8
make install
cd -
cd expat-2.1.0
./configure --prefix=$PWD/../bluetooth-build/expat-2.1.0-build --host=arm-linux CC=arm-histbv310-linux-gcc
make -j8
make install
cd -
cd dbus-1.9.4
./configure --prefix=$PWD/../bluetooth-build/dbus-1.9.4-build --host=arm-linux --with-x=no --disable-tests --enable-abstract-sockets CC=arm-histbv310-linux-gcc CFLAGS=-I$PWD/../bluetooth-build/expat-2.1.0-build/include LDFLAGS=-L$PWD/../bluetooth-build/expat-2.1.0-build/lib
make -j8
make install
cd -
cd libical-1.0
./bootstrap
./configure --prefix=$PWD/../bluetooth-build/libical-1.0-build --host=arm-linux CC=arm-histbv310-linux-gcc
make -j8
make install
cd -
cd ncurses-5.9
./configure --prefix=$PWD/../bluetooth-build/ncurses-5.9-