Bluez移植到mini2440
以下介绍Bluez移植的基本步骤。
使用针对ARM开发系统的蓝牙USB模块 (深圳蓝色飞舞科技产品) 点击进入>>
一,linux内核的配置
Linux 2.6版本之后的内核一般都有蓝牙模块的配置,所以你不用再打补丁了。由于我也是处于摸索阶段,所以我暂时用的是开发板上自带的内核。
#tar zxvf linux.2.6.*
解压缩内核,进入内核目录。在名令行输入
# make disclean/make clean/make rmproper,
选择这三个中的任意一个 对内核进行清理,关于这三个命令的区别你可以google一下,然后自己去区分。
#make menuconfig/make config /make oldconfig /make xconfig
输入如这三个命令中的任何一个,对内核进配置,这几条命令的区别,请你自己google。推荐使用make menuconfig 。进入内核配置界面之后,根据你的自己的需要进行选择。关于内核的配置请单独查看内核配置方面的文档。
#make zImage ARCH=arm CROSS_COMPILE=arm-linux-
到此内核镜像就已经做好了。
二,编译bluez协议栈。
移植过蓝牙协议栈的人,肯定会觉得,Bluez协议栈的编译是最麻烦的一件事情。其实,如果你能理清楚bluez-utils所依赖的一些库,你就能很快的cross-compile交叉编译出一套能在开发板上跑起来的程序。关键是如何去理清楚协议,我总结出来的方法是,倒着推,你不知道bluez-utils依赖那些库,那就先直接编译bluez-utils,根据编译显示的错误,分析错误,找出来它所依赖的库,这样一步一步的分析下去,你就可以把蓝牙协议栈交叉编译出来。如果你不会分析错误或则不想去分析,可以,那你就直接把错误粘贴到网上,让搜索引擎给你找。
由于时间的仓促,这里我只列出我已经总结出来的Bluez所需要的几个库,以及几个库编译的先后顺序。
我用到的几个库:
bluez-lib-3.36.tar.gz
expat-2.0.1.tar.gz
dbus-1.2.16.tar.gz
glib-2.22.4.tar.bz2
libusb-0.1.12.tar.gz
bluez-utils-3.36.tar.gz
注:/opt/libs 和/opt/utils是我自己编译时用的路径,你可以随便的选取。
1,编译安装bluez-lib-3.36.tar.gz
这个库不需要什么依赖,直接解压,配置,编译然后安装即可。
#tar zxvf bluez-lib-3.36.tar.gz
#./configure --profix=/opt/libs --host=arm-linux --target=arm-linux CC=arm-linux-gcc
#make
#make install
2,编译安装expat-2.0.1.tar.gz
这个库是后面的dbus依赖的,你也可以用libxml2来代替expat,官方网站上说dbus必须依赖于他们中的一个,我这里用的是expat-2.0.1.tar.gz。
#tar zxvf expat-2.0.1.tar.gz
#./configure --profix=/opt/libs --host=arm-linux --target=arm-linux CC=arm-linux-gcc
#make
#make install
3,编译安装dbus-1.2.16.tar.gz
#tar zxvf dbus-1.2.16.tar.gz
#echo ac_cv_have_abstract_sockets=yes>arm-linux.cache
#./configure --profix=/opt/libs --host=arm-linux --target=arm-linux CC="arm-linux-gcc -I/opt/libs/include -L/opt/libs/lib" --cache-file=arm-linux.cache --with-x=no
#make
#make install
4,编译安装glib-2.22.4.tar.bz2
#tar -zxjf glib-2.22.4.tar.bz2
#echo ac_cv_type_long_long=yes>arm-linux.cache
#echo glib_cv_stack_grows=no>>arm-linux.cache
#echo glib_cv_uscore=no>>arm-linux.cache
#echo c_cv_func_posix_getpwuid_r=yes>>arm-linux.cache
#echo ac_cv_func_posix_getgrgid_r=yes>>
注意:">"和">>"的区别
#./configure --profix=/opt/libs --host=arm-linux --target=arm-linux CC="arm-linux-gcc -I/opt/libs/include -L/opt/libs/lib" --cache-file=arm-linux.cache
#make
#make install
5,编译安装libusb-0.1.12.tar.gz
这个库不需要什么依赖,直接解压,配置,编译然后安装即可。
#tar zxvf libusb-0.1.12.tar.gz
#./configure --profix=/opt/libs --host=arm-linux --target=arm-linux CC="arm-linux-gcc -I/opt/libs/include -L/opt/libs/lib"
#make
#make install
6,编译安装bluez-utils-3.36.tar.gz
#tar zxvf bluez-utils-3.36.tar.gz
#./configure --profix=/opt/libs --host=arm-linux --target=arm-linux CC="arm-linux-gcc -I/opt/libs/include -L/opt/libs/lib" --disable-audio
#make
#make install
这样Bluez协议栈就编译好了。
三,烧写到开发板上
将相应目录项的文件,拷贝到你开发板上相应文件系统对应相同名字的文件中,然后将文件系统做成镜像,再烧写内核和文件系统镜像到你的开发板上就可以了。这样Bluez移植就成功了,OK!
深圳蓝色飞舞科技针对Android、Bluez、wince推出:
USB接口的蓝牙模块 点击进入
UART接口的串行蓝牙模块BF10-H 点击进入
敬请联系我们的业务及技术人员!技术支持QQ:923920247 
资料不断的更新中,希望能给各位开发的朋友带来帮助!
更多技术支持:xiaowuyeah@163.com
0755-29739852 13242922466
13728690655
|