首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入式arm linux蓝牙文件传输移植(1)

嵌入式arm linux蓝牙文件传输移植(1)

嵌入式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内核

[cpp] view plaincopyprint?


  • #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


[cpp] view plaincopyprint?


  • #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


[cpp] view plaincopyprint?


  • #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。需要对


[cpp] view plaincopyprint?


  • #tar xzvf linux-2.6.29
  • #cd linux-2.6.29
  • #make menuconfig


配置内核的时候,需要把蓝牙的部分配置加上去。
然后就开始交叉编译内核。



[cpp] view plaincopyprint?


  • #make zImage


3.移植bluez-libs.
创建一个文件夹用来安装libs,然后交叉编译,并安装,流程如下:
我是把所有的都安装包都放在/opt/arm下,可根据自己的情况自己选择。
交叉编译的libs库和utils分别安装在/opt/arm/libs和/opt/arm/utils



[cpp] view plaincopyprint?


  • #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保存。
在命令行输入


[cpp] view plaincopyprint?


  • #cd /opt/arm/bluez-libs-2.25
  • #export PKG_CONFIG_PATH=/usr/lib/pkgconfig
  • #make
  • #make install
继承事业,薪火相传
返回列表