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

嵌入式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/
#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

 

 

 



版权申明:
转载文章请注明原文出处http://blog.csdn.net/feiyinzilgd/archive/2010/02/09/5303149.aspx
并请联系谭海燕本人或者前往谭海燕个人主页留言

时间: 2024-12-03 22:25:31

嵌入式arm linux蓝牙文件传输移植的相关文章

嵌入式arm linux 下glibc 断言死机要怎么查?

嵌入式arm linux 下glibc 断言死机要怎么查? armv7  资源有限,用不了valgrind 工具.

嵌入式arm linux环境中gdb+gdbserver调试

采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试.目标系统必须包括gdbserver程序,宿主机也必须安装gdb程序.在此我们还不能直接采用linux发行版自带的gdb,需要交叉编译gdb和gdbserver. 一.前言 嵌入式Linux系统中,应用开发过程中,很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序.采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gd

线程-windows 和 linux 网络编程文件传输

问题描述 windows 和 linux 网络编程文件传输 windows 两个线程,linux 两个进程,现在想传输一个文件,windows 这边其中的一个进程传一部分,剩下的由另外的一个进程来传.有什么好的方法吗?找了好多可是都没有相关的资料.谢谢大家. 解决方案 就是socket通信传递,windows做客户端,linux做服务端 解决方案二: Linux与Windows下文件传输windows到linux的文件传输linux 和 windows 文件传输

如何在ARM linux嵌入式环境下配置Arduino的开发环境

问题描述 如何在ARM linux嵌入式环境下配置Arduino的开发环境 因为某些原因需要在ARM linux下设置一个arduino的开发环境,需要在获得代码之后将代码编译并且将代码下载到板子上.之前我有看到过arduino官网上有放出linux32 的源程序,不知道支不支持arm环境,还是要通过源代码编译文件后才能用? 解决方案 你改一下它的MakeFile,把gcc改成交叉编译试试~

Linux与windows之间-文件传输工具RZSZ

RZSZ简介 一般来说,linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆 linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地 : 与ssh有关的两个命令可以提供很方便的操作: sz:将选定的文件发送(send)到本地 机器 rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器 rz, sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具,windows端需要支持ZMode

Linux C实现文件传输

file_server.c  文件传输顺序服务器示例 //////////////////////////////////////////////////////////////////////////////////////< br>// file_server.c 文件传输顺序服务器示例 //////////////////////////////////////////////////////////////////////////////////////// 本文件是服务器的代码#in

Linux系统下的文件传输工具:RZSZ的用法

Linux系统下传输方式很多,比如:通过FTP SFTP - 等等.linux服务器大多是通过ssh客户端来进行远程的登陆和管理的,使用ssh登陆linux主机以后,如何能够快速的和本地机器进行文件的交互呢,也就是上传和下载文件到服务器和本地,根据RZSZ特性,这里我们通过SecureCRT提供ZModem配合RZSZ传输工具进行讲解 首先先了解与ssh有关的两个命令可以提供很方便的操作: sz:将选定的文件发送(send)到本地机器 rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到

Linux文件传输与mysql数据库安装

文件传输工具使用 为了速成,关于linux系统的学习都先放一放,用到哪个知识点就查哪个,这里想在linux下装一些 服务练练手,最先想到的就是装个mysql数据库试试. 因为我用的是虚拟机下的linux,而且虚拟机还是精简版的.一直 琢磨着怎么把windows下面的文件导捣鼓到linux下,郁闷的是装的centOS打不开,一闪就没了!但ping 百度网址是通的.然后 想给虚拟机捣鼓着安装VMware tools 也没成功,后来调整了一下虚拟机的几种联网方式也没把问题解决. 后来想到一种 方式,既

Linux Mac之间文件传输

Linux Mac之间文件传输 从Mac上传输文件到Linux主机上,这个过程可以使用 FTP 客户端,如 Transmit for Mac,FileZilla  虽然使用客户端操作起来比较方便,但需要下载安装等,可能遇到下载不流畅等问题.所以还是有一部分人喜欢在终端敲命令来实现文件传输的. ==================  scp 命令 (Mac,Linux通用) ==================  scp 可以在 2个 linux 主机间复制文件:  命令基本格式: