程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> 藍牙技術與協議的開發應用與實現

藍牙技術與協議的開發應用與實現

編輯:J2ME
藍牙技術與協議的開發應用與實現 作者:linux寶庫    文章來源:linux寶庫    更新時間:2006-12-7 17:16:04 763 1 什麼是藍牙技術

  所謂藍牙技術,實際上是一種短距離無線電技術,利用"藍牙技術"能夠有效地簡化掌上電腦、筆記本電腦和移動電話手機等移動通信終端設備,並且能夠成功地簡化以上這些設備與因特網之間的通信,從而使這些現代通信設備與因特網之間的數據傳輸變得更加迅速高效,為無線通信拓寬道路。通俗地講,藍牙技術使得現代一些輕易攜帶的移動通信設備和電腦設備,不必借助電纜就能聯網,並且能夠實現無線上因特網。其實際應用范圍還可以拓展到各種家電產品、消費電子產品和汽車等信息家電,組成一個巨大的無線通信網絡。

  2 藍牙技術的特點

  2.1 藍牙協議體系結構

  整個藍牙協議體系結構可分為底層硬件模塊、中間協議層和高端應用層三大部分。鏈路管理層(LMP)、基帶層(BBP)和藍牙無線電信道構成藍牙的底層模塊。BBP層負責跳頻和藍牙數據及信息幀的傳輸。LMP層負責連接的建立和拆除以及鏈路的安全和控制,它們為上層軟件模塊提供了不同的訪問人口,但是兩個模塊接口之間的消息和數據傳遞必須通過藍牙主機控制器接口的解釋才能進行。也就是說,中間協議層包括邏輯鏈路控制與適配協議(L2CAP)、服務發現協議(SDP)、串口仿真協議(RFCOMM)和電話控制協議規范(TCS)。L2CAP完成數據拆裝、服務質量控制、協議復用和組提取等功能,是其他上層協議實現的基礎,因此也是藍牙協議棧的核心部分。SDP為上層應用程序提供一種機制來發現網絡中可用的服務及其特性。在藍牙協議棧的最上部是高端應用層,它對應於各種應用模型的剖面,是剖面的一部分。目前定義了13種剖面。

  2.2 藍牙低層模塊

  藍牙的低層模塊是藍牙技術的核心,是任何藍牙設備都必須包括的部分。

  藍牙工作在2.4GHZ的ISM頻段。采用了藍牙結束的設備講能夠提供高達720kbit/s 的數據交換速率。

  藍牙支持電路交換和分組交換兩種技術,分別定義了兩種鏈路類型,即面向連接的同步鏈路(SCO)和面向無連接的異步鏈路(ACL)。

  為了在很低的功率狀態下也能使藍牙設備處於連接狀態,藍牙規定了三種節能狀態,即停等(Park)狀態、保持(Hold)狀態和呼吸(Sniff)狀態。這幾種工作模式按照節能效率以升序排依次是:Sniff模式、Hold模式、Park模式。

  藍牙采用三種糾錯方案:1/3前向糾錯(FEC)、2/3前向糾錯和自動重發(ARQ)。前向糾錯的目的是減少重發的可能性,但同時也增加了額外開銷。然而在一個合理的無錯誤率環境中,多余的投標會減少輸出,故分組定義的本身也保持靈活的方式,因此,在軟件中可定義是否采用FEC。一般而言,在信道的噪聲干擾比較大時藍牙系統會使用前向糾錯方案,以保證通信質量:對於SCO鏈路,使用1/3前向糾錯;對於ACL鏈路,使用2/3前向糾錯。在無編號的自動請求重發方案中,一個時隙傳送的數據必須在下一個時隙得到收到的確認。只有數據在收端通過了報頭錯誤檢測和循環冗余校驗(CRC)後認為無錯時,才向發端發回確認消息,否則返回一個錯誤消息。

  藍牙系統的移動性和開放性使得安全問題變得及其重要。雖然藍牙系統所采用的調頻技術就已經提供了一定的安全保障,但是藍牙系統仍然需要鏈路層和應用層的安全管理。在鏈路層中,藍牙系統提供了認證、加密和密鑰管理等功能。每個用戶都有一個個人標識碼(PIN),它會被譯成128bit的鏈路密鑰(Link Key)來進行單雙向認證。一旦認證完畢,鏈路就會以不同長度的密碼(Encryphon Key)來加密(此密碼以shit為單位增減,最大的長度為128bit)鏈路層安全機制提供了大量的認證方案和一個靈活的加密方案(即允許協商密碼的長度)。當來自不同國家的設備互相通信時,這種機制是極其重要的,因為某些國家會指定最大密碼長度。藍牙系統會選取微微網中各個設備的最小的最大允許密碼長度。例如,美國允許128bit的密碼長度,而西班牙僅允許48bit,這樣當兩國的設備互通時,將選擇48bit來加密。藍牙系統也支持高層協議棧的不同應用體內的特殊的安全機制。例如兩台計算機在進行商業卡信息交流時,一台計算機就只能訪問另一台計算機的該項業務,而無權訪問其他業務。藍牙安全機制依賴PIN在設備間建立信任關系,一旦這種關系建立起來了,這些PIN就可以存儲在設備中以便將來更快捷地連接。

  2.3 軟件模塊

  L2CAP是數據鏈路層的一部分,位於基帶協議之上。L2CAP向上層提供面向連接的和無連接的數據服務,它的功能包括:協議的復用能力、分組的分割和重新組裝(Segmentation And Reaassembly)以及提取(Group Abstraction)。L2CAP允許高層協議和應用發送和接受高達64K Byte的數據分組。

  SDP為應用提供了一個發現可用協議和決定這些可用協議的特性的方法。藍牙環境下的服務發現與傳統的網絡環境下的服務發現有很大的不同,在藍牙環境下,移動的RF環境變化很大,因此業務的參數也是不斷變換的。SDP將強調藍牙環境的獨特的特性。藍牙使用基於客戶/服務器機制定義了根據藍牙服務類型和屬性發現服務的方法,還提供了服務浏覽的方法。

  RFCOMM是射頻通信協議,它可以仿真串行電纜接口協議,符合ETSI0710串口仿真協議。通過RFCOMM,藍牙可以在無線環境下實現對高層協議,如PPP、TCP/IP、WAP等的支持。另外,RFCOMM可以支持AT命令集,從而可以實現移動電話機和傳真機及調制解調器之間的無線連接。

  藍牙對語音的支持是它與WLAN相區別的一個重要的標志。藍牙電話控制規范是一個基於ITU-T建議Q.931的采用面向比特的洗衣,它定義了用於藍牙設備間建立語音和數據呼叫的呼叫控制信令以及用於處理藍牙TCS設備的移動性管理過程。

  3 藍牙開發概述

  3.1藍牙開發的意義

  鑒於藍牙再未來信息產品中的重要地位,開發具有我國自主只是產權的藍牙產品具有非常重要的意義。對一些信息家電廠家,其主要目的是將藍牙作為通信模塊集成到自己的產品中,它們可以使用其他廠家的藍牙產品,自己只需著力於開發應用部分;而對那些專門從事藍牙研發生產的廠家,就需要進行從底層到高層的全面開發,只有這樣才能掌握藍牙的核心技術,才能生產出具有自主知識產權的產品。

  3.1.1開發前的准備工作

  (1)對藍牙相關的規范和協議有一個初步的了解,對要開發的部分進行細致的研究,協議的要求必須明確,對產品的應用環境也必須非常清楚。

  藍牙的規范包括協議的核心部分和藍牙的應用剖面(用戶模型),內容應該非常豐富,對整個協議進行全面地了解,但是由於客觀上難以實現,因此,可以先從一些簡單的介紹開始,從整體上對藍牙的結構體系有一個較為全面的了解,再從用戶的角度了解藍牙系統的概況,這樣,根據自己准備開發的產品,有目的地選擇相關的協議進行專門研究。

  (2)對同類產品做細致的調研。可以根據分類查看相關的產品,以及產品的性能和使用方法,還能夠得到有關廠商的信息。 (3)另外也可以申請加入藍牙SIG,成為SIG成員。

  (4)制定一個詳盡的產品開發計劃,盡可能做到周全。

  (5)建立一個開發工作平台、開發環境,准備和選擇相應的開發工具

  在藍牙開發工具中,應包括一個藍牙硬件的接口部件和需要的軟件部分,至少要有一對節點,這樣,才能建立一條鏈路,如果要開發更為復雜的應用,可能需要更多的節點。硬件可以是各種形式,像IC卡、USB dougle、開發工具、UART附件等,也可以是自己開發的或專門定制的硬件。

  在選擇硬件時需要注意,首先必須明確待開發的應用是什麼,是用於嵌入式系統還是用於計算機系統?如果是用於計算機系統,使用PC卡或USB dougle就足夠了,這時選用簡單的開發工具。如果是用於嵌入式系統,就需要更為復雜的開發工具,要求開發工具允許進行固件的開發和允許下載到開發工具中,或者如果希望能夠對微處理器或FPGA進行直接的測試,可以制造一塊開發板,這需要購買一塊包括藍牙模塊和微處理器或FPGA的PCB板,同時還需要對微處理器/FPGA進行編程的外圍設備。其次,要注意的問題是應用中是否包括語音?因為有一些開發系統不包括語音接口,如果應用只有數據傳輸,應該考慮數據的速率,可以使用UART連接器,對於全速率的數據應用,需要使用USB。

  在決定了使用什麼硬件之後需要考慮的就是軟件棧。如果要開發的應用可以使用藍牙規范中某個剖面,那麼就只需要實現與該剖面有關的軟件棧。這種情況往往要開發自己定制的棧,這樣更能符合應用的要求。如果要開發的應用不能使用現有的剖面結構,它就必須與屬於特定剖面的設備進行交互。再進行協議棧需求設計事必須牢記兼容性。在決定使用一個協議棧之前,還必須仔細地檢查協議棧能夠提供的能力,並不是所有的協議棧都實現了規范中所列出的所有功能,有一些功能可能還沒有實現。另外除了比較價格,文檔的質量和公司的售後支持也是需要特別考慮的。

  (6)開發之前還必須了解藍牙SIG規定的相關認證和測試規范,以及與之有關的程序,以便在開發過程中理出測試的接口。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved