综合资讯 在线阅读 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

嵌入式系统  单片机  D S P  EDA/PLD  接口电路  存储技术  显示光电  电源技术
传感/控制  模拟技术  通信网络  无线通信  电测仪表  消费电子  汽车电子

所在的位置:首页技术文章无线通信正文
 
信息家电中蓝牙通信的实现
发布日期:2008-06-16 作者:肖骁 刘宏 来源:微计算机信息

【摘 要】  在研究蓝牙的HCI和蓝牙协议L2CAP、BNEP的基础上,在ARM9(S3C2410)和Linux2.4.18内核上实现了USB蓝牙驱动,最后实现PC机和ARM9(S3C2410)间模拟家庭网关中的蓝牙局域网进行无线通信。通信实验运行稳定,收发双方能准确的接收和发送数据。
【关键字】  蓝牙    ARM9  Linux2.4.18  

   信息家电是当前国内外研究的热点,而信息家电中又以数据传输方式的性价比为重点。蓝牙可以作为一种有效的通信手段,实现家庭网关与信息家电间的控制信息等其他适中数据量的传输。本文首先介绍蓝牙的HCI和蓝牙协议L2CAP、BNEP,然后介绍如何在Linux2.4.18下实现USB蓝牙驱动,最后介绍如何实现在蓝牙个人局域网中进行无线通信。

 

1           信息家电的基本框图

信息家电的基本结构图如下图1所示,家庭主网关是负责各种家电与外部环境进行“交

流”的桥梁,其中与外部环境进行通信的方式包括Ethernet、PSTN固话网等等。而就家庭内部而言,对于如:空调、电视等普通信息家电,由于家庭网关与其通信的数据量并不大,因此完全可以采取蓝牙无线方式进行通信,从而达到控制家电工作的目的。

1

 

2蓝牙的HCIL2CAPBNEP协议

蓝牙协议体系大致分为三层,即底层硬件模块层、中间协议层、高端应用层,每一层还

包含一些具体的协议。

2.1蓝牙的HCI

蓝牙的主机控制接口(HCI)是蓝牙主机--主控制器应用模式中蓝牙模块和主机间的软硬件接口,它位于蓝牙协议栈的底层硬件模块层与中间协议层之间,负责完成这二层的数据通信[1]。目前,蓝牙HCI传输层的物理接口有USB、UART等,蓝牙设备可以采用这些物理接口来实现通信。本文将介绍用USB口作为传输层实现通信。

2.2蓝牙的L2CAP协议

蓝牙的逻辑链路控制与适配协议(L2CAP)是整个蓝牙协议的核心,它位于中间协议

层,它将下层的数据分组转换为便于高层应用的数据分组格式,并提供协议复用等功能。它向上层协议提供了面向连接和无连接的服务,L2CAP层只支持ACL(异步无连接)数据的传输,而不支持SCO(同步面向连接)数据的传输[1]

2.3 蓝牙的BNEP协议

蓝牙SIG制定的网络封装协议(BNEP,Bluetooth Network Encapsulation Protocol),可对上层IP协议提供类似于以太网的接口,对IEEE802. 3/Ethernet封装支持的网络协议,均予以支持 [2]。BNEP通过面向连接的L2CAP来实现的,L2CAP可以看作是蓝牙介质访问控制(MAC)层。BNEP在整个蓝牙协议栈中起着一个桥梁的作用,它将IP包转换成L2CAP包通过蓝牙传输。BNEP协议主要应用在蓝牙个人区域网中。

 

3         USB蓝牙模块驱动

1、由于采用的内核是Linux2.4.18,其中并没有包括对蓝牙驱动的支持,因此必须对其打补丁。解压Linux2.4.18内核,把蓝牙补丁包patch-2.4.18-mh15.gz放在解压内核目录下,执行命令patch –p1 < patch-2.4.18-mh15.gz[3]

2、Linux Bluetooth协议栈中的BNEP(Bluetooth 网络封装协议)实现了Bluetooth上

的以太网仿真,这使TCP/IP可以直接运行于Bluetooth之上。由于实验的本质就是通过蓝牙HCI的USB实现基于BNEP的以太网传输数据,因此在内核配置时必须加上对BNEP的支持。

3、进入Bluetooth subsystem support选项中,选择L2CAP protocol support、BNEP protocol support(Malticast filter support和Protocol filter support)这几项,这几项的作用就是使内核支持蓝牙协议中的L2CAP和BNEP协议。然后进入Bluetooth device drivers,选择HCI USB driver。至此,就完成了内核对于USB蓝牙的支持。

4、下载bluez-libs-2.17.tar.gz蓝牙库和bluez-utils-2.17.tar.gz工具包,运行tar zxvf命令解压缩,然后运行make和make install命令,这样就能得到我们需要的libbluetooth.so、libbluetooth.so.1、libbluetooth.so.1.17这3个库文件和hcid、hcitool、pand、hciconfig、sdpd、sdpdtool这6个进程文件。

 

4家庭网关中蓝牙无线通信的实现                                                                                   

 整个通信过程的介绍:

1、USB蓝牙的传输驱动程序(drivers/bluetooth/hci_usb.c)将信息注册到Linux USB核心。当USB蓝牙插入时,主机控制器设备驱动程序会枚举它并给它分配地址,同时读取设备描述符中所包含的设备信息。如果枚举期间读取的设备描述符与hci_usb驱动程序注册到Linux USB核心的信息相匹配,那么这个驱动程序就能添加进USB设备。

2、运行hcid(HCI后台进程)、sdpd(服务发现协议后台进程)、hciconfig(检查HCI接口并开启蓝牙设备)、hcitool(扫描蓝牙设备的地址)这四个CRAMFS文件系统sbin目录下的进程文件,这几个文件的执行依赖于libbluetooth.so、libbluetooth.so.1、libbluetooth.so.1.17这三个蓝牙库文件。在S3C2410一侧的蓝牙设备能够被发现并被成功分配唯一地址的基础之上运行pand --listen --role NAP,这样将允许通过蓝牙连接以太网。如图2所示。

图2

3、PC机上插入USB蓝牙,运行windows下蓝牙的驱动软件BlueSoleil,扫描并发现蓝牙设备之后,建立个人局域网。

4、在个人局域网建立的基础之上,BNEP就可以将自己作为以太网设备注册到Linux网络层。可以通过命令ifconfig bnep0来改变蓝牙接口IP地址。BNEP模块和用户模式pand后台进程实现了Bluetooth个人区域网(PAN)。将二个USB蓝牙的IP地址修改为同一个网段后,就可以使用ping PC机的USB蓝牙IP地址命令来实现模拟家庭网关和内部设备间的无线通信,如图3超级终端打印信息所示。

图3 

5、实验结果:由图2和图3可以看到在运行了包含hcid、sdpd、hciconfig、hcitool四个进程的文件bluetooth后,可看到S3C2410一侧的USB蓝牙的地址为00:0D:18:01:23:88,而后用ifconfig bnep0 192.168.0.2修改了它的局域网地址,最后用ping 192.168.0.18(PC机上的蓝牙地址)即可实现双方的数据收发。

 

 

参考文献

[1] Bluetooth Special Interest Group,Specification of the Bluetooth Sy-stem,Version1.1,volumes 1 and 2,available from http://www.bluetooth.com,February 22 2001

[2] Bluetooth Special Interest Group. Bluetooth Network Encapsulation Protocol Specification:Specification of the Bluetooth System .Version 0.96e, 2002

[3] JONATHAN CORBET,ALESSANDRO RUBINI著;魏永明, 骆刚,姜君译.LINUX设备驱动程序(第2版)[M].中国电力出版社,2004,9

[4] 吴振纲,陈虎.PLC的人机接口与编程[J].微计算机信息,2005,8-1:21-23

作者简介:肖骁,男,1981年生,汉,在读研究生,研究方向:信息家电体系结构、嵌入式系统.


 (全文结束)

信息发布:   转引自: 【 】 【打印】 【关闭
 相 关 文 章
基于S3C2410的CAN总线通信设计与开发 (07-03)
U-Boot在S3C2410上的移植 (07-19)
嵌入式无线局域网设备的设计与实现 (08-08)
触摸屏在S3C2410上的应用实例 (02-22)
S3C2410X的I2C控制器及其应用开发 (12-12)
S3C2410X在无线宽带通信网中的应用 (03-07)
嵌入式系统中LCD驱动的实现原理 (08-13)
一个基于Linux操作系统的嵌入式网关的实现 (10-02)
基于S3C24104X的TSP开发与应用 (08-09)
虚拟SPI时序在TC77与S3C2410通信中的应用 (08-25)
基于ARM的嵌入式文件系统YAFFS的移植 (06-12)
S3C2410外围存储系统的研究与设计 (06-12)
基于S3C2410的CDMA无线数据传输方法 (06-13)
基于AC48304的嵌入式多路语音记录器 (03-11)
引导加载程序vivi 的分析和移植研究 (12-20)
虚拟SPI时序在TC77与S3C2410通信中的应用 (08-28)
基于S3C2410的TFT-LCD驱动电路设计 (09-12)
一种基于ARM的税控收款机磁卡接口设计 (昨天)
关于我们 ┋ 友情链接


深圳市福田区海滨广场恒福花园恒华阁11F
电话:0755-88305872 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号