蓝牙协议栈BlueZ的移植与开发
bluez协议栈图解
bluez协议栈图解Bluetooth protocol stackMain articles: and[] LMP (Link Management Protocol)Used for control of the radio link between two devices. Implemented on the controller.L2CAP (Logical Link Control & Adaptation Protocol)Used to multiplex multiple logical connections between two devices using different higher level protocols. Provides segmentation and reassembly of on-air packets.In Retransmission & Flow Control modes, L2CAP can be configured for reliable or isochronous data per channel by performing retransmissions and CRC checks.Bluetooth Core Specification Addendum 1 adds two additional L2CAP modes to the core specification. These modes effectively deprecate original Retransmission and Flow Control modes:Enhanced Retransmission Mode (ERTM): This mode is an improved version of the original retransmission mode. This mode providesa reliable L2CAP channel.Streaming Mode (SM): This is a very simple mode, with no retransmission or flow control. This mode provides an unreliable L2CAP channel.Reliability in any of these modes is optionally and/or additionally guaranteed by the lower layer Bluetooth BDR/EDR air interface by configuring the number of retransmissions and flush timeout (time after which the radio will flush packets). In-order sequencing is guaranteed by the lower layer.Only L2CAP channels configured in ERTM or SM may be operated over AMP logical links.SDP (Service Discovery Protocol)HCI (Host/Controller Interface)Standardised communication between the host stack (e.g., a PC or mobile phone OS) and the controller (the Bluetooth IC). This standard allows the host stack or controller IC to be swapped with minimal adaptation.In Bluetooth devices with simple functionality (e.g., headsets) the host stack and controller can be implemented on the same microprocessor. In this case the HCI is optional, although often implemented as an internal software interface.RFCOMM (Serial Port Emulation)RFCOMM provides a simple reliable data stream to the user, similar to TCP. It is used directly by many telephony related profiles as a carrier for AT commands, as well as being a transport layer for OBEX over Bluetooth.Many Bluetooth applications use RFCOMM because of its widespread support and publicly available API on most operating systems. Additionally, applications that used a serial port to communicate can be quickly ported to use RFCOMM.。
Bluedroid:蓝牙协议栈源码剖析
Bluedroid:蓝⽛协议栈源码剖析⼀、基础知识介绍1.缩略语BTIF: Bluetooth InterfaceBTU : Bluetooth Upper LayerBTM: Bluetooth ManagerBTE: Bluetooth embedded systemBTA :Blueetooth application layerCO: call out\CI: call inHF : Handsfree ProfileHH: HID Host ProfileHL: Health Device ProfileV:audio\vidioag: audio gatewayr: audio/video registrationgattc: GATT clientBLE: Bluetooth Low Energy2.蓝⽛协议栈框架图:1.基带层(BB)提供了两种不同的物理链路(同步⾯向连接链路SCO Synchronous Connection Oriented和异步⽆连接链路ACL Asynchronous Connection Less),负责跳频和蓝⽛数据及信息帧的传输,且对所有类型的数据包提供了不同层次的前向纠错码(FEC Frequency Error Correction)或循环沉余度差错校验(CTC Cyclic Redundancy Check);2.LMP层负责两个或多个设备链路的建⽴和拆除及链路的安全和控制,如鉴权和加密、控制和协商基带包的⼤⼩等,它为上层软件模块提供了不同的访问⼊⼝;3.蓝⽛主机控制器接⼝HCI (Host Controller Interface)由基带控制器、连接管理器、控制和事件寄存器等组成。
它是蓝⽛协议中软硬件之间的接⼝,它提供了⼀个调⽤下层BB、LM、状态和控制寄存器等硬件的统⼀命令,上、下两个模块接⼝之间的消息和数据的传递必须通过HCI的解释才能进⾏。
linux 蓝牙编程 bluez
linux蓝牙编程bluez 收藏从别的地方转了一篇蓝牙编程的,感觉比较详细,接下来自己慢慢验证一下。
实战Linux Bluetooth编程实战Linux Bluetooth编程(一)协议栈概述前言:随着嵌入式系统的飞速发展,很多嵌入式平台上需要Bluetooth设备和应用。
但在Linux 下如何对Bluetooth编程,一直没有一份很好的中文文档。
Sam结合自己的工作,一步一步将一些有用的东西记录下来,希望对其它Linux下Bluetooth编程的朋友有点帮助。
一:Bluetooth基本概念:Bluetooth是爱立信、诺基亚、东芝、IBM和Intel 5家公司在1998年联合推出的一项无线网络技术。
其宗旨是提供一种短距离、低成本的无线传输应用技术。
在行业协会筹备阶段,需要一个极具有表现力的名字来命名这项高新技术。
行业组织人员,在经过一夜关于欧洲历史和未来无限技术发展的讨论后,有些人认为用Blatand国王的名字命名再合适不过了。
Blatand国王将现在的挪威,瑞典和丹麦统一起来;就如同这项即将面世的技术,将标准不一的短距离无线传输技术统一起来。
Intel负责半导体芯片和传输软件的开发,爱立信负责无线射频和移动电话软件的开发,IBM 和东芝负责笔记本电脑接口规格的开发。
蓝牙是无线数据和语音传输的开放式标准,它将各种通信设备、计算机及其终端设备、各种数字数据系统、甚至家用电器采用无线方式联接起来。
它的传输距离为10cm~10m,如果增加功率或是加上某些外设便可达到100m的传输距离。
它采用2.4GHz ISM频段和调频、跳频技术,使用权向纠错编码、ARQ、TDD和基带协议。
TDMA每时隙为0.625μs,基带符合速率为1Mb/s。
蓝牙支持64kb/s实时语音传输和数据传输,语音编码为CVSD,发射功率分别为1mW、2.5mW和100mW,并使用全球统一的48比特的设备识别码。
由于蓝牙采用无线接口来代替有线电缆连接,具有很强的移植性,并且适用于多种场合,加上该技术功耗低、对人体危害小,而且应用简单、容易实现,所以易于推广。
bluez编译移植
Dbus移植步骤1.进入dbus的目录运行./configure --host=arm-linux--prefix=/bluetooth/dbus2.出现错误can not run test program while cross compiling[mystic@moolenaar]$ . checking for getpeereid... nochecking abstract socket namespace... configure: error: cannot run test program while cross compilingSee `config.log' for more details.执行./configure时要在宿主系统中运行一些测试程序,因为是交叉编译所以这个测试是一定通不过的。
不过没问题,我们可以在configure 时指定cache-file文件来屏障掉测试程序,在下面编译glib包时会遇到同样的问题。
处理方法:在源码包根目录下执行[mystic@moolenaar]$ echo ac_cv_have_abstract_sockets=yes >arm-linux.cache或者自己新建一个文件,vim arm-linux.cache在里面输入:ac_cv_have_abstract_sockets=yes[mystic@moolenaar]$ ./configure --host=arm-linux--prefix=/bluetooth/dbus --cache-file=arm-linux.cache参数解释:--prefix指定编译好的文件存放的路径,默认会放到/usr/bin下--host 指定编译器的类型,这里指定为arm-linux交叉编译,默认是本机的gcc编译--cache 指定测试的信息写的地方,这里是写到了arm-linux.cache里面一会会提示缺少xml库,下载libxlm2,解压后:./configure –-prefix=/bluetooth/libxml –-host=arm-linuxmake ->make install编译完成后一定要检查libxml/lib下的库文件的格式是否是ARM的,否则不能用。
蓝牙协议栈BlueZ的移植与开发
蓝牙协议栈BlueZ的移植与开发*欧阳鑫 于红岩 吕杨(昆明理工大学信息工程与自动化学院,昆明,650051)摘要:蓝牙技术是当前国内外科技界和产业界研究开发的热点技术,其应用范围包括手机、PDA、信息家电设备等领域,蓝牙技术在嵌入式系统上必将得到广泛的应用。
而要在嵌入式系统上提供蓝牙开发支持,蓝牙协议栈的移植是关键。
本文分析了蓝牙协议栈BlueZ体系结构,详细介绍了在S3C2410开发板上移植BlueZ的步骤,建立了嵌入式蓝牙应用开发平台,并提出了用BlueZ 开发蓝牙应用程序的思路。
关键字:蓝牙技术;蓝牙协议栈BlueZ;移植;S3C2410;Linux中图分类号:TP368.1 文献标识码:ABlueZ Porting and ProgrammingOu Yangxin,Yu Hongyan,Lv Yang(College of Information Engineering and Automation,Kunming University of Scienceand Technology,Kunming 650051,China)Abstract: Bluetooth technology is the focused on by the domestic and overseas research institutes. This technology is widely used in mobile phone, PDA, and Information Appliance devices. In the future,bluetooth technology will be widely used in embedded system. Built some bluetooth applications on embedded system,the key technology is porting bluetooth protocol suites to platform. In this paper,we study the BlueZ architecture,describe the steps of Porting BlueZ to S3C2410 Platform in detail,and build the embedded bluetooth application programming platform. In the end, we also give the idea of bluetooth programming.Keywords: bluetooth technology,bluetooth protocol suites BlueZ,porting, S3C2410, Linux1引言蓝牙技术是一项低价格、低功耗的射频技术,它能使蓝牙设备实现近距离无线通信。
基于BlueZ协议栈的蓝牙语音接入系统实现与性能分析
摘要 :根据 蓝牙“ 三合 一电话” 应用模 型要 求 , 通过 内核 配置 、 础库 和工具 集 的移植 以及 内核 烧 基
写等 步骤 , 蓝牙 B uZ协议 栈移植 到嵌 入 式 A M 平 台, 程 实现 了 T SB nr 将 l e R 编 C iay协议 , 制 完 研
成 了一种基 于嵌入 式蓝 牙协议栈 Bu Z 的语 音无 线接 入 系 统 , 括嵌 入 式 蓝牙 语 音 网关和 蓝牙 le 包
b s d o u Z r t c lsa k a e n Bl e p o o o t c
Ch n Fa g e n S n e h n S e a f n Hu Jn Xi ewe o g Tic e g h n Li n e g ig aW i i
维普资讯
பைடு நூலகம்
第3 8卷 第 4期
20 0 8年 7月
东 南 大 学 学 报 (自然科学版 )
J UR L OF S UT E S NI R I Y ( trl ce c dt n O NA O H A T U VE S T Na a S i eE io ) u n i
关 键词 : l Z; 入 式网关 ; 音接 入 ; Bu 嵌 e 语 话务 模 型
中图分 类号 : N 1 T 94
文献标 识码 : A
文章编 号 : 0 1 0 0 (0 8 0 -5 80 10 — 5 5 20 ) 40 5 -6
蓝牙协议栈开发流程
蓝牙协议栈开发流程一、概述蓝牙技术作为一种短距离无线通信技术,广泛应用于各种设备之间的数据传输和通信。
在蓝牙设备间进行通信时,需要遵循一定的蓝牙协议规范,即蓝牙协议栈。
蓝牙协议栈是蓝牙设备上的软件实现,主要功用是处理不同层次的蓝牙规范,并提供API供应用程序调用。
蓝牙协议栈包含了多个不同的协议层,对于蓝牙设备来说,能够支持的蓝牙协议栈是非常重要的。
而蓝牙协议栈的开发流程,即在一个蓝牙设备上开发软件实现这些协议层的流程,也是开发一个蓝牙设备的关键步骤。
下面将详细介绍蓝牙协议栈的开发流程。
二、蓝牙协议栈开发流程1. 确定需求蓝牙协议栈的开发流程开始于明确定义需求。
这一阶段需要明确蓝牙设备的功能需求,包括支持的蓝牙协议版本、蓝牙协议栈的架构等。
确定需求是整个开发流程的基础,也是保证后续开发方向正确和产品质量的重要环节。
2. 协议规范研究在确定需求之后,开发团队需要深入研究蓝牙协议规范,理解蓝牙协议栈所需实现的各个协议层的功能和规范要求。
这一阶段需要对蓝牙规范文档进行详细的研究和理解,为后续的开发工作奠定基础。
3. 确定协议栈架构在研究协议规范的基础上,开发团队需要确定蓝牙协议栈的架构。
蓝牙协议栈通常包含物理层、链路层、基带层、逻辑链路控制和适配器层等多个不同的层次,确定协议栈架构可以使开发工作有组织、有条不紊地进行。
4. 实现协议栈在确定了协议栈的架构之后,开发团队开始实现各个协议层。
在实现过程中,需要严格按照蓝牙协议规范的要求进行开发,确保蓝牙设备的兼容性和性能。
通常在实现过程中需要使用C语言或者其他编程语言,配合开发工具进行开发和调试。
5. 测试验收在完成协议栈的开发之后,需要对蓝牙设备进行全面的测试验收。
测试包括功能测试、性能测试、兼容性测试等多个方面。
只有通过测试验收,蓝牙设备才能够正式投入使用。
6. 优化调整在测试验收过程中,可能会发现一些问题或者性能不佳的地方,此时需要对蓝牙协议栈进行优化调整,以提高蓝牙设备的性能和稳定性。
基于Bluez的应用程序的开发
Linux下Bluez的编程实现1、蓝牙的各个协议栈的简介 (2)1.1、蓝牙技术 (2)1.1、蓝牙协议栈 (2)1.2、蓝牙技术的特点 (3)1.2.1、蓝牙协议栈体系结构 (3)1.2.2、蓝牙协议栈低层模块 (4)1.2.3、软件模块 (5)1.3、蓝牙的一些Profile (5)2、Bluez和D-Bus (7)2.1、Bluez和D-Bus体系结构 (7)2.2、D-Bus介绍 (8)2.3、Bluez的安全接口 (12)2.4、Bluez适配器接口 (15)2.5、Bluez配对 (16)2.6、Bluez绑定 (16)3、Bluez编程实现 (17)3.1、蓝牙开发关键技术剖析 (17)3.1.1、连接机制分析 (17)3.1.2、自动连接 (18)3.1.3、时钟设计 (18)3.1.4、配对列表管理 (19)3.1.5、蓝牙文件传输模式 (20)3.2、hci层介绍 (20)3.2.1、hci层介绍 (20)3.2.2、hci层编程 (20)3.3、L2CAP层编程 (25)3.3.1、L2CAP协议简介 (25)3.3.2、L2CAP编程方法 (25)3.4、SDP协议简介 (26)4、Openobex (28)4.1、Openobex简介 (28)4.2、Openobex与bluez编程实现 (29)5、Obexftp (31)5.1、obexftp简介 (31)5.2、基于Obexftp的应用程序开发 (31)6、参考资料 (32)1、蓝牙的各个协议栈的简介1.1、蓝牙技术蓝牙(Bluetooth)技术是由Ericsson、IBM、Intel、Nokia和Toshiba公司于1998年5月共同提出开发的,并联合成立了蓝牙特殊利益小组(SIG),负责开发无线协议规范并设定交互操作的需求。
其本质是设备间的无线链接,意在于代替有线电缆。
1.1、蓝牙协议栈协议栈是指一组协议的集合,举个例子,把大象装到冰箱里,总共要3步。
蓝牙驱动及Bluez使用流程分析
Tech蓝牙驱动分析 及Bluez使用流程分析GuideRevision HistoryDate <01/11/2010> Issue <0.5> First draft Description Author Wylhistory目录1. 2. 3. ABSTRACT .................................................................................................................................................. 4 INTRODUCTION ........................................................................................................................................ 4 蓝牙驱动介绍 ............................................................................................................................................... 4 3.1 串口驱动介绍 ........................................................................................................................................ 5 32 初始化.................................................................................................................................................... 5 . 3.2.1 模块上电 ........................................................................................................................................ 5 3.2.2 PSKEY的设置 ................................................................................................................................. 6 3.3 HCIATTACH的工作原理 .......................................................................................................................... 7 3.3.1 Hci_uar和bcsp层的加入 ................................................................................................................. 9 3.3.2 hci层的加入.................................................................................................................................. 10 3.3.3 hci_attach的内核处理 .................................................................................................................. 11 4. 数据在驱动的传递流程.............................................................................................................................. 13 4.1 4.2 4.3 4.4 4.5 5. UART层的数据接收.............................................................................................................................. 13 HCI_UART的数据接收 .......................................................................................................................... 14 BCSP层的处理 ...................................................................................................................................... 15 HCI层及以上的处理............................................................................................................................. 15 数据流程的总结 .................................................................................................................................. 17扫描过程的分析 ......................................................................................................................................... 18 5.1 用户使用例子 ...................................................................................................................................... 18 5.2 用HCITOOL扫描时的逻辑 ..................................................................................................................... 18 5.2.1 上层逻辑 ...................................................................................................................................... 18 5.2.2 内核层逻辑 .................................................................................................................................. 19 5.3 通过DBUS触发的逻辑 .......................................................................................................................... 21 5.3.1 上层逻辑之adapter dbus方法的建立 ........................................................................................... 21 5.3.2 上层扫描方法的调用 ................................................................................................................... 22 5.3.3 Dbus触发的扫描对应于内核层的处理 ........................................................................................ 25 5.3.4 上层的扫描数据收集 ................................................................................................................... 26 5.3.5 Hci_send_frame的讨论 ................................................................................................................. 286.A2DP的使用过程........................................................................................................................................ 28 6.1 如何使用.............................................................................................................................................. 28 6.2 服务的激活 .......................................................................................................................................... 29 6.3 设备的创建 .......................................................................................................................................... 30 6.3.1 ............................................................................................................................................................. 33 6.3.2 ............................................................................................................................................................. 33 6.3.3 ............................................................................................................................................................. 33 6.3.4 ............................................................................................................................................................. 33 6.4 设备的连接 .......................................................................................................................................... 33 ©Tech, 2010-1-11 Page 2 of 466.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 7.L2cap的连接................................................................................................................................. 34 AVDTP_DISCOVER的发送逻辑................................................................................................... 35 AVDTP_GET_CAPABILITIES命令的发送.................................................................................... 36 AVDTP_SET_CONFIGURATION的逻辑 ...................................................................................... 37 AVDTP_OPEN函数逻辑 ............................................................................................................... 38 AVDTP_START的逻辑 .................................................................................................................. 40HANDSFREE的使用过程 .......................................................................................................................... 42 7.1 7.2 7.3 7.4 使用流程.............................................................................................................................................. 42 HEADSET的连接.................................................................................................................................... 42 SCO的打开 ........................................................................................................................................... 45 数据的流动 .......................................................................................................................................... 468. 9.总结 ............................................................................................................................................................. 46 未讨论 ......................................................................................................................................................... 46©Tech, 2010-1-11Page 3 of 461. 2.Abstract介绍一下bluez的驱动架构以及上层的使用流程.Introduction主要分成几个部分: Bluez驱动整体框架, 数据在驱动的传递流程, A2dp的上层逻辑, Handsfree的上层逻辑 主要软硬件配置如下: 内核:2.6.21 硬件:pxa310 蓝牙芯片:CSR BC4 BlueZ:3.223.蓝牙驱动介绍从整体上来说,我们的蓝牙是一个模块,它需要和CPU通讯以交换信息,所以它需要一个接口,在 我们的平台上它用的UART口, 当然还有USB接口的, 我没做过, 所以不讨论; 另外一方面蓝牙还要和modem 这边传递数据,比如传递语音,这也要一个接口才行,因为我们的蓝牙芯片只提供了PCM接口,所以或者 是modem的输出就是数字接口,或者就需要把modem输出的数字接口经过一定的转化,比如引入一个中间 的codec把模拟接口转化成数字接口,再接到我们的蓝牙芯片,我们的板子就是后一种实现方案;而蓝牙 驱动要做哪些事呢?在我刚接手的时候,也是一头雾水,蓝牙驱动这说法,太抽象了,因为我们用的是蓝 牙模块,并非是独立的芯片,它所该有的功能都有了;从协议层的角度来说radio层,BB层,LC,LM层, HCI层都不需要我们去管, 都应该是已经被实现在蓝牙模块里面了,需要我们关注的本质就是cpu和蓝牙模 块之间的接口, 以及在这个接口上传递的数据格式, 也就是说数据包的格式, 数据包的处理, 而后者在linux 驱动层里面是已经有完整实现的,只需要在配置的时候选上: HCI UART driver BCSP protocol support 就可以了,不过有时候模块供应商会做一些修改,也可以用他们已经修改过的代码; 对于前者,也就是接口的问题,对我来说本质上就是串口的驱动,这个显然linux的代码里面早就已经实现 了的,也不需要我去操心,看看下面这个图就明白了:©Tech, 2010-1-11Page 4 of 46上面写明了internal ROM,也即是说是蓝牙模块内部的事情了,那我也就不管了; 经过这一番分析之后,剩下的事情就是初始化蓝牙模块了,那肯定少不了的上电,然后是模块重启, 还缺点什么呢? 蓝牙驱动和别的驱动一样,也要设一些寄存器,差别在于,它的寄存器被称为PSKEY,也就是说有 一步是PSKEY设置,这步是通过bccmd来完成的; 好像完了,但是还差一步,这步估计不好想到,仔细想想,假设现在蓝牙模块以及就绪了,数据从 蓝牙模块通过串口传递到了主板,但是这些数据是如何传递到蓝牙的协议层的呢?有点奇怪啊?这步是通 过hciattach来完成的; 总结一下,蓝牙驱动的三个步骤: 1, 串口驱动必须要先就绪,这是cpu和蓝牙模块之间的桥梁,没有这步,后面的都无法进行,包括 PSKEY的设置,数据的传递都是通过串口的,所以这步是根本; 2, 初始化,包括模块上电,PSKEY的设置; 3, 通过hciattach建立串口和蓝牙协议层之间的数据连接通道; 下面分别介绍! 3.1串口驱动介绍串口驱动本身很复杂,请参阅附录里面的文档“串口驱动分析”,这里可以简单介绍一下: 从上到下就是: TTY层 Uart层 Uart对应的Port层 对蓝牙来说, 数据先从串口驱动上来通过ldisc进入到蓝牙的hci_uart层, 然后交给更上面的协议层了; 这个过程后面会详细介绍;32 .初始化模块上电在我们的平台上是通过一个GPIO来控制的,在函数lin2008_poweron_wifibt_board里面会进 ©Tech, 2010-1-11 Page 5 of 463.2.1行上电的操作以及对应的reset动作,当然这步得需要看spec,通常是先高再低再高; 函数如下: static int wifibt_power_status; int lin2008_poweron_wifibt_board(void) { if (!wifibt_power_status) { pxa3xx_mfp_set_configs(lin2008_wifibt_pins, ARRAY_SIZE(lin2008_wifibt_pins)); pxa3xx_gpio_set_direction(MFP_WIFI_V18_ENABLE, GPIO_DIR_OUT); pxa3xx_gpio_set_direction(MFP_WLAN_RESETN, GPIO_DIR_OUT); pxa3xx_gpio_set_level(MFP_WIFI_V18_ENABLE, 1); pxa3xx_gpio_set_level(BT_RESET_GPIO, 1); pxa3xx_gpio_set_level(MFP_WLAN_RESETN, 1); mdelay(1); pxa3xx_gpio_set_level(BT_RESET_GPIO, 0); pxa3xx_gpio_set_level(MFP_WLAN_RESETN, 0); // bt need > 5 ms to reset mdelay(5); pxa3xx_gpio_set_level(BT_RESET_GPIO, 1); pxa3xx_gpio_set_level(MFP_WLAN_RESETN, 1); wifibt_power_status++; return 0; } wifibt_power_status++; return 1; } 因为用的是wifi和蓝牙合体的模块,所以里面也包含了对wifi的初始化; 3.2.2 PSKEY的设置 它的原理就是通过串口(前面已经建立起来的)发送命令给蓝牙模块,对于串口必须要知道的是要 能通讯,必须得设好波特率,另外一方面蓝牙模块的晶振频率也必须要设,否则它不知道该怎么跳 了;当然不同的芯片可能初始化的过程也不一样,也许还要下载firmware等等;在我们的平台上这步 是通过bccmd来完成的,比如下面这些设置: // PSKEY_ANA_FREQ &01fe = 9C40 // PSKEY_UART_BAUD_RATE &01be = 0EBF关于pskey的设置,请看附录“pskeys.html”,里面有更加全面的介绍; 下面来看看bccmd的工作过程: 我们调用的命令为: bccmd -t bcsp -d /dev/ttyS1 psload -r csr.psr 它的流程如下:©Tech, 2010-1-11Page 6 of 46从这个图可以看出,它的原理就是打开/dev/ttyS1然后根据用户传入的命令调用不同的处理函数,比 如对于psload就是读入配置文件并解析,再根据蓝牙芯片所识别的包类型(在这里是bcsp)拼凑发送 给底层的数据包,最后通过ubcsp_poll函数把数据发送出去; 经过这步的设置基本上蓝牙模块以及可以正常工作了; 但是还没有和上面的协议层建立纽带关系,也就是说从uart1收到的数据还没有传给hci层;3.3Hciattach的工作原理如何把uart1也就是蓝牙模块传上来的数据交给hci层,在驱动里面是通过一个叫做disc的机制完成 的,这个机制本意是用来做过滤或者限制收上来的字符的,但是在蓝牙驱动里面则直接把数据传给了蓝牙 协议层,再也不回到串口的控制了; 调用的命令为: hciattach -s 921600 /dev/ttyS1 bcsp 921600 下面看看这句话到底是什么意思? 先看上层的使用逻辑:©Tech, 2010-1-11Page 7 of 46最最关键的就是这两个ioctl了,那就是参数为TIOCSETD和HCIUARTSETPROTO的ioctl,下面需要看看内核 里面对于这两个ioctl的处理逻辑, 不过看这个逻辑之前需要先理一下驱动的逻辑架构, 否则你就会晕头转向, 请看下图:©Tech, 2010-1-11Page 8 of 46这是数据的流动过程,最底层的也就是和硬件打交道的是uart层了,它的存在和起作用是通过串口 驱动来保证的,这个请参阅附录,但是其它的层我们都不知道什么时候work的,下面来看看: 3.3.1 Hci_uar和bcsp层的加入 如图所示:©Tech, 2010-1-11Page 9 of 46Hci_uart层做的事情其实很简单。
XTNDAccessBlueSDK蓝牙协议软件的结构、移植与应用
XTNDAccess Blue SDK蓝牙协议软件的结构、移植与应用作者简介:李冉,现任美国IMAG公司Bluetooth产品专员。
1996-1998在电子部六所进行电信软件的开发工作;1998-2000在美国IMAG公司负责Tornado/VxWorks实时操作系统在嵌入式领域(主要是通信和自动控制领域)中应用的技术咨询工作;2000-现在在美国IMAG公司负责Extended Systems公司的蓝牙协议产品的技术咨询工作。
摘要:本文以Extended Systems公司的蓝牙协议栈产品XTNDAccess Blue SDK为例介绍了蓝牙协议软件的设计原理,协议栈结构,移植过程,及应用的开发方法。
关键词:XTNDAccess Blue SDKBluetoothIrDAProfileBasebandHCILMP/HCI/SDP/TCS/RFCOMM/OBEX/IrMCTCP/IP,PPP.AT command引言:蓝牙技术广阔的应用前景在国内引起了极大的关注,有些公司已经决定投入资金进行技术跟踪和相应产品的开发。
但大多数厂商还在持观望的态度,其中有蓝牙硬件成本仍高居不下的问题,也有蓝牙软件协议开发困难和协议兼容性认证困难的问题。
XTNDAccess Blue SDK是Extended Systems公司(,原码形式提供的,经过Bluetooth SIG 兼容性测试的协议软件产品。
目前全球已经有超过60个客户在使用该SDK进行着蓝牙应用的开发,其中不乏著名公司,如3COM/Plam,Motorola,HP, Xircomm, Red-M, Fujitsu, Flashpoint……本人希望通过介绍XTNDAccess Blue SDK的设计原理和实现方法,揭开蓝牙协议设计与实现的神秘面纱,增加读者对蓝牙协议软件的认识,使读者掌握使用XTNDAccess Blue SDK进行蓝牙产品的开发的过程,也为读者自己进行蓝牙软件设计与实现提供一定的思路。
Bluez的编译过程与方法
编译前说明及注意事项
• 1、四种方案均可,所选库根据编译器及库 之间的兼容性而定,库版本并不唯一 • 2、所选各库版本尽量偏低,避免带来意想 不到的错误,导致无法编译通过 • 3、dbus库可依赖expat或libxml,默认是 expat,建议用expat • 4、glib库版本过高,可能会用到zlib库 • 5、bluez-4.x以上版本,编译时需要用到 linux内核中的/include/linux/sockios.h
编译方案选择与说明
• • • • • • 二、 bluez-lib+bluez-utils+libxml方案 bluez-lib-3.36.tar.gz libxml2-2.7.4.tar.gz dbus-1.0.2.tar.gz glib-2.16.5.tar.bz2 bluez-utils-3.36.tar.gz
编译方案选择与说明
• 三、bluez-4.x + libxml方案 • libxml2-2.6.31.tar.gz dbus-1.0.2.tar.gz glib-2.22.3.tar.bz2 bluez-4.48.tar.gz
编译方案选择与说明
• 四、bluez-4.x + expat方案 • expat-2.0.1.tar.gz dbus-1.0.3.tar.gz glib-2.22.0.tar.bz2 bluez-4.48.tar.gz
Bluez介绍
• bluez新的版本不像旧的那样有什么bluezutil、bluez-lib什么的,就一个bluez4.48。
编译方案选择与说明
• • • • • • 一、 bluez-lib+bluez-utils+expat方案 bluez-lib-3.36.tar.gz expat-2.0.1.tar.gz dbus-1.2.16.tar.gz glib-2.22.4.tar.bz2 bluez-utils-3.36.tar.gz
蓝牙协议栈移植
蓝牙协议栈移植目录第一步:下载文件 (1)第二步:配置内核支持Bluetooth (2)第三步:交叉编译蓝牙协议栈库文件 (3)第四步:移植到arm板 (4)硬件平台:S3C6410开发板Linux内核:linux-3.0.1作者:孙怀亚说明:这是一个6410+usb蓝牙移植过程!在做下面的过程中,我认为你是有个有点嵌入式开发经验的人,并且交叉编译器已经安装完毕,内核源码已经可以编译通过运行等!特别要强调,usb总线驱动一定要是好的。
如有需要请联系:sunhuaiya@第一步:下载文件bluez-lib-3.36.tar.gzexpat-2.0.1.tar.gzdbus-1.2.16.tar.gzglib-2.22.4.tar.bz2libusb-0.1.12.tar.gzbluez-utils-3.36.tar.gz(哥花钱下载的!肯爹的官网没下载下来!)第二步:配置内核支持Bluetoothmake menuconfig[*] Networking support ---><*> Bluetooth subsystem support ---> //蓝牙子系统必须选择<*> L2CAP protocol suppor //逻辑链路控制和适配协议。
<*> SCO links support //蓝牙语音和耳机支持<*> RFCOMM protocol suppor //面向流的传输协议,支持拨号网络等[*] RFCOMM TTY support //<*> BNEP protocol support //蓝牙网络封装协议,自组网支持[*] Multicast filter support //蓝牙多播,支持支持BNEP[*] Protocol filter support //蓝牙多播,支持支持支持BNEP<*> HIDP protocol support //基本支持协议Bluetooth device drivers ---><*> HCI USB driver //USB蓝牙模块支持<*>HCI UART driver //基于串口,CF卡或PCMCIA的蓝牙<*> HCI BlueFRITZ! USB driver<*> HCI VHCI (Virtual HCI device) driver第三步:交叉编译蓝牙协议栈库文件1、编译安装bluez-lib-3.36.tar.gz这个库不需要什么依赖,直接解压,配置,编译然后安装即可。
基于Bluez的应用程序的开发
Linux下Bluez的编程实现1、蓝牙的各个协议栈的简介 (2)1.1、蓝牙技术 (2)1.1、蓝牙协议栈 (2)1.2、蓝牙技术的特点 (3)1.2.1、蓝牙协议栈体系结构 (3)1.2.2、蓝牙协议栈低层模块 (4)1.2.3、软件模块 (5)1.3、蓝牙的一些Profile (5)2、Bluez和D-Bus (7)2.1、Bluez和D-Bus体系结构 (7)2.2、D-Bus介绍 (8)2.3、Bluez的安全接口 (12)2.4、Bluez适配器接口 (15)2.5、Bluez配对 (16)2.6、Bluez绑定 (16)3、Bluez编程实现 (17)3.1、蓝牙开发关键技术剖析 (17)3.1.1、连接机制分析 (17)3.1.2、自动连接 (18)3.1.3、时钟设计 (18)3.1.4、配对列表管理 (19)3.1.5、蓝牙文件传输模式 (20)3.2、hci层介绍 (20)3.2.1、hci层介绍 (20)3.2.2、hci层编程 (20)3.3、L2CAP层编程 (25)3.3.1、L2CAP协议简介 (25)3.3.2、L2CAP编程方法 (25)3.4、SDP协议简介 (26)4、Openobex (28)4.1、Openobex简介 (28)4.2、Openobex与bluez编程实现 (29)5、Obexftp (31)5.1、obexftp简介 (31)5.2、基于Obexftp的应用程序开发 (31)6、参考资料 (32)1、蓝牙的各个协议栈的简介1.1、蓝牙技术蓝牙(Bluetooth)技术是由Ericsson、IBM、Intel、Nokia和Toshiba公司于1998年5月共同提出开发的,并联合成立了蓝牙特殊利益小组(SIG),负责开发无线协议规范并设定交互操作的需求。
其本质是设备间的无线链接,意在于代替有线电缆。
1.1、蓝牙协议栈协议栈是指一组协议的集合,举个例子,把大象装到冰箱里,总共要3步。
蓝牙协议栈BlueZ的移植与开发
蓝牙协议栈BlueZ的移植与开发
欧阳鑫;于红岩;吕杨
【期刊名称】《微计算机信息》
【年(卷),期】2007(023)005
【摘要】蓝牙技术是当前国内外科技界和产业界研究开发的热点技术,其应用范围包括手机、PDA、信息家电设备等领域,蓝牙技术在嵌入式系统上必将得到广泛的应用.而要在嵌入式系统上提供蓝牙开发支持,蓝牙协议栈的移植是关键.本文分析了蓝牙协议栈BlueZ体系结构,详细介绍了在S3C2410开发板上移植BlueZ的步骤,建立了嵌入式蓝牙应用开发平台,并提出了用BlueZ开发蓝牙应用程序的思路.【总页数】3页(P221-222,132)
【作者】欧阳鑫;于红岩;吕杨
【作者单位】650051,昆明理工大学信息工程与自动化学院;650051,昆明理工大学信息工程与自动化学院;650051,昆明理工大学信息工程与自动化学院
【正文语种】中文
【中图分类】TP368.1
【相关文献】
1.蓝牙协议栈BlueZ移植及GPS实现 [J], 郑春芳;郭秋丽
2.基于Bluez蓝牙协议栈的个域网用户节点的研究 [J], 吴亚萍;高军;傅仲逑
3.改进的Androi d蓝牙协议栈在功能移植上的应用 [J], 李满玲
4.蓝牙协议栈BlueZ的移植与开发 [J], 欧阳鑫;于红岩;吕杨
5.基于BlueZ协议栈的蓝牙语音接入系统实现与性能分析 [J], 陈舫;宋铁成;沈连丰;胡静;夏玮玮
因版权原因,仅展示原文概要,查看原文内容请购买。
Android平台开发-Bluezfunctionporting-蓝牙功能移植
Android平台开发-Bluezfunctionporting-蓝牙功能移植一、Bluez编译配置支持在BoardConfig.mk中添加:BOARD_HAVE_BLUETOOTH := true。
二、启动hciattachBlueZ核心子系统使用hciattach守护进程添加指定的硬件串口驱动。
修改init.rc来启动hciattach:service hciattach /system/bin/hciattch -n -s 115200 /dev/ttyS2 bcm2035 115200user bluetoothgroup bluetooth net_bt_admindisabled同时也要启动dbus daemon,因为bluez需要dbus与其它进程通讯的。
三、Bluez控制流程class bluetoothsetting是UI的入口,通过按button scan进入搜索状态,applicaton层调用bluetoothdevice, 接着就是bluetoothservice 的调用,bluetoothservice调用native方法,到此全部的java程序结束了。
下面的调用都是JNI, cpp实现的。
android_server_bluetoothservice.cpp里面实现了native 方法,最终通过dbus封装,调用HCID deamon 的function DiscoverDevice。
Bluetooth的启动流程是:1. 打开蓝牙电源,通过rfkill来enable;(system/bluetooth/bluedroid/bluetooth.c)2. 启动service hciattch -n -s 115200 /dev/ttyS2 bcm2035 115200;3. 检测HCI是否成功(接受HCIDEVUP socket来判断或hciconfig hci0 up);4. hcid deamon start up。
蓝牙协议栈开发流程
蓝牙协议栈开发流程1. 硬件平台选择在进行蓝牙协议栈开发之前,首先需要选择一个合适的硬件平台。
一般而言,蓝牙协议栈开发需要依托于一个蓝牙芯片或模块,这个芯片或模块需要支持蓝牙标准,并且提供相应的开发工具和文档。
在选择硬件平台时,需要考虑到项目的需求以及硬件的成本和可用性等因素。
2. 硬件平台驱动开发一般而言,蓝牙协议栈开发需要依赖于底层的硬件平台驱动,这需要涉及到对硬件的了解和驱动程序的开发。
这包括对芯片或模块的寄存器映射、时序要求、接口协议等方面的了解,并且需要编写相应的驱动程序来与硬件进行交互。
在驱动开发过程中,需要考虑到硬件的特性和限制,同时也需要保证驱动程序的效率和稳定性。
3. 协议栈架构设计蓝牙协议栈是蓝牙通信的核心部分,它负责处理蓝牙连接、数据传输、设备发现、配对等功能。
协议栈一般包括多个层次,包括物理层、链路层、L2CAP层、RFCOMM层、SDP 层等。
在进行协议栈的开发时,需要对整个协议栈的架构进行设计,包括各个层次的功能和接口等。
同时也需要考虑到协议栈的效率、可扩展性、可移植性等方面的要求。
4. 协议栈的实现在协议栈的实现过程中,需要根据协议规范和硬件平台的要求,编写相应的代码来实现蓝牙协议栈的各个功能。
这需要对蓝牙规范有较深的了解,并且需要在编写代码的过程中充分考虑到硬件平台的特性和限制。
在进行协议栈的实现时,需要进行模块化设计,确保各个功能模块之间的接口清晰,同时也需要进行充分的测试和调试,确保实现的功能正确和稳定。
5. 协议栈的优化在进行协议栈的开发过程中,需要进行各个方面的优化,包括代码的优化、内存的优化、功耗的优化等。
这需要根据具体的硬件平台和应用场景来进行优化的选择,以确保协议栈在实际应用中能够满足相应的要求。
6. 测试和验证在协议栈的开发完成后,需要进行相应的测试和验证工作。
这包括功能测试、性能测试、兼容性测试、安全性测试等。
这需要根据蓝牙标准和相关的测试要求,编写测试用例,并且对协议栈进行全面的测试。
在S3C2410上移植bluetooth(蓝牙)
最近两天在HHARM2410-R3上移植了USB蓝牙设备和BlueZ 蓝牙协议栈,呵呵,蓝牙果然是个很好的东西,协议栈内容很丰富,挂上去以后可以使用很多功能。
我现在就可以用它来接收GPS数据以及和用手机上网。
我是在做车载的,所以特别有用。
积累了一些关于蓝牙的知识,但是算是初步的,把我的经验发上来,各位做过蓝牙的大哥请多指导。
先介绍一下硬件,我用的是电脑卖场里面随便买到的USB蓝牙适配器,价格在80元左右,应该是台产的,没有牌子,像一个小一点的U盘。
买之前叫卖家在windows下测试一下,带一个带蓝牙的手机过去试试看,确认能用再买。
linux上的蓝牙协议栈有好几个,官方的蓝牙协议栈是Bluez,在上能找到所有的说明文档和源代码。
我先是在自己的pc上安装了bluez的协议栈,然后又把它移植到了华恒HHARM2410-R3上。
(一) 在Red hat 9上安装Bluez在pc 上的安装我参考了O'Reilly的Linux Unwired一书,chapter 7中详细地介绍了linux下的bluetooth的基础知识、安装、配置和使用。
安装前必须了解一下bluez的基本结构,直接位于发射传输协议之上的协议是HCI(host con trol interface),我的手机和蓝牙GPS用到的高层协议是服务发现协议SDP和模拟串口的协议RFCOMM,中间那一层协议是L2CAP,应该是处理逻辑链路的吧,我并不是很清楚,请参考bluez的官方文档。
HHARM2410-R3上用到内核版本是2.4.18,于是我在pc上安装 bluez时也使用了2.4.18的内核。
使用bluez必须要对内核打patch的,于是到上下载了linux- 2.4.18.tar.bz2后到/patches.html 上下载针对2.4.18的patch,patch -2.4.18-mh15.gz。
于是,解压,打patch:# tar xjvf linux-2.4.18.tar.bz2# cd linux/# gzip -dc ../patch-2.4.18-mh15.gz | patch -p1注意一下这时的patch的输出,在源代码方面的patch是针对driver/、include/、net/目录下的代码的修改,并没有修改到内核部分的内容,应该没有修改到linux核心的东西,在移植到S3C2410时应该不会有太大的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
蓝牙协议栈BlueZ的移植与开发*欧阳鑫 于红岩 吕杨(昆明理工大学信息工程与自动化学院,昆明,650051)摘要:蓝牙技术是当前国内外科技界和产业界研究开发的热点技术,其应用范围包括手机、PDA、信息家电设备等领域,蓝牙技术在嵌入式系统上必将得到广泛的应用。
而要在嵌入式系统上提供蓝牙开发支持,蓝牙协议栈的移植是关键。
本文分析了蓝牙协议栈BlueZ体系结构,详细介绍了在S3C2410开发板上移植BlueZ的步骤,建立了嵌入式蓝牙应用开发平台,并提出了用BlueZ 开发蓝牙应用程序的思路。
关键字:蓝牙技术;蓝牙协议栈BlueZ;移植;S3C2410;Linux中图分类号:TP368.1 文献标识码:ABlueZ Porting and ProgrammingOu Yangxin,Yu Hongyan,Lv Yang(College of Information Engineering and Automation,Kunming University of Scienceand Technology,Kunming 650051,China)Abstract: Bluetooth technology is the focused on by the domestic and overseas research institutes. This technology is widely used in mobile phone, PDA, and Information Appliance devices. In the future,bluetooth technology will be widely used in embedded system. Built some bluetooth applications on embedded system,the key technology is porting bluetooth protocol suites to platform. In this paper,we study the BlueZ architecture,describe the steps of Porting BlueZ to S3C2410 Platform in detail,and build the embedded bluetooth application programming platform. In the end, we also give the idea of bluetooth programming.Keywords: bluetooth technology,bluetooth protocol suites BlueZ,porting, S3C2410, Linux1引言蓝牙技术是一项低价格、低功耗的射频技术,它能使蓝牙设备实现近距离无线通信。
由于蓝牙技术有广泛的应用前景,它已成为当前国内外科技界和产业界研究开发的热点技术。
Linux 操作系统的开放的蓝牙协议栈主要包括IBM公司的BlueDrekar,Nokia公司的Affix, Axis公司的OpenBT和官方协议栈BlueZ[1]。
BlueZ是公布在Internet上的免费蓝牙协议栈,由于它结构简单,应用方便,具有灵活、高效和模块化的特点且具有较强的兼容性,因此BlueZ已经成为Linux操作系统下的官方的蓝牙协议栈。
S3C2410x是三星公司推出的一款高性价比32位的RISC处理器,内含一个由ARM公司设计的ARM920T核,具有低功耗高性能的特点,适用于对价格及功耗敏感的场合。
本文使用的S3C2410开发板主要包含以下部件:S3C2410x芯片,32MB Nor Flash,64MB SDRAM,IIC存储器接口,LCD控制器,UART接口,一个USB(Host)接口。
利用S3C2410开发板上的USB接口,可以外扩蓝牙适配器,但S3C2410开发板上没有实现蓝牙设备驱动。
本文对蓝牙协议栈BlueZ进行分析,移植BlueZ到开发板上实现蓝牙设备驱动,提出了使用BlueZ开发蓝牙应用程序的基本思路。
*基金项目:云南省自然科学基金项目(2004F0024M)。
2 BlueZ的体系结构使用不同蓝牙协议栈的设备在通信时会遇到互操作性的问题。
开发者需要了解各种协议栈的体系结构并考虑其差异。
通过分析源码,给出了如图1所示的BlueZ的体系结构[2]。
图1 BlueZ蓝牙协议栈。
蓝牙协议栈BlueZ分为两个部分:内核代码和用户态程序及工具集。
其中内核代码由BlueZ 核心协议和驱动程序等模块组成;用户态程序及工具集包括应用程序接口和BlueZ工具集。
在内核代码中,BlueZ协议的bluez-kernel和bluez-libs软件包实现了主机控制接口(HCI)和套接字接口的全部功能。
内核源代码采用模块化设计,由设备驱动程序模块和蓝牙核心协议模块组成,分别位于Linux内核代码的drivers子目录和net子目录下。
drivers子目录下的代码包括Linux 内核对各种接口的蓝牙设备的驱动。
net子目录下代码包括蓝牙核心协议和一部分扩展协议的内核代码,如L2CAP、RFCOMM、SCO、SDP、BNEP等协议。
对于用户态程序,BlueZ提供函数库及应用程序接口,便于程序员开发蓝牙应用程序。
BlueZ utils是蓝牙设备配置和应用的主工具集,实现对蓝牙设备的初始化和控制。
3 BlueZ在S3C2410开发板上的移植蓝牙模块除了需要Linux内核的支持外,还需要相关工具集来帮助管理蓝牙设备。
本文涉及的S3C2410开发板[3]操作系统内核版本是Linux 2.4.18,为了在开发板上实现对蓝牙设备的驱动,必须在PC机上交叉编译Linux 2.4.18内核,移植BlueZ协议栈,然后烧写到开发板上。
3.1创建交叉编译环境为进行Linux操作系统下的嵌入式开发,完成编译内核、驱动程序和应用程序等工作,首先要做的工作就是建立交叉编译环境,在Linux上可以使用GNU提供的arm工具链。
创建交叉编译环境和编译Linux内核不是本文研究的重点,这方面具体可以参考相应的文献。
3.2 配置、编译开发板上Linux内核创建了交叉编译环境,其后配置内核使之支持蓝牙协议栈BlueZ和蓝牙设备。
配置、编译Linux内核的具体步骤:(1)下载patch-2.4.18-mh15.gz,为开发板的Linux2.4.18的内核打补丁。
通过给Linux内核打补丁,BlueZ kernel被安装到Linux操作系统上。
具体执行命令如下:#gzip -dc ../patch-2.4.18-mh15.gz | patch -p1(2)配置Linux内核使支持蓝牙协议栈BlueZ,BlueZ协议配置选项说明如表1。
表1 BlueZ协议配置选项。
(3)配置Linux内核使支持BlueZ硬件,在BlueZ硬件支持设置选项中,设置关于USB接口蓝牙设备支持,具体方法:CONFIG_BLUEZ_HCIUSB=y;(4)用make zImage编译修改后的Linux内核。
3.3 安装BlueZ软件包BlueZ软件包主要由bluez-kernel,bluez-libs,bluez-utils和bluez-pin等组成。
软件包的具体构成和主要程序包的功能见表2。
表2 BlueZ软件包。
由于BlueZ协议栈核心代码已经通过打补丁的形式安装到Linux操作系统上,因此只需安装bluez-libs、bluez-utils和bluez-pin三个程序包。
(1)下载BlueZ的基础库bluez-libs-2.20.tar.gz 。
解压后,源代码在bluz-libs-2.20/src/下,编译动态库:#/usr/local/arm/2.95.3/bin/arm-linux-gcc -shared -o libbluetooth.so.1.0.17bluetooth.o hci.o sdp.o,然后建立动态连接,执行以下命令:#ln -s libbluetooth.so.1.0.17 libbluetooth.so#ln -s libbluetooth.so.1.0.17 libbluetooth.so.1库交叉编译完毕后,BlueZ的基础库被安装到S3C2410/application/bluezport/libs/lib目录下。
(2)下载、安装Bluez的工具集bluez-utils-2.20.tar.gz。
安装成功后,BlueZ的工具集被安装至S3C2410/applications/ bluezport/utils目录下。
(3)安装bluez-pin,编写pin_helper程序;由于BlueZ协议栈所携带的pin_helper是用python写的代码,在S3C2410开发板上不能使用,所以须重新编写pin_helper的程序,用C语言实现:#include <stdio.h>int main(int argc, char* argv[]){printf("PIN:123");}用arm-linux-gcc交叉编译工具,将pin_helper程序编译成my_pin_helper,放至开发板内核的/usr/bin下,然后修改hcid.conf:pin_helper /usr/bin/my_pin_helper3.4 向S3C2410开发板的移植(1)烧写Linux内核到开发板编译后的Linux内核映像zImage放至在S3C2410/kernel/arch/arm/boot下。
用Flash Programmer工具将zImage烧写到Flash的6-17扇区。
(2)烧写文件系统和BlueZ软件包到开发板将cramfs文件系统和其目录下的BlueZ库、BlueZ工具集和bluez-pin,使用mkcramfs在Linux下编译生成文件系统映像root.cramfs,烧写到Flash的18-35扇区。
给S3C2410开发板加电,系统自动加载内核和文件系统。
出现Linux操作系统shell提示符。
然后插上USB接口的蓝牙适配器,手动加载蓝牙协议栈各模块到开发板的Linux内核上,加载模块的命令如下:#modprobe bluez#modprobe hci_usb#modprobe rfcomm#modprobe l2cap接着启动hci设备和hci精灵进程,执行命令:#hciconfig hci0 up#hcid -f /etc/bluetooth/hcid.conf用命令#hciconfig –a查看蓝牙适配器的配置情况。