嵌入式arm linux藍牙文件傳輸移植
嵌入式arm linux藍牙文件傳輸移植
目前,藍牙技術已經比較成熟,特別是基於手機和PC得藍牙文件傳輸。
本文主要講述基於嵌入式arm linux的藍牙文件傳輸。
現行2.6.x的linux內核都已經集成了bluez藍牙驅動,對於2.4版本內核的需要到bluez官方網站下載並安裝bluez藍牙驅動。
https://www.bluez.org/download/
本為基於2.6版本的內核講述。對於2.4下載bluez後安裝即可。有了bluez藍牙驅動還需要安裝bluez-libs庫和bluez-utils工具
藍牙文件傳輸應用開發分為2部分,On pc 和on ARM。
我用linux係統配置
fedora 9
內核版本 2.6.25
gcc:4.0.0
做嵌入式開發用新版本的內核總是會遇到很多問題。2.6.11的內核比較適合做嵌入式開發。
首先:在pc上安裝bluez-libs庫和bluez-utils工具。
1,在bluez官方網站下載bluez-libs和bluez-utils
https://www.bluez.org/download/
我下載的是bluez-libs-3.36和bluez-utils-3.36。
2.編譯PC的linux內核
#cd /usr/src/kernels/2.6.25-14.fc9.i686/ #make menuconfig Networking --> <M> Bluetooth subsystem support--> <M> L2CAP protocl support <M> SCO links support <M> RFCOMM protocol support [*] RFCOMM TTY support <M> BENP protocol support [*] Multicast filter support [*] Protocol filter support <M> CMTP protocol support <M> HIDP protocol support Bluetooth devices drivers--> <M> HCI USB driver
3.安裝libs和utils。
libs和bluez得安裝都是安裝linux軟件正常方式安裝
安裝libs
#tar xzvf bluez-libs-3.36.tar.gz #cd bluez-libs-2.25 #./configure #make #make install
注意:如果你是fedora 9或者是內核是2.6.25及以上的版本在安裝utils的時候會出現某些文件沒有或者是參數沒定義的問題。
第二,移植libs庫和utils工具到arm開發板
我的開發板配置:
linux內核:2.6.29(主要是我的開發板自帶內核帶了很多工具,如果換底版本的內核的話,會比較麻煩,所以就是用了其自帶核)
arm-linux-gcc:4.3.2
我把所有的壓縮包都放在了/opt/arm/下,我下麵講述的都是針對這個目錄下。大家可以針對自己的喜好來選擇目錄
1,安裝交叉編譯工具arm-linux-gcc
#tar xzvf arm-linux-gcc /usr/local #vi /root/.bashrc # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi export PATH=$PATH:/usr/local/arm/4.3.2/bin
2,解壓編譯配置內核
由於我使我開發板光盤自帶的內核源碼,所以不需要修改源碼中的Makefile。如果是從網上下載的內核源碼,在編譯的時候需要修改Makefile。需要對
#tar xzvf linux-2.6.29 #cd linux-2.6.29 #make menuconfig
配置內核的時候,需要把藍牙的部分配置加上去。
然後就開始交叉編譯內核。
#make zImage
3.移植bluez-libs.
創建一個文件夾用來安裝libs,然後交叉編譯,並安裝,流程如下:
我是把所有的都安裝包都放在/opt/arm下,可根據自己的情況自己選擇。
交叉編譯的libs庫和utils分別安裝在/opt/arm/libs和/opt/arm/utils
#cd /opt/arm #mkdir libs #tar xzvf bluez-libs-2.25.tar.gz #cd bluez-libs-2.25 #./configure --prefix=/home/libs --target=arm-linux CC="arm-linux-gcc" --build=arm-linux --host=arm-linux #vi config.h 加入以下內容: #ifndef UCHAR_MAX #define UCHAR_MAX 256 #endif #ifndef USHRT_MAX #define USHRT_MAX 65536 #endif #ifndef PATH_MAX #define PATH_MAX 4095 #endif
然後就:wq保存。
在命令行輸入
#cd /opt/arm/bluez-libs-2.25 #export PKG_CONFIG_PATH=/usr/lib/pkgconfig #make #make install
交叉編譯utils工具。
#cd /opt/arm #tar xzvf bluez-utils-2.25 #cd bluez-utils-2.25 #./configure --prefix=/opt/arm/utils --includedir=/opt/arm/libs/include --libdir=/opt/arm/libs/lib --with-bluez=/opt/arm/libs --disable-test --disable-cups --disable-pcima --host=arm-linux --target=arm-linux --build=i686 CC="arm-linux-gcc" 然後修改config.h #cd /opt/arm/utils/ #vi config.h 在config.h末尾加入以下內容 ifndef UCHAR_MAX define UCHAR_MAX 256 endif ifndef USHRT_MAX define USHRT_MAX 65536 endif ifndef PATH_MAX define PATH_MAX 4095 endif 然後保存 #pwd /opt/arm/utils #make #make install
由於藍牙配對時有一個passcode或者是pin.當藍牙設備A向藍牙設備B發出連接請求時,A會想B發出一個配對密碼,隻有當B向A發送相同的 配對密碼後才會建立連接。這個發送配對密碼是通過/utils/etc/bluetooth/hcid.conf的配置來完成的
#vi /utils/etc/bluetooth/hcid.conf
到此,libs和utils工具都已經交叉結束。需要一直的libs庫和utils工具都在/opt/arm/libs和/opg/arm/utils下了。
接下來要做的就是重做文件係統
將開發板光盤自帶的文件係統壓縮包複製到/opt/arm下
#cd /opt/arm #tar xzvf root.tar.gz #cd .. #cd libs #ls include lib ..(還有其他的目錄或者文件夾) #cd lib #pwd /opt/arm/libs/lib 將此lib下的所有文件都複製到上麵加壓的文件係統的/usr/lib和/usr/local/lib中。 #cd /opg/arm/utils #ls bin sbin etc 將此處的bin和sbin裏麵的所有文件複製到上麵解壓的文件係統的/usr/bin、/usr/sbin #cd .. #cd etc #pwd /opt/arm/utils/etc #cp -rif bluetooth /opt/arm/root/etc
版權申明:
轉載文章請注明原文出處https://blog.csdn.net/feiyinzilgd/archive/2010/02/09/5303149.aspx
並請聯係譚海燕本人或者前往譚海燕個人主頁留言
最後更新:2017-04-02 04:01:46