藍(lán)牙協(xié)議棧基礎(chǔ)
隨著網(wǎng)絡(luò)等技術(shù)的發(fā)展,我們很多產(chǎn)品都已經(jīng)走向了無(wú)線。例如無(wú)線耳機(jī),無(wú)線鼠標(biāo)等等。這些產(chǎn)品中也都融入了藍(lán)牙協(xié)議棧的技術(shù)。那么想要搞清楚藍(lán)牙協(xié)議棧的內(nèi)容,我們還需要從藍(lán)牙技術(shù)說(shuō)起。
1 什么是藍(lán)牙技術(shù)
所謂藍(lán)牙技術(shù),實(shí)際上是一種短距離無(wú)線電技術(shù),利用"藍(lán)牙技術(shù)"能夠有效地簡(jiǎn)化掌上電腦、筆記本電腦和移動(dòng)電話手機(jī)等移動(dòng)通信終端設(shè)備,并且能夠成功地簡(jiǎn)化以上這些設(shè)備與因特網(wǎng)之間的通信,從而使這些現(xiàn)代通信設(shè)備與因特網(wǎng)之間的數(shù)據(jù)傳輸變得更加迅速高效,為無(wú)線通信拓寬道路.通俗地講,藍(lán)牙技術(shù)使得現(xiàn)代一些輕易攜帶的移動(dòng)通信設(shè)備和電腦設(shè)備,不必借助電纜就能聯(lián)網(wǎng),并且能夠?qū)崿F(xiàn)無(wú)線上因特網(wǎng).其實(shí)際應(yīng)用范圍還可以拓展到各種家電產(chǎn)品、消費(fèi)電子產(chǎn)品和汽車等信息家電,組成一個(gè)巨大的無(wú)線通信網(wǎng)絡(luò).
2 藍(lán)牙技術(shù)的特點(diǎn)
2.1 藍(lán)牙協(xié)議體系結(jié)構(gòu)
整個(gè)藍(lán)牙協(xié)議體系結(jié)構(gòu)可分為底層硬件模塊、中間協(xié)議層和高端應(yīng)用層三大部分.鏈路管理層(LMP)、基帶層(BBP)和藍(lán)牙無(wú)線電信道構(gòu)成藍(lán)牙的底層模塊.BBP層負(fù)責(zé)跳頻和藍(lán)牙數(shù)據(jù)及信息幀的傳輸.LMP層負(fù)責(zé)連接的建立和拆除以及鏈路的安全和控制,它們?yōu)樯蠈榆浖K提供了不同的訪問(wèn)人口,但是兩個(gè)模塊接口之間的消息和數(shù)據(jù)傳遞必須通過(guò)藍(lán)牙主機(jī)控制器接口的解釋才能進(jìn)行.也就是說(shuō),中間協(xié)議層包括邏輯鏈路控制與適配協(xié)議(L2CAP)、服務(wù)發(fā)現(xiàn)協(xié)議(SDP)、串口仿真協(xié)議(RFCOMM)和電話控制協(xié)議規(guī)范(TCS).L2CAP完成數(shù)據(jù)拆裝、服務(wù)質(zhì)量控制、協(xié)議復(fù)用和組提取等功能,是其他上層協(xié)議實(shí)現(xiàn)的基礎(chǔ),因此也是藍(lán)牙協(xié)議棧的核心部分.SDP為上層應(yīng)用程序提供一種機(jī)制來(lái)發(fā)現(xiàn)網(wǎng)絡(luò)中可用的服務(wù)及其特性.在藍(lán)牙協(xié)議棧的最上部是高端應(yīng)用層,它對(duì)應(yīng)于各種應(yīng)用模型的剖面,是剖面的一部分.目前定義了13種剖面.
2.2 藍(lán)牙低層模塊
在藍(lán)牙協(xié)議棧中,藍(lán)牙的低層模塊是藍(lán)牙技術(shù)的核心,是任何藍(lán)牙設(shè)備都必須包括的部分.
藍(lán)牙工作在2.4GHZ的ISM頻段.采用了藍(lán)牙結(jié)束的設(shè)備講能夠提供高達(dá)720kbit/s 的數(shù)據(jù)交換速率.
藍(lán)牙支持電路交換和分組交換兩種技術(shù),分別定義了兩種鏈路類型,即面向連接的同步鏈路(SCO)和面向無(wú)連接的異步鏈路(ACL).
為了在很低的功率狀態(tài)下也能使藍(lán)牙設(shè)備處于連接狀態(tài),藍(lán)牙規(guī)定了三種節(jié)能狀態(tài),即停等(Park)狀態(tài)、保持(Hold)狀態(tài)和呼吸(Sniff)狀態(tài).這幾種工作模式按照節(jié)能效率以升序排依次是:Sniff模式、Hold模式、Park模式.
藍(lán)牙采用三種糾錯(cuò)方案:1/3前向糾錯(cuò)(FEC)、2/3前向糾錯(cuò)和自動(dòng)重發(fā)(ARQ).前向糾錯(cuò)的目的是減少重發(fā)的可能性,但同時(shí)也增加了額外開銷.然而在一個(gè)合理的無(wú)錯(cuò)誤率環(huán)境中,多余的投標(biāo)會(huì)減少輸出,故分組定義的本身也保持靈活的方式,因此,在軟件中可定義是否采用FEC.一般而言,在信道的噪聲干擾比較大時(shí)藍(lán)牙系統(tǒng)會(huì)使用前向糾錯(cuò)方案,以保證通信質(zhì)量:對(duì)于SCO鏈路,使用1/3前向糾錯(cuò);對(duì)于ACL鏈路,使用2/3前向糾錯(cuò).在無(wú)編號(hào)的自動(dòng)請(qǐng)求重發(fā)方案中,一個(gè)時(shí)隙傳送的數(shù)據(jù)必須在下一個(gè)時(shí)隙得到收到的確認(rèn).只有數(shù)據(jù)在收端通過(guò)了報(bào)頭錯(cuò)誤檢測(cè)和循環(huán)冗余校驗(yàn)(CRC)后認(rèn)為無(wú)錯(cuò)時(shí),才向發(fā)端發(fā)回確認(rèn)消息,否則返回一個(gè)錯(cuò)誤消息.
藍(lán)牙系統(tǒng)的移動(dòng)性和開放性使得安全問(wèn)題變得及其重要.雖然藍(lán)牙系統(tǒng)所采用的調(diào)頻技術(shù)就已經(jīng)提供了一定的安全保障,但是藍(lán)牙系統(tǒng)仍然需要鏈路層和應(yīng)用層的安全管理.在鏈路層中,藍(lán)牙系統(tǒng)提供了認(rèn)證、加密和密鑰管理等功能.每個(gè)用戶都有一個(gè)個(gè)人標(biāo)識(shí)碼(PIN),它會(huì)被譯成128bit的鏈路密鑰 (Link Key)來(lái)進(jìn)行單雙向認(rèn)證.一旦認(rèn)證完畢,鏈路就會(huì)以不同長(zhǎng)度的密碼(Encryphon Key)來(lái)加密(此密碼以shit為單位增減,***的長(zhǎng)度為128bit)鏈路層安全機(jī)制提供了大量的認(rèn)證方案和一個(gè)靈活的加密方案(即允許協(xié)商密碼的長(zhǎng)度).當(dāng)來(lái)自不同國(guó)家的設(shè)備互相通信時(shí),這種機(jī)制是極其重要的,因?yàn)槟承﹪?guó)家會(huì)指定***密碼長(zhǎng)度.藍(lán)牙系統(tǒng)會(huì)選取微微網(wǎng)中各個(gè)設(shè)備的最小的***允許密碼長(zhǎng)度.例如,美國(guó)允許128bit的密碼長(zhǎng)度,而西班牙僅允許48bit,這樣當(dāng)兩國(guó)的設(shè)備互通時(shí),將選擇48bit來(lái)加密.藍(lán)牙系統(tǒng)也支持高層協(xié)議棧的不同應(yīng)用體內(nèi)的特殊的安全機(jī)制.例如兩臺(tái)計(jì)算機(jī)在進(jìn)行商業(yè)卡信息交流時(shí),一臺(tái)計(jì)算機(jī)就只能訪問(wèn)另一臺(tái)計(jì)算機(jī)的該項(xiàng)業(yè)務(wù),而無(wú)權(quán)訪問(wèn)其他業(yè)務(wù).藍(lán)牙安全機(jī)制依賴PIN在設(shè)備間建立信任關(guān)系,一旦這種關(guān)系建立起來(lái)了,這些PIN就可以存儲(chǔ)在設(shè)備中以便將來(lái)更快捷地連接.
2.3 藍(lán)牙協(xié)議棧軟件模塊
L2CAP是數(shù)據(jù)鏈路層的一部分,位于基帶協(xié)議之上.L2CAP向上層提供面向連接的和無(wú)連接的數(shù)據(jù)服務(wù),它的功能包括:協(xié)議的復(fù)用能力、分組的分割和重新組裝(Segmentation And Reaassembly)以及提取(Group Abstraction).L2CAP允許高層協(xié)議和應(yīng)用發(fā)送和接受高達(dá)64K Byte的數(shù)據(jù)分組.
SDP為應(yīng)用提供了一個(gè)發(fā)現(xiàn)可用協(xié)議和決定這些可用協(xié)議的特性的方法.藍(lán)牙環(huán)境下的服務(wù)發(fā)現(xiàn)與傳統(tǒng)的網(wǎng)絡(luò)環(huán)境下的服務(wù)發(fā)現(xiàn)有很大的不同,在藍(lán)牙環(huán)境下,移動(dòng)的RF環(huán)境變化很大,因此業(yè)務(wù)的參數(shù)也是不斷變換的.SDP將強(qiáng)調(diào)藍(lán)牙環(huán)境的獨(dú)特的特性.藍(lán)牙使用基于客戶/服務(wù)器機(jī)制定義了根據(jù)藍(lán)牙服務(wù)類型和屬性發(fā)現(xiàn)服務(wù)的方法,還提供了服務(wù)瀏覽的方法.
RFCOMM是射頻通信協(xié)議,它可以仿真串行電纜接口協(xié)議,符合ETSI0710串口仿真協(xié)議.通過(guò)RFCOMM,藍(lán)牙可以在無(wú)線環(huán)境下實(shí)現(xiàn)對(duì)高層協(xié)議,如PPP、TCP/IP、WAP等的支持.另外,RFCOMM可以支持AT命令集,從而可以實(shí)現(xiàn)移動(dòng)電話機(jī)和傳真機(jī)及調(diào)制解調(diào)器之間的無(wú)線連接.
藍(lán)牙對(duì)語(yǔ)音的支持是它與WLAN相區(qū)別的一個(gè)重要的標(biāo)志.藍(lán)牙電話控制規(guī)范是一個(gè)基于ITU-T建議Q.931的采用面向比特的洗衣,它定義了用于藍(lán)牙設(shè)備間建立語(yǔ)音和數(shù)據(jù)呼叫的呼叫控制信令以及用于處理藍(lán)牙TCS設(shè)備的移動(dòng)性管理過(guò)程.
3 藍(lán)牙開發(fā)概述
3.1藍(lán)牙開發(fā)的意義
鑒于藍(lán)牙再未來(lái)信息產(chǎn)品中的重要地位,開發(fā)具有我國(guó)自主只是產(chǎn)權(quán)的藍(lán)牙產(chǎn)品具有非常重要的意義.對(duì)一些信息家電廠家,其主要目的是將藍(lán)牙作為通信模塊集成到自己的產(chǎn)品中,它們可以使用其他廠家的藍(lán)牙產(chǎn)品,自己只需著力于開發(fā)應(yīng)用部分;而對(duì)那些專門從事藍(lán)牙研發(fā)生產(chǎn)的廠家,就需要進(jìn)行從底層到高層的全面開發(fā),只有這樣才能掌握藍(lán)牙的核心技術(shù),才能生產(chǎn)出具有自主知識(shí)產(chǎn)權(quán)的產(chǎn)品.
3.1.1開發(fā)前的準(zhǔn)備工作
(1)對(duì)藍(lán)牙相關(guān)的規(guī)范和協(xié)議有一個(gè)初步的了解,對(duì)要開發(fā)的部分進(jìn)行細(xì)致的研究,協(xié)議的要求必須明確,對(duì)產(chǎn)品的應(yīng)用環(huán)境也必須非常清楚.
藍(lán)牙的規(guī)范包括協(xié)議的核心部分和藍(lán)牙的應(yīng)用剖面(用戶模型),內(nèi)容應(yīng)該非常豐富,對(duì)整個(gè)協(xié)議進(jìn)行全面地了解,但是由于客觀上難以實(shí)現(xiàn),因此,可以先從一些簡(jiǎn)單的介紹開始,從整體上對(duì)藍(lán)牙的結(jié)構(gòu)體系有一個(gè)較為全面的了解,再?gòu)挠脩舻慕嵌攘私馑{(lán)牙系統(tǒng)的概況,這樣,根據(jù)自己準(zhǔn)備開發(fā)的產(chǎn)品,有目的地選擇相關(guān)的協(xié)議進(jìn)行專門研究.
(2)對(duì)同類產(chǎn)品做細(xì)致的調(diào)研.可以根據(jù)分類查看相關(guān)的產(chǎn)品,以及產(chǎn)品的性能和使用方法,還能夠得到有關(guān)廠商的信息. (3)另外也可以申請(qǐng)加入藍(lán)牙SIG,成為SIG成員.
(4)制定一個(gè)詳盡的產(chǎn)品開發(fā)計(jì)劃,盡可能做到周全.
(5)建立一個(gè)開發(fā)工作平臺(tái)、開發(fā)環(huán)境,準(zhǔn)備和選擇相應(yīng)的開發(fā)工具
在藍(lán)牙開發(fā)工具中,應(yīng)包括一個(gè)藍(lán)牙硬件的接口部件和需要的軟件部分,至少要有一對(duì)節(jié)點(diǎn),這樣,才能建立一條鏈路,如果要開發(fā)更為復(fù)雜的應(yīng)用,可能需要更多的節(jié)點(diǎn).硬件可以是各種形式,像IC卡、USB dougle、開發(fā)工具、UART附件等,也可以是自己開發(fā)的或?qū)iT定制的硬件.
在選擇硬件時(shí)需要注意,首先必須明確待開發(fā)的應(yīng)用是什么,是用于嵌入式系統(tǒng)還是用于計(jì)算機(jī)系統(tǒng)?如果是用于計(jì)算機(jī)系統(tǒng),使用PC卡或USB dougle就足夠了,這時(shí)選用簡(jiǎn)單的開發(fā)工具.如果是用于嵌入式系統(tǒng),就需要更為復(fù)雜的開發(fā)工具,要求開發(fā)工具允許進(jìn)行固件的開發(fā)和允許下載到開發(fā)工具中,或者如果希望能夠?qū)ξ⑻幚砥骰騀PGA進(jìn)行直接的測(cè)試,可以制造一塊開發(fā)板,這需要購(gòu)買一塊包括藍(lán)牙模塊和微處理器或FPGA的PCB板,同時(shí)還需要對(duì)微處理器/FPGA進(jìn)行編程的外圍設(shè)備.其次,要注意的問(wèn)題是應(yīng)用中是否包括語(yǔ)音?因?yàn)橛幸恍╅_發(fā)系統(tǒng)不包括語(yǔ)音接口,如果應(yīng)用只有數(shù)據(jù)傳輸,應(yīng)該考慮數(shù)據(jù)的速率,可以使用UART連接器,對(duì)于全速率的數(shù)據(jù)應(yīng)用,需要使用USB.
在決定了使用什么硬件之后需要考慮的就是軟件棧.如果要開發(fā)的應(yīng)用可以使用藍(lán)牙規(guī)范中某個(gè)剖面,那么就只需要實(shí)現(xiàn)與該剖面有關(guān)的軟件棧.這種情況往往要開發(fā)自己定制的棧,這樣更能符合應(yīng)用的要求.如果要開發(fā)的應(yīng)用不能使用現(xiàn)有的剖面結(jié)構(gòu),它就必須與屬于特定剖面的設(shè)備進(jìn)行交互.再進(jìn)行協(xié)議棧需求設(shè)計(jì)事必須牢記兼容性.在決定使用一個(gè)協(xié)議棧之前,還必須仔細(xì)地檢查協(xié)議棧能夠提供的能力,并不是所有的協(xié)議棧都實(shí)現(xiàn)了規(guī)范中所列出的所有功能,有一些功能可能還沒有實(shí)現(xiàn).另外除了比較價(jià)格,文檔的質(zhì)量和公司的售后支持也是需要特別考慮的.
(6)開發(fā)之前還必須了解藍(lán)牙協(xié)議棧的相關(guān)認(rèn)證和測(cè)試規(guī)范,以及與之有關(guān)的程序,以便在開發(fā)過(guò)程中理出測(cè)試的接口.



















