国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于嵌入式Linux藍(lán)牙HCI協(xié)議的研究與實(shí)現(xiàn)

2013-09-25 14:12:58王孟柳陳和平祝俊峰
電子設(shè)計(jì)工程 2013年4期
關(guān)鍵詞:傳輸層驅(qū)動(dòng)程序藍(lán)牙

王孟柳,陳和平,??》澹瑒?夏

(武漢科技大學(xué) 信息科學(xué)與工程學(xué)院,湖北 武漢 430081)

藍(lán)牙是專為滿足人們?cè)趥€(gè)人操作空間范圍的無(wú)線互聯(lián)而設(shè)計(jì)的,它采用調(diào)頻技術(shù)使處于個(gè)人操作空間的設(shè)備形成一個(gè)無(wú)線個(gè)人區(qū)域網(wǎng)絡(luò),真正實(shí)現(xiàn)設(shè)備之間可移動(dòng)的,自動(dòng)的互聯(lián)。以“無(wú)線替代電纜”正是藍(lán)牙技術(shù)開(kāi)發(fā)的初衷,同時(shí)也是藍(lán)牙最基本的用途。當(dāng)然,短距離無(wú)線通信有很多種,還包括IrDA、IEEE802.11系列無(wú)線局域網(wǎng)、HomeRF、UWB等,但是藍(lán)牙技術(shù)以其低成本、低功耗、高速率以及標(biāo)準(zhǔn)的全球通用性成為發(fā)展最快,市場(chǎng)推廣最成功的短距離無(wú)線通信技術(shù)[1]。

藍(lán)牙技術(shù)是一種低功耗的短距離無(wú)線通信技術(shù),它作為無(wú)線數(shù)據(jù)與語(yǔ)音通信的開(kāi)放標(biāo)準(zhǔn),旨在取代現(xiàn)有的PC機(jī),打印機(jī),移動(dòng)電話等相關(guān)設(shè)備上的連線。目前包括大多數(shù)著名IT企業(yè)和通信公司在內(nèi)的藍(lán)牙SIG,已經(jīng)推出了很多藍(lán)牙產(chǎn)品,實(shí)現(xiàn)了藍(lán)牙技術(shù)的產(chǎn)品化。

1 藍(lán)牙協(xié)議棧

實(shí)現(xiàn)各個(gè)藍(lán)牙設(shè)備間的通信,僅有底層的藍(lán)牙硬件是不夠的,還必須有藍(lán)牙協(xié)議棧的支持。藍(lán)牙協(xié)議棧運(yùn)行在中央處理器之上,主要管理和分配系統(tǒng)資源,控制相關(guān)硬件,對(duì)通過(guò)HCI層的命令進(jìn)行處理,完成藍(lán)牙功能[2]。由于協(xié)議找中底層的一些協(xié)議比如LMP等已經(jīng)固化在硬件中,高層的協(xié)議如PPP、TCP/IP也已經(jīng)存在。可以直接應(yīng)用,所以需要實(shí)現(xiàn)的是給主機(jī)提供HCI的接口、驅(qū)動(dòng)程序、L2CAP層、RFCOMM、SDP功能等協(xié)議棧的中間層部分。

整個(gè)藍(lán)牙協(xié)議的體系結(jié)構(gòu)分為藍(lán)牙底層協(xié)議、中間層協(xié)議和高端應(yīng)用層3部分[3],具體結(jié)構(gòu)如圖1所示。

圖1 藍(lán)牙協(xié)議棧體系結(jié)構(gòu)Fig.1 System structure of Bluetooth protocol stack

射頻層(RF),基帶層(BB)和鏈路管理層(LM)屬于藍(lán)牙底層的硬件模塊,它是藍(lán)牙技術(shù)的核心,是任何藍(lán)牙設(shè)備都不可少的部分。

中間協(xié)議層主要包括邏輯鏈路控制和適配協(xié)議(L2CAP),服務(wù)發(fā)現(xiàn)協(xié)議(SDP),串口仿真協(xié)議(RFCOMM)和電話控制規(guī)范(TCS)。

在藍(lán)牙協(xié)議棧的頂層是高端應(yīng)用層,它相當(dāng)于各種應(yīng)用的模型的profile,是profile的一部分。我們可根據(jù)具體應(yīng)用的模型的不同,選擇需要的現(xiàn)有高層協(xié)議。目前可以選用的高端應(yīng)用層協(xié)議主要包含:TCP/UDP/IP協(xié)議,點(diǎn)對(duì)點(diǎn)協(xié)議(PPP),無(wú)線應(yīng)用協(xié)議(WAP),對(duì)象交換協(xié)議(OBEX)等。

2 HCI協(xié)議剖析

2.1 主機(jī)控制器接口(HCI)簡(jiǎn)介

為了使不同廠商的非集成藍(lán)牙模塊之間能夠互通,SIG定義了一個(gè)標(biāo)準(zhǔn)接口與藍(lán)牙模塊中的主機(jī)控制器進(jìn)行通信,同時(shí)還定義了一個(gè)事務(wù)性通信協(xié)議,用于在主機(jī)和主機(jī)控制器之間消息的傳送。這種主機(jī)和主機(jī)控制器間的標(biāo)準(zhǔn)接口和它們之間相應(yīng)的通信協(xié)議一起被稱為主機(jī)控制器接口(HCI)。

主機(jī)控制器接口(HCI)為上層協(xié)議提供了一個(gè)獨(dú)立于硬件實(shí)現(xiàn)的標(biāo)準(zhǔn)接口[4]。它主要包括兩個(gè)部分,在主機(jī)中運(yùn)行的驅(qū)動(dòng)程序和在硬件中運(yùn)行的固件,二者之間通過(guò)傳輸層進(jìn)行通信。目前,藍(lán)牙支持的傳輸層主要包括HCI USB傳輸層,HCI RS232傳輸層,HCI UART傳輸層,HCI SD傳輸層。

圖2對(duì)軟件層底層進(jìn)行了概述。HCI固件通過(guò)對(duì)鏈路管理器,硬件狀態(tài)注冊(cè)器,控制注冊(cè)器,事件注冊(cè)器等的訪問(wèn)來(lái)執(zhí)行藍(lán)牙硬件的基帶命令。在主機(jī)中的HCI驅(qū)動(dòng)程序和藍(lán)牙硬件中的HCI固件間存在許多層次。這些中間層提供了在不需要了解數(shù)據(jù)信息的情況下傳輸數(shù)據(jù)的能力。

從圖2可以看出,HCI驅(qū)動(dòng)程序并不能直接對(duì)底層硬件進(jìn)行操作,而只能利用相應(yīng)硬件的驅(qū)動(dòng)程序所提供的服務(wù)來(lái)的操縱硬件。

圖2 藍(lán)牙協(xié)議棧底層概述Fig.2 Bottom overview of Bluetooth protocol stack

2.2 HCI分組類型

藍(lán)牙標(biāo)準(zhǔn)定義了3種不同的HCI分組類型:命令分組(Command packer)、事件分組(Event packet)和數(shù)據(jù)分組(Data packet)[5-6]。HCI分組通過(guò)HCI傳輸層進(jìn)行傳輸。如圖3所示,HCI命令分組用于主機(jī)向主機(jī)控制器發(fā)送控制和管理信息,包括設(shè)置藍(lán)牙模塊的操作狀態(tài)以及寄存器的讀寫(xiě)。HCI事件分組是主機(jī)控制器向主機(jī)發(fā)送的信息,用于通知藍(lán)牙模塊底層狀態(tài)的變化。HCI數(shù)據(jù)分組用于在主機(jī)和主控制器之間傳輸語(yǔ)音(SCO分組)和數(shù)據(jù)(ACL分組)信息。

圖3 HCI分組的三種類型Fig.3 Three types of HCI subgroups

2.3 HCI USB傳輸層

USB是由“通用串行總線實(shí)施論壇”組織公開(kāi)發(fā)表、推廣的一種串行接口標(biāo)準(zhǔn)。USB主要用于連接中低檔外設(shè),其傳輸速率最高可達(dá)12 Mbit/s。最高可連接127個(gè)設(shè)備。圖4所示是USB作為藍(lán)牙無(wú)線模塊與主機(jī)傳輸層接口時(shí),主機(jī)棧與藍(lán)牙棧的配置情況。

圖4 主機(jī)和藍(lán)牙無(wú)線模塊之間的關(guān)系Fig.4 Relationship between the host and Bluetooth wireless module

USB設(shè)備可看作高速設(shè)備。其固件配置由兩個(gè)接口組成。第一個(gè)接口為固定設(shè)置,并包含BULK和中斷終端。第二個(gè)接口提供可擴(kuò)展的同步帶寬占用方式。該接口方式提供四種設(shè)置,以提供基于同步帶寬需求的占用方式。其缺省接口為空,以使設(shè)備能夠支持非同步帶寬。

一個(gè)HCI幀,包含一個(gè)HCI頭和HCI數(shù)據(jù),應(yīng)包含于一USB事物中。此USB事物中為一個(gè)或多個(gè)包含I/O請(qǐng)求數(shù)據(jù)的USB幀。例如,包含256字節(jié)的ACL數(shù)據(jù)分組將在I/O請(qǐng)求中通過(guò)BULK終端發(fā)送。該I/O請(qǐng)求將需要4個(gè)64字節(jié)的USB幀,并組成一個(gè)事務(wù)。

3 硬件實(shí)現(xiàn)

大多數(shù)藍(lán)牙芯片主要實(shí)現(xiàn)了如下3層:無(wú)線層、基帶層和鏈路管理層。無(wú)線層主要完成頻率的合成、bit到符號(hào)的轉(zhuǎn)換和過(guò)濾,以及符號(hào)的收發(fā)操作;基帶層主要完成編碼/解碼、加密/解密、分組處理和調(diào)頻頻率的生成和選擇;鏈路管理層主要完成鏈接的建立和鏈路的管理。實(shí)現(xiàn)結(jié)構(gòu)如圖5所示。

本方案使用的是英國(guó)CSR (Cambridge Silicon Radio)提供的單芯片藍(lán)牙模塊BlueCore2-Extern。BlueCore2-Extern主要由 MCU、DSP、RAM、ROM、I/O 和一個(gè) 2.4 GHz的無(wú)線收發(fā)器組成。

圖5 藍(lán)牙核心HCI棧Fig.5 Bluetooth core HCI stack

BlueCore2-Extern總共提供了4種硬件接口,UART接口、SPI接口、USB接口和PCM話音接口。本方案使用的是USB接口和PCM話音接口,BlueCore2-Extern通過(guò)USB接口與主機(jī)控制器的USB接口相連,傳輸HCI命令、HCI事件和ACL數(shù)據(jù)傳輸[7-8]。

對(duì)于天線,考慮到結(jié)構(gòu)簡(jiǎn)單和制作成本的問(wèn)題,在目前已有的偶級(jí)天線、倒F型天線、折線天線以及微小型陶瓷天線等類型中,本方案選用了折線天線。折線天線的長(zhǎng)度很難預(yù)測(cè),由折線天線確切的幾何形狀和對(duì)地的距離決定,一般比四分之一波長(zhǎng)略長(zhǎng)。在本方案中我們選用的PCB折線天線印制在頂層,地平面也在頂層,并且位于貼近天線的位置。

無(wú)論是以上哪種天線,均采用50 Ω的輸入阻抗與BlueCore2-Extern的ANT端相連。理想狀態(tài)下,微帶線的特征阻抗Z0閉合算式為:

W表示線寬,h表示高度,εre表示介電常數(shù),η表示該天線的發(fā)射效率。硬件實(shí)物圖如圖6所示。

圖6 硬件實(shí)物圖Fig.6 Hardware diagram

4 HCI驅(qū)動(dòng)程序設(shè)計(jì)

Linux的一個(gè)特點(diǎn)就是把所有的東西都看作是文件。而設(shè)備驅(qū)動(dòng)程序在Linux中扮演一個(gè)非常重要的角色,幾乎所有系統(tǒng)可用的設(shè)備都需要各自的驅(qū)動(dòng)程序來(lái)協(xié)助訪問(wèn)。驅(qū)動(dòng)程序運(yùn)行于內(nèi)核空間,用戶空間的應(yīng)用程序通過(guò)文件系統(tǒng)中/dev/目錄下的一個(gè)相對(duì)應(yīng)的文件來(lái)和它交互。

本課題采用的是基于USB端口的藍(lán)牙適配器。對(duì)于一個(gè)USB的設(shè)備驅(qū)動(dòng)來(lái)說(shuō),它必須實(shí)現(xiàn)若干個(gè)系統(tǒng)已經(jīng)定義好的數(shù)據(jù)結(jié)構(gòu)。這些數(shù)據(jù)通常用于向內(nèi)核進(jìn)行某種注冊(cè)。

首先第一個(gè)是usb_driver結(jié)構(gòu)體,它的定義如下:

這個(gè)結(jié)構(gòu)體將用于向系統(tǒng)注冊(cè)新的USB驅(qū)動(dòng)程序和該驅(qū)動(dòng)所支持的設(shè)備的ID。當(dāng)設(shè)備接入系統(tǒng)后,內(nèi)核通過(guò)注冊(cè)的id_table確定對(duì)應(yīng)的驅(qū)動(dòng)程序,并調(diào)用該驅(qū)動(dòng)的probe函數(shù)。而當(dāng)設(shè)備與主機(jī)斷開(kāi)連接時(shí),相應(yīng)的disconnect函數(shù)就會(huì)被調(diào)用。

因?yàn)槲闹幸瓿傻尿?qū)動(dòng)需要在文件系統(tǒng)中創(chuàng)建相應(yīng)節(jié)點(diǎn),所有還需要用到另外兩個(gè)數(shù)據(jù)結(jié)構(gòu),sub_class_driver和file_operations,定義如下:

usb_class_driver結(jié)構(gòu)用于向系統(tǒng)注冊(cè)映射到/dev/目錄下的文件節(jié)點(diǎn),所以它需要一個(gè)次設(shè)備號(hào)的起始值。對(duì)于USB設(shè)備來(lái)說(shuō),usb_class_driver結(jié)構(gòu)體為我們提供了注冊(cè)節(jié)點(diǎn)和文件操作函數(shù)。所以,它還包括了一個(gè)文件操作結(jié)構(gòu)指針和一個(gè)名字。

HCI驅(qū)動(dòng)的具體流程圖如圖7所示。HCI接口采用事件驅(qū)動(dòng)的工作方式,主機(jī)發(fā)送命令,藍(lán)牙主控芯片以事件方式返回結(jié)果,主機(jī)分析所返回事件以確定下一個(gè)命令[9-10]。HCI接口采用數(shù)據(jù)包的方式,主要使用了其中3種:命令包,事件包和ACL數(shù)據(jù)包。

5 測(cè)試結(jié)果

將編譯好的HCI驅(qū)動(dòng)模塊移植到arm開(kāi)發(fā)板并加載,和一般的模塊一樣,可以選擇使用自動(dòng)加載或手工加載,這里采用手工加載。成功加載好HCI驅(qū)動(dòng)后,將USB藍(lán)牙模塊接入arm開(kāi)發(fā)板,啟動(dòng)藍(lán)牙設(shè)備。具體信息如圖8所示。

由圖 8 可知,該藍(lán)牙設(shè)備的地址為 00:1F:81:00:01:1C,error為0,所以藍(lán)牙設(shè)備啟動(dòng)成功。

6 結(jié)束語(yǔ)

圖7 HCI驅(qū)動(dòng)流程Fig.7 HCI driving process

圖8 測(cè)試結(jié)果Fig.8 Test result

文中選擇以主機(jī)控制器接口為突破口對(duì)藍(lán)牙協(xié)議進(jìn)行了較為深入的分析,在此基礎(chǔ)上針對(duì)HCI協(xié)議進(jìn)行了流程分析和接口設(shè)計(jì)。HCI是實(shí)現(xiàn)藍(lán)牙協(xié)議棧時(shí)必須實(shí)現(xiàn)的一個(gè)部分,它的實(shí)現(xiàn)對(duì)于在具體硬件基礎(chǔ)上自主靈活地構(gòu)建藍(lán)牙協(xié)議棧、開(kāi)發(fā)藍(lán)牙應(yīng)用起著決定性的作用。從測(cè)試結(jié)果看,本文設(shè)計(jì)的HCI驅(qū)動(dòng)程序在arm開(kāi)發(fā)板平臺(tái)上成功的驅(qū)動(dòng)了藍(lán)牙模塊,通過(guò)所設(shè)計(jì)的HCI協(xié)議,使得PC主機(jī)與arm開(kāi)發(fā)板之間能夠通過(guò)藍(lán)牙設(shè)備建立無(wú)線連接,查看對(duì)方設(shè)備信息和傳輸ACL數(shù)據(jù),達(dá)到了預(yù)期的效果。

[1]SIG.Specification of the Bluetooth System(for Bluetooth core)v1.2[S].EuropeanTelecommunicationsStandardsInstitute,1999.

[2]Hartsen J C.The Bluetooth Radio System[J].IEEE Personal Communications Magazine,2000,7(1):28-36.

[3]李靜,耿衛(wèi)東.HCI協(xié)議在嵌入式藍(lán)牙系統(tǒng)中的應(yīng)用[J].半導(dǎo)體技術(shù),2002(8):10-13.

LI Jing,GENG Wei-dong.The HCI protocol in the embedded Bluetooth system application[J].Semiconductor Technology,2002(8):10-13.

[4]Bluetooth Special Interest Group.Bluetooth Network Encapsulation Protocol Specification[C].Version1,2003.

[5]陸佳煒.藍(lán)牙主控制器接口簡(jiǎn)析[J].半導(dǎo)體技術(shù),2003,28(3):54-57.

LU Jia-wei.The brief analysis of bluetooth host controller interface[J].Semiconductor technology,2003,28(3):54-57.

[6]楊帆.基于BlueCore02-External芯片的藍(lán)牙鼠標(biāo)的設(shè)計(jì)與實(shí)現(xiàn)[J].微機(jī)與應(yīng)用,2005(5):20-22.

YANG Fan.Design and Implementation based BlueCore02-Externalchip Bluetooth mouse[J].Microcomputerand Application,2005(5):20-22.

[7]Cambridge Silicon Radio.BlueCore Serial Protocol(BCSP)[S], Cambridge,2004:7-26.

[8]ZHOU Peng,LING Xiang.HCI-based bluetooth master-slave monitoring system design[C].2010 International Conference on Computational Problem-Solving,2010:406-409.

[9] Cambridge Silicon Radio. HCI Implementation[S],Cambridge,2005:6-8.

[10]SairamK,GunasekaranN.Bluetoothinwirelesscommunication[J].IEEE Personal Communications Magazine,2002,6(40):90-96.

猜你喜歡
傳輸層驅(qū)動(dòng)程序藍(lán)牙
藍(lán)牙音箱的直線之美
基于Python語(yǔ)言的網(wǎng)絡(luò)傳輸層UDP協(xié)議攻擊性行為研究
ZnO電子傳輸層在有機(jī)無(wú)機(jī)雜化鈣鈦礦太陽(yáng)能電池中的應(yīng)用
簡(jiǎn)單、易用,可玩性強(qiáng)Q AcousticsBT3藍(lán)牙音箱
物聯(lián)網(wǎng)無(wú)線通信傳輸層動(dòng)態(tài)通道保障機(jī)制
適合自己的才是最好的 德生(TECSUN) BT-50藍(lán)牙耳機(jī)放大器
基于物聯(lián)網(wǎng)GIS的消防智能巡檢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
緊急:藍(lán)牙指尖陀螺自燃!安全隱患頻出
玩具世界(2017年8期)2017-02-06 03:01:38
驅(qū)動(dòng)程序更新與推薦
驅(qū)動(dòng)程序更新與推薦
阿坝县| 南丹县| 乐陵市| 凤冈县| 来安县| 河西区| 旬阳县| 达孜县| 界首市| 洛隆县| 山阴县| 威海市| 拜城县| 缙云县| 九江县| 南城县| 钟山县| 福泉市| 旬阳县| 嘉义市| 侯马市| 东乌珠穆沁旗| 吉安市| 抚州市| 葫芦岛市| 白城市| 闻喜县| 古交市| 玛纳斯县| 阿拉善盟| 疏附县| 商丘市| 资溪县| 南木林县| 马鞍山市| 云龙县| 台州市| 蒙山县| 温宿县| 壶关县| 黎城县|