`
mmdev
  • 浏览: 13169745 次
  • 性别: Icon_minigender_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内核

  1. #cd/usr/src/kernels/2.6.25-14.fc9.i686/
  2. #makemenuconfig
  3. Networking-->
  4. <M>Bluetoothsubsystemsupport-->
  5. <M>L2CAPprotoclsupport
  6. <M>SCOlinkssupport
  7. <M>RFCOMMprotocolsupport
  8. [*]RFCOMMTTYsupport
  9. <M>BENPprotocolsupport
  10. [*]Multicastfiltersupport
  11. [*]Protocolfiltersupport
  12. <M>CMTPprotocolsupport
  13. <M>HIDPprotocolsupport
  14. Bluetoothdevicesdrivers-->
  15. <M>HCIUSBdriver

3.安装libs和utils。
libs和bluez得安装都是安装linux软件正常方式安装
安装libs

  1. #tarxzvfbluez-libs-3.36.tar.gz
  2. #cdbluez-libs-2.25
  3. #./configure
  4. #make
  5. #makeinstall

注意:如果你是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

  1. #tarxzvfarm-linux-gcc/usr/local
  2. #vi/root/.bashrc
  3. #.bashrc
  4. #Userspecificaliasesandfunctions
  5. aliasrm='rm-i'
  6. aliascp='cp-i'
  7. aliasmv='mv-i'
  8. #Sourceglobaldefinitions
  9. if[-f/etc/bashrc];then
  10. ./etc/bashrc
  11. fi
  12. exportPATH=$PATH:/usr/local/arm/4.3.2/bin

2,解压编译配置内核
由于我使我开发板光盘自带的内核源码,所以不需要修改源码中的Makefile。如果是从网上下载的内核源码,在编译的时候需要修改Makefile。需要对

  1. #tarxzvflinux-2.6.29
  2. #cdlinux-2.6.29
  3. #makemenuconfig

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

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

  1. #cd/opt/arm
  2. #mkdirlibs
  3. #tarxzvfbluez-libs-2.25.tar.gz
  4. #cdbluez-libs-2.25
  5. #./configure--prefix=/home/libs--target=arm-linuxCC="arm-linux-gcc"--build=arm-linux--host=arm-linux
  6. #viconfig.h
  7. 加入以下内容:
  8. #ifndefUCHAR_MAX
  9. #defineUCHAR_MAX256
  10. #endif
  11. #ifndefUSHRT_MAX
  12. #defineUSHRT_MAX65536
  13. #endif
  14. #ifndefPATH_MAX
  15. #definePATH_MAX4095
  16. #endif

然后就:wq保存。
在命令行输入

  1. #cd/opt/arm/bluez-libs-2.25
  2. #exportPKG_CONFIG_PATH=/usr/lib/pkgconfig
  3. #make
  4. #makeinstall

交叉编译utils工具。

  1. #cd/opt/arm
  2. #tarxzvfbluez-utils-2.25
  3. #cdbluez-utils-2.25
  4. #./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=i686CC="arm-linux-gcc"
  5. 然后修改config.h
  6. #cd/opt/arm/utils/
  7. #viconfig.h
  8. 在config.h末尾加入以下内容
  9. ifndefUCHAR_MAX
  10. defineUCHAR_MAX256
  11. endif
  12. ifndefUSHRT_MAX
  13. defineUSHRT_MAX65536
  14. endif
  15. ifndefPATH_MAX
  16. definePATH_MAX4095
  17. endif
  18. 然后保存
  19. #pwd
  20. /opt/arm/utils
  21. #make
  22. #makeinstall

由于蓝牙配对时有一个passcode或者是pin.当蓝牙设备A向蓝牙设备B发出连接请求时,A会想B发出一个配对密码,只有当B向A发送相同的 配对密码后才会建立连接。这个发送配对密码是通过/utils/etc/bluetooth/hcid.conf的配置来完成的

  1. #vi/utils/etc/bluetooth/hcid.conf

到此,libs和utils工具都已经交叉结束。需要一直的libs库和utils工具都在/opt/arm/libs和/opg/arm/utils下了。
接下来要做的就是重做文件系统
将开发板光盘自带的文件系统压缩包复制到/opt/arm下

  1. #cd/opt/arm
  2. #tarxzvfroot.tar.gz
  3. #cd..
  4. #cdlibs
  5. #ls
  6. includelib..(还有其他的目录或者文件夹)
  7. #cdlib
  8. #pwd
  9. /opt/arm/libs/lib
  10. 将此lib下的所有文件都复制到上面加压的文件系统的/usr/lib和/usr/local/lib中。
  11. #cd/opg/arm/utils
  12. #ls
  13. binsbinetc
  14. 将此处的bin和sbin里面的所有文件复制到上面解压的文件系统的/usr/bin、/usr/sbin
  15. #cd..
  16. #cdetc
  17. #pwd
  18. /opt/arm/utils/etc
  19. #cp-rifbluetooth/opt/arm/root/etc

分享到:
评论

相关推荐

    蓝牙协议栈移植(arm)

    蓝牙协议栈移植到ARM板是一项复杂的技术工作,主要涉及到蓝牙技术、嵌入式系统、Linux内核以及硬件平台等多个方面。以下将详细解释这个过程的关键步骤及其相关知识点: 首先,蓝牙协议栈是实现蓝牙功能的核心组件,...

    ARM平台上蓝牙协议栈Bluez的移植使用和配置

    总之,ARM平台上的蓝牙协议栈Bluez的移植、使用和配置是一个涉及多方面知识的过程,包括Linux系统编程、嵌入式开发、蓝牙协议以及设备驱动等。通过深入学习和实践,开发者能够充分利用Bluez实现各种蓝牙应用场景,...

    蓝牙协议栈的移植.pdf

    目前,Linux操作系统下的官方蓝牙协议栈BlueZ因其结构简单、灵活性强、高效和模块化等特点而受到青睐。 #### 二、BlueZ体系结构 BlueZ是Linux操作系统下用于支持蓝牙功能的标准协议栈,它由内核代码和用户态程序两...

    蓝牙协议栈BlueZ的移植与开发

    BlueZ是公布在Internet上的免费蓝牙协议栈,由于它结构简单,应用方便,具有灵活、高效和模块化的特点且具有较强的兼容性,因此BlueZ已经成为Linux操作系统下的官方的蓝牙协议栈。 S3C2410x是三星公司推出的一款高...

    在linux平台上移植BlueZ

    总之,移植和配置BlueZ在Linux嵌入式平台上是一项技术性较强的任务,需要对蓝牙协议栈、Linux内核配置以及相关工具的深入理解。通过适当的资源利用、细致的配置和调试,可以成功地在嵌入式系统上实现蓝牙功能。在...

    bluez蓝牙协议栈交叉编译移植教程

    在现代嵌入式系统开发中,蓝牙技术的应用日益广泛,而BlueZ作为Linux系统下最常用的蓝牙协议栈,其移植与编译成为开发者关注的重点。本文将深度解析BlueZ蓝牙协议栈的交叉编译移植过程,特别是针对S3C2410平台的移植...

    Hi3516/Hi3521d等芯片的蓝牙协议栈驱动移植

    《Hi3516/Hi3521d芯片的蓝牙协议栈驱动移植详解》 在嵌入式系统开发中,驱动程序的移植是一项至关重要的工作,尤其在涉及到无线通信技术如蓝牙时。本文将详细解析针对Hi3516和Hi3521d芯片的蓝牙协议栈驱动移植过程...

    基于arm_linux系统蓝牙文件传输技术的研究与实现

    完整的蓝牙协议栈可以分为三层:核心协议、电缆替代协议和选用协议。 - **核心协议**:包括射频协议(Radio)、基带与链路控制器协议(Baseband & Link Controller)、链路管理器协议(Link Manager Protocol)、...

    蓝牙协议栈bluez代码及二进制文件打包BLUEZ.tar.gz

    蓝牙协议栈Bluez是Linux操作系统上实现蓝牙功能的核心软件组件,它提供了丰富的API和工具,使得开发者能够在Linux系统上进行蓝牙设备的控制和通信。在Linux平台上交叉编译移植Bluez,是将Bluez源码编译为适用于特定...

    ARM嵌入式Linux系统开发从入门到精通

    10. **物联网通信协议**:可能还会涉及到TCP/IP协议栈、Wi-Fi、蓝牙、ZigBee等物联网通信协议的理解和应用。 通过这套教程,初学者可以从零开始,逐步掌握ARM嵌入式Linux系统开发的各个方面,从而能够独立设计和...

    嵌入式USB蓝牙设备驱动程序的实现

    因此,搭建嵌入式Linux系统的第一步是配置交叉编译环境,使用arm-linux-gcc作为交叉编译工具,确保应用程序能够在OMAP1510上正确执行。 #### 三、蓝牙协议栈与HCI层分析 蓝牙技术作为短距离无线通信标准,其协议栈...

    构建嵌入式Linux开发环境

    例如,如果你的目标平台是ARM架构,那么你需要下载并配置arm-linux-gcc或者gcc-arm-none-eabi这样的工具链。 其次,内核移植是构建环境的核心环节。这包括选择合适的内核版本(在这里是2.6.27),对内核源码进行...

    嵌入式Linux开发手册

    嵌入式设备经常需要网络功能,如TCP/IP协议栈支持、无线连接(WiFi、蓝牙)、串口通信等。开发者需要理解网络协议和API,如socket编程,以便实现网络服务和通信。 八、实时性与QoS 对于某些需要严格时间响应的...

    嵌入式arm开发技术

    - **TCP/IP协议栈**:实现网络通信,需要理解和应用TCP/IP协议栈,包括IP、TCP、UDP等协议。 - **无线连接**:Wi-Fi、蓝牙、Zigbee等无线通信技术在嵌入式设备中的应用和编程。 7. **电源管理** - **低功耗设计*...

    linux-蓝牙客户端移植.rar

    总的来说,这个“linux-蓝牙客户端移植”项目涉及了Linux系统下的蓝牙编程、交叉编译技术以及客户端与服务器间的通信协议。为了成功完成移植,开发者需要对蓝牙协议有深入的理解,熟悉Linux的编程环境,以及掌握如何...

    嵌入式Linux系统及其应用研究.pdf

    文章详细介绍了嵌入式Linux系统架构、实时性扩展以及蓝牙协议栈的实现,并分享了系统移植过程中的关键问题及解决方案。 首先,嵌入式Linux系统的核心在于其内核,内核负责管理硬件平台、内存、进程、设备、文件以及...

    蓝牙模块在HHARM2410上的移植.

    Bluez是Linux系统上官方支持的蓝牙协议栈,提供了一系列的API和服务,包括主机控制接口(HCI)、服务发现协议(SDP)、逻辑链路控制与适配协议(L2CAP)以及RFCOMM等。在HHARM2410上移植Bluez,我们需要对内核进行打补丁...

    Linux移植和红外通信[收集].pdf

    在嵌入式系统中,将Linux操作系统移植到ARM架构的硬件平台(如FriendlyARM的mini2440开发板)上是一项重要的工作。移植过程包括建立宿主机环境和交叉编译环境,选择和配置适合目标硬件的Linux内核,然后编译内核,...

Global site tag (gtag.js) - Google Analytics