1. 程式人生 > >BlueTooth: 藍芽協議棧實現模式分析

BlueTooth: 藍芽協議棧實現模式分析

藍芽協議棧實現模式分析

藍芽技術是一項新興的技術。它的主要目的就是要在全世界範圍內建立一個短距離的無線通訊標準 。它使用 2.4-2.5 GHz 的 ISM( Industrion Scientifc Medical ) 頻段來傳送話音和資料。運用成熟、實用、先進的無線技術來代替電纜,它提供了低成本,低功耗的線介面,使所有的固定和移動裝置諸如:計算機系統、家庭影院系統、無繩電話系統、通訊裝置等,通過微微網(PAN,Personal Area Network)連線起來相互通訊,實現資源共享。 簡而言之,藍芽技術支援多種電子裝置之間的短距離無線通訊,這種通訊不需要任何線纜,亦不需要使用者直接手工干涉;每當一個嵌入了藍芽技術的裝置發覺另一同樣嵌入藍芽技術的裝置,它們就能自動同步,並立一種特別的無線網路(ad hoc), 相互通訊,實現資源共享。 

1.藍芽的結構體系 

藍芽協協棧的體系結構如圖 1 所示。它是由底層硬體模組,中間層和高階應用層三大部分組成。

 

1.1藍芽的底層模組 

底層模組是藍芽技術的核心模組,所有嵌入藍芽技術的裝置都必須包括底層模組。它主要由鏈路管理層(LMP Link Manager Protocol)、基帶層(BB Base Band)和射頻(RF Rodio Frequency)組成。

其功能是:

無線連線層(RF)通過2.4GHZ無需申請的ISM頻段,實現資料流的過濾和傳輸,它主要定義了對工作在此頻段的藍芽接收機應滿足的要求;

基帶層(BB)提供了兩種不同的物理鏈路(同步面向連線鏈路SCO Synchronous Connection Oriented和非同步無連線鏈路ACL Asynchronous Connection Less),負責跳頻和藍芽資料及資訊幀的傳輸,且對所有型別的資料包提供了不同層次的前向糾錯碼(FEC Frequency Error Correction)或迴圈沉餘度差錯校驗(CTC Cyclic Redundancy Check);

LMP層負責兩個或多個裝置鏈路的建立和拆除及鏈路的安全和控制,如鑑權和加密、控制和協商基帶包的大小等,它為上層軟體模組提供了不同的訪問入口;

藍芽主機控制器介面HCI (Host Controller Interface)由基帶控制器、連線管理器、控制和事件暫存器等組成。它是藍芽協議中軟硬體之間的介面,它提供了一個呼叫下層BB、LM、狀態和控制暫存器等硬體的統一命令,上、下兩個模組介面之間的訊息和資料的傳遞必須通過HCI的解釋才能進行。HCI層以上的協議軟體實體執行在主機上,而HCI以下的功能由藍芽裝置耒完成,二者之間通過傳輸層進行互動。 

1.2 中間協議層 

中間協議層由邏輯鏈路控制與適配協議L2CAP (Logical Link Control and Adaptation Protocol)、服務發現協議 SDP (Service Discovery Protocol)、串列埠模擬協議或稱線纜替換協議 RFCOM 和二進位制電話控制協議 TCS (Telephony Control protocol Spectocol)組成。

L2CAP 是藍芽協議棧的核心組成部分,也是其它協議實現的基礎。它位於基帶之上,向上層提供面向連線的和無連線的資料服務。它主要完成資料的拆裝、服務質量控制,協議的複用、分組的分割和重組(Segmentation And Reassembly)及組提取等功能。L2CAP允許高達64KB的資料分組。

SDP是一個基於客戶/伺服器結構的協議。它工作在 L2CAP層之上,為上層應用程式提供一種機制來發現可用的服務及其屬性,而服務的屬性包括服務的型別及該服務所需的機制或協議資訊。

RFCOMM 是一個模擬有線鏈路的無線資料模擬協議,符合ETSI 標準的 TS 07.10串列埠模擬協議。它在藍芽基帶上模擬RS-232的控制和資料訊號,為原先使用序列連線的上層業務提供傳送能力。

TCS是一個基於 ITU-T Q.931 建議的採用面向位元的協議,它定義了用於藍芽裝置之間建立語音和資料呼叫的控制信令(Call Control Signalling),並負責處理藍芽裝置組的移動管理過程。 

1.3 高階應用層 

高階應用層位於藍芽協議棧的最上部分。一個完整的藍芽協議棧按其功能又可劃分為四層:核心協議層(BB、LMP、LCAP、SDP)、線纜替換協議層(RFCOMM)、電話控制協議層(TCS-BIN)、選用協議層(PPP、TCP、TP、UDP、OBEX、IrMC、WAP、WAE)。而高階應用層就是由選用協議層組成。

選用協議層中的 PPP (Point-to-Point Protocol)是點到點協議,它由封裝、鏈路控制協議、網路控制協議組成,它定義了序列點到點鏈路應當如何傳輸因特網協議資料,它主要用於LAN接入、撥號網路及傳真等應用規範;

TCP/IP(傳輸控制協議/網路層協議)、UDP(User Datagram Protocol 物件交換協議)是三種已有的協議,它定義了因特網與網路相關的通訊及其他型別計算機裝置和外圍裝置之間的2通訊。藍芽採用或共享這些已有的協議去實現與連線因特網的裝置的通訊,這樣,既可提高效率,又可在一定程度上保證藍芽技術和其它通訊技術的互操作性;

OBEX(Object Exchange Protocol)是物件交換協議,它支援裝置間的資料交換,採用客戶/伺服器模式提供與 HTTP(超文字傳輸協議)相同的基本功能。該協議作為一個開放性標準還定義了可用於交換的電子商務卡、個人日程表、訊息、和便條等格式;WAP(Wireless Application Protocol)是無線應用協議,它的目的是要在數字蜂窩電話和其它小型無線裝置上實現因特網業務。它支援行動電話瀏覽網頁、收取電子郵件和其它基於因特網的協議。

WAE(Wireless Application Environment) 是無線應用環境,它提供用於 WAP 電話和個人數字助理

PDA(Personal Digtital Assistant) 所需的各種應用軟體。 

2. 藍芽軟體的實現 

藍芽的技術規範除了包括藍芽的應用部分(即應用模型)外,還包括有很重要的高層協議棧部分。在實現藍芽的時候,一般是將藍芽分成兩部分耒考慮的(如圖一所示),其一,是硬體實現部分,它位於 HCI 的下面,亦即上面提到的底層硬體模組(藍芽的硬體實現詳見《電子技術應用》2002.11 期);其二是軟體實現部分。軟體實現部分位於 HCI 的上面,包括了藍芽協議棧上層的 L2CAP、RFCOMM、SDP和 TCS以及藍芽的一些應用。下面我們來討論藍芽高層協議棧的目的、結構、效能及其實現過程。 

2.1 藍芽高層協議棧的主要目標 
  圖 2 協議棧及相關環境  藍芽高層協議棧的主要目標是支援確定目標的使用者模型;支援多種硬體平臺;具有良好的使用者使用介面,能夠使用傳統的應用,在可能的情況下使用現 有的協議;最小的原始碼數量;最大的重用;具有可維護性。藍芽高層協議棧在實現作業系統獨立性時使用了虛擬作業系統(VOS Virtual Operating System)的概念,在作業系統和協議之間設計了一個虛擬作業系統介面,把藍芽主機棧直接用到很多嵌入式實時作業系統中(如:OSE、Psos+、VxWorks 等),同時亦可用到標準的作業系統中(如:Windows 和 UNIX 等),而這些移植和使用都不需要改變協議棧的原始碼,這樣,既提高了效率又在一定程度上保證了不同技術和裝置的互操作性;為了實現硬體的獨立性,藍芽協議棧在 HCI 層以下附加了一個序列介面層,實現到不同 HCI 介面的對映;為了利用傳統的應用,以及便於使更多的使用者能夠開發基於藍芽的應用,藍芽協議棧提供了藍芽應用程式介面(API Application Programming Interface);為了管理和配置協議棧的各個層次,在藍芽協議棧軟體中附加了一個協議棧的管理模組。這樣藍芽協議棧在上述幾個方面都實現了有效的隔離,消除了對外部環境的依賴性,使用者不再需要對藍芽協議棧的原始碼進行任何改變,使用者只需通過簡單的編譯和連結就可以整合進最新的藍芽主機棧。如上圖 2 所示。 

2.2 藍芽高層協議棧的組成 

   圖 3 藍芽高層協議棧的組成模組 

藍芽的高層協議棧通常設計成一個軟體部件,而執行在主機裝置上,所以,有時又稱為主機棧(Host Stack)。它的結構如上圖3 所示。它主要是由高層協議模組、硬體支援模組、協議管理器模組、剖面介面模組等組成。

高層協議模組主要由服務發現協議(SDP)、射頻通訊協議(RFCOMM)、邏輯鏈路控制與適配協議(L2CAP)、電話控制規範(TCS )、服務發現應用程式規範(SDAP)、物件交換協議(OBEX)以及序列應用規範(SPP)組成(而這些規範是任何藍芽協議棧都必須實現的);

硬體支援模組主要是由主機控制介面如 HCI USB、HCI URAT、HCI RS232D等組成(這些模組不一定全部實現,可只選其中之一);

協議管理器模組的主要作用是負責對藍芽協議棧根據使用環境進行配置,根據不同的作業系統和使用者模型選用不同的配置方案(這是必須包括的模組);

剖面介面模組是由物件上載應用規範(OPP)、檔案傳輸協議(FTP)、Sync、CTP、DUN、HS、FAX、LAN組成,它們是藍芽規範規定的藍芽剖面,還可以包括其它一些特有的剖面結構(這些模組不一定全部實現)。藍芽高層協議棧各模組的功能已在 1.3 節中論述過,這裡就不再詳解。 

2.3 模組及應用程式介面 
(1) 主機控制介面(HCI) 
藍芽作為一種短距離的無線網路技術,為裝置之間的互聯提供了方面。使用藍芽互聯的主機大都具有處理器、匯流排和作業系統,藍芽必須與它們有機地融合在一起才能很好地發揮作用。主機控制介面(HCI)為主機提供了直接控制 藍芽模組的方法和途徑。通過 HCI 把藍芽模組和主機連線在一起。HCI 模組由HCI 事件管理、HCI 命令管理、HCI AC/SCO 資料傳輸、HCI 傳輸層API、向上層輸出的 API 模組組成。HCI 韌體通過訪問基帶命令、鏈路管理器命令、硬體狀態暫存器、控制暫存器、事件暫存器實現對藍芽硬體的 HCI 命令。 
(2) RFCOMM 及其介面 
前面曾提到 RFCOMM 是一個基於ETST 標準 TS 07.10的傳輸協議,提供了對 RS-232序列介面的模擬。它在兩個藍芽裝置之間同時最多提供60條連線,最大可以接收/傳送 32KB大小的資料分組。RFCOMM 的目的是使執行在兩個不同裝置上的通訊路徑具有一個通訊段,這個通訊段可以是終端使用者的應用,亦可以是高層協議或表示終端使用者應用的一些服務。RFCOMM 能夠提供 DLC 的建立與釋放、DLC 引數協商、資料傳送、流量控制開/關命令、調製狀態命令、遠端埠協商、遠端線路狀態與測試命令等功能;而 RFCOMM 協議層介面能夠提供啟動過程、連線過程、聚合介面、資料交換介面、序列模擬介面功能。 

(3) SDP及其介面 

服務發現協議(SDP)是藍芽框架的一個關鍵部分,它由服務發現代理(SDA)、服務發現伺服器(SDS)、服務資料庫管理器(SDM)三個模組組成。SDA 負責查詢存在的服務及其屬性,代表客戶應用傳送請求;SDS 負責對 SDA請求進行響應,根據 SDA 的請求,從 SDM 中取出相關的資料送給 SDA;SDM負責管理服務資料庫和棧資料庫。可以說 SDP 是所有應用模型的一個基礎,它同時為應用提供了一種使用 L2CAP 連線發現可用服務以及決定這些可用服務的特徵手段。利用 SDP 獲得資訊,藍芽的裝置就可以建立適當的連線。服務發現的應用程式介面( API ) 能夠提供 L2CAP連線、服務查詢會話、服務屬性會話、服務查詢屬性會話、服務瀏覽、L2CAP連線斷開功能。 

(4) L2CAP介面 
邏輯鏈路控制與適配協議(L2CAP)是資料鏈路層的一部分,它向上層提供面向連線和無連線的服務。L2CAP 部件向一個或多個適配協議輸出服務。L2CAP 介面實際上是一個訊息介面,每個關於適配實體的訊息都有一個可用的函式,用這個函式耒生成相的訊息並向正確的目的地傳送該訊息,而且適配實體的的使用者還可以自由地組織這些訊息。總的耒說,L2CAP 對面向連線的通道控制模組必須能實現:面向連線的通道連線、通道配置、通道資料傳輸、通道連線的斷開、回送處理及實現對特定資訊的交換;而對無連線的通道控制模組必須實現:無連線通道資料的傳送、組處理及開啟/關閉無連線通道的資料接收。 
(5) 棧連線管理器(SCM)及其介面 
在圖 3 藍芽協議棧的組成模組中雖然沒有這一部分,但是所有藍芽協議棧的實現都必須包括這樣一個部件,該部件由資料和語音連結管理模組及安全管理模組組成,負責處理和管理藍芽的基帶連線。且必須完成以下功能:生成資料鏈路和語音鏈路;在鏈路配對的情況下,保持鏈路金鑰;確保藍芽棧建立的資料和語音鏈路之上的多個應用之間的相互獨立;SMC在L2CAP層起本地路由功能,使用本地地址建立一個本地資料鏈路時生成的本地名柄。 
(6) 藍芽應用程式介面(API) 
藍芽應用程式介面(API)就是要解決層與層之間的通訊問題。通常是通過正確呼叫請求訊息函式耒進行層 A 與 B 之間的通訊。請求函式將為一個特定的請求訊息分配記憶體,訊息中可以填入函式的輸入引數,然後訊息根據使用的要求送到 B 層。訊息的處理和為訊息分配記憶體一般是通過虛擬作業系統(VOS)的服務例程耒完成。在藍芽協議棧中層與層之間的通訊與一般的協議之間的通訊
概念和機制相同,都是使用請求、確認、指示和響應四種原語耒實現。  3.東芝藍芽協議棧產品 BluetoothTM Utility軟體介紹 

東芝藍芽協議棧BluetoothTM Utility軟體是東芝公司專門為Windows而設計的軟體棧,其結構如圖 4 所示。

 

圖 4 東芝藍芽棧的軟體結構 

3.1 結構、特性及應用 

東芝藍芽協議棧產品BluetoothTM Utility軟體棧是由主機控制介面以上的藍芽協議棧(L2CAP、RFCOMM、SDP)、硬體驅動程式(USB和PC卡)、應用程式介面(API)和支援藍芽剖面的使用者應用模組組成。它與藍芽的1.0b板一致。該軟體棧能夠實現通用訪問應用規範GAP(Generic Access Profile)特性和業務發現應用規範SDAP(Service Discovery Application Profile)特性,它包括了藍芽服務中心、藍芽監視和藍芽的LocalCOM三個方面的應用。其中,藍芽服務中心主要是指使用者介面UI(User Interface)方面的應用,它為藍芽終端使用者提供了發現遠端的裝置、查詢在遠端裝置提供的服務、與遠端裝置進行連線、以及列表管理等多種藍芽服務;藍芽監視是在當系統加電後,使用者就可以使用該應用耒控制藍芽裝置的供電狀態並能夠指示藍芽裝置的連線模式、狀態 、standby模式和斷電模式;藍芽的LocalCOM主要是一個嚮導應用,使用者可以用它耒與自己選擇的遠端裝置生成虛擬的COM、服務和連線。該軟體棧中的L2CAP和RFCOMM是作為驅動程式模組耒實現的,而SDP協議是作為使用者模式應用耒實現的。對藍芽使用者支援的剖面特性還使用了一些Windows COM應用和電話應用,這些應用使用應用程式介面(API)與藍芽協議棧進行通訊。如圖 4 中的藍芽ad hoc網路應用軟體SPANworks就是通過API與其它包含藍芽技術的裝置進行資料交換的。 

3.2 協議棧支援的使用環境 
(1) 該軟體棧可以支援各種不同的硬體平臺,它為各種硬體平臺提供了硬體設 備驅動程式和藍芽匯流排驅動程式,包括位於這些驅動程式之上的L2CAP和HCI,這樣,就可以很方便地通過一個公共裝置驅動程式介面與主機控制器進行通訊。 
(2) 該軟體套件是獨立於硬體的,當有新硬體時,只需新增新硬體的驅動程式 而無須對上層軟體進行任何的改變。 
(3) 從圖4 中可以看出 RFCOMM 驅動程式和 SDP服務位於藍芽匯流排驅動程 序之上,中間是藍芽匯流排驅動程式的 API,所以,當有新的剖面應用要開發的時候,只需在藍芽匯流排驅動程式的 API 之上增加相應的協議驅動程式和服務就可以了。 
(4) 該軟體棧可以支援的作業系統:Microsoft Windows 98 Second Edition; Microsoft Windows Millennium Edition; Microsoft Windows 2000;Microsoft Windows NT Version 4.0。 
(5) 該軟體棧可以支援的硬體介面:PCMCIA、USB、UART。 
(6) 該軟體棧可以支援的應用剖面:普通接入剖面、服務發現剖面、序列介面 剖面、撥號網路剖面、傳真剖面、LAN 接入剖面、物件推剖面以及檔案傳輸剖面。 
(7) 該軟體棧實現瞭如下的協議:L2CAP、RFCOMM、OBEX以及 SDP。 
4.結束語 

藍芽技術作為一個開放的無線應用標準,能通過無線連線的方式將一定範圍內的固定或移動裝置連線起來,使人們能夠更方便更快速地進行語音和資料的交換,這無疑地將會成為未來無線通訊領域的一個重要的研究方向。本文所描述的藍芽技術硬體實現模式分析,只是藍芽核心技術中的一部分,隨著藍芽技術的不斷完善與產品的成功開發,可以肯定,藍芽技術將會逐漸進入我們的工作和生活,成為我們生活中不可缺少的一部分。