嵌入式arm linux藍芽檔案傳輸移植

來源:互聯網
上載者:User

嵌入式arm linux藍芽檔案傳輸移植
目前,藍芽技術已經比較成熟,特別是基於手機和PC得藍芽檔案傳輸。
本文主要講述基於嵌入式arm linux的藍芽檔案傳輸。
 
   現行2.6.x的linux核心都已經整合了bluez藍牙堆疊,對於2.4版本核心的需要到bluez官方網站下載並安裝bluez藍牙堆疊。
http://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
http://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/<br />#make menuconfig<br />Networking --><br /> <M> Bluetooth subsystem support--><br /> <M> L2CAP protocl support<br /> <M> SCO links support<br /> <M> RFCOMM protocol support<br /> [*] RFCOMM TTY support<br /> <M> BENP protocol support<br /> [*] Multicast filter support<br /> [*] Protocol filter support<br /> <M> CMTP protocol support<br /> <M> HIDP protocol support<br /> Bluetooth devices drivers--><br /> <M> HCI USB driver

3.安裝libs和utils。
libs和bluez得安裝都是安裝linux軟體正常方式安裝
   安裝libs

#tar xzvf bluez-libs-3.36.tar.gz<br />#cd bluez-libs-2.25<br />#./configure<br />#make<br />#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<br />#vi /root/.bashrc<br /> # .bashrc</p><p> # User specific aliases and functions</p><p> alias rm='rm -i'<br /> alias cp='cp -i'<br /> alias mv='mv -i'</p><p> # Source global definitions<br /> if [ -f /etc/bashrc ]; then<br /> . /etc/bashrc<br /> fi</p><p> export PATH=$PATH:/usr/local/arm/4.3.2/bin

2,解壓編譯配置核心
    由於我使我開發板光碟片內建的核心源碼,所以不需要修改源碼中的Makefile。如果是從網上下載的核心源碼,在編譯的時候需要修改Makefile。需要對

#tar xzvf linux-2.6.29<br />#cd linux-2.6.29<br />#make menuconfig

配置核心的時候,需要把藍芽的部分配置加上去。
然後就開始交叉編譯核心。

 

#make zImage

3.移植bluez-libs.
建立一個檔案夾用來安裝libs,然後交叉編譯,並安裝,流程如下:
我是把所有的都安裝包都放在/opt/arm下,可根據自己的情況自己選擇。
交叉編譯的libs庫和utils分別安裝在/opt/arm/libs和/opt/arm/utils

 

#cd /opt/arm<br />#mkdir libs<br />#tar xzvf bluez-libs-2.25.tar.gz<br />#cd bluez-libs-2.25<br />#./configure --prefix=/home/libs --target=arm-linux CC="arm-linux-gcc" --build=arm-linux --host=arm-linux<br />#vi config.h<br />加入以下內容:<br />#ifndef UCHAR_MAX<br />#define UCHAR_MAX 256<br />#endif</p><p>#ifndef USHRT_MAX<br />#define USHRT_MAX 65536<br />#endif</p><p>#ifndef PATH_MAX<br />#define PATH_MAX 4095<br />#endif

然後就:wq儲存。
在命令列輸入

#cd /opt/arm/bluez-libs-2.25<br />#export PKG_CONFIG_PATH=/usr/lib/pkgconfig<br />#make<br />#make install

交叉編譯utils工具。

#cd /opt/arm<br />#tar xzvf bluez-utils-2.25<br />#cd bluez-utils-2.25<br />#./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"<br />然後修改config.h<br />#cd /opt/arm/utils/<br />#vi config.h<br />在config.h末尾加入以下內容</p><p>ifndef UCHAR_MAX<br />define UCHAR_MAX 256<br />endif</p><p>ifndef USHRT_MAX<br />define USHRT_MAX 65536<br />endif</p><p>ifndef PATH_MAX<br />define PATH_MAX 4095<br />endif<br />然後儲存<br />#pwd<br />/opt/arm/utils<br />#make<br />#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<br />#tar xzvf root.tar.gz<br />#cd ..<br />#cd libs<br />#ls<br />include lib ..(還有其他的目錄或者檔案夾)<br />#cd lib<br />#pwd<br />/opt/arm/libs/lib<br />將此lib下的所有檔案都複製到上面加壓的檔案系統的/usr/lib和/usr/local/lib中。<br />#cd /opg/arm/utils<br />#ls<br />bin sbin etc<br />將此處的bin和sbin裡面的所有檔案複製到上面解壓的檔案系統的/usr/bin、/usr/sbin<br />#cd ..<br />#cd etc<br />#pwd<br />/opt/arm/utils/etc<br />#cp -rif bluetooth /opt/arm/root/etc

 

 

 

著作權申明:
轉載文章請註明原文出處http://blog.csdn.net/feiyinzilgd/archive/2010/02/09/5303149.aspx
並請聯絡譚海燕本人或者前往譚海燕個人首頁留言

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.