日本久章草在线一区二区三区,久久精品视频5,樱桃视频污在线观看,窝蝌蚪免费精品视频

電子方案開發(fā)供應鏈平臺
一鍵發(fā)布任務
獲取驗證碼
返回

發(fā)布成功


贊賞作者

贊賞金額:

  • ¥2
  • ¥5
  • ¥10
  • ¥50
  • ¥100
  • ¥200

支付金額:5

支付方式:

微信支付

贊賞成功!
你的贊賞是對作者最大的肯定~?

當前位置 : 首頁 > 方案訊 > 方案訊詳情
XTNDAccess Blue SDK藍牙協(xié)議軟件的結構、移植與應用
發(fā)布時間:2010-10-21 閱讀量:1933 來源: 作者:52Forum

摘要:本文以Extended Systems公司的藍牙協(xié)議棧產(chǎn)品XTNDAccess Blue SDK為例介紹了藍牙協(xié)議軟件的設計原理,協(xié)議棧結構,移植過程,及應用的開發(fā)方法。

關鍵詞: XTNDAccess Blue SDK Bluetooth  IrDA  Profile Baseband HCI LMP/HCI/SDP/TCS/RFCOMM/OBEX/IrMC TCP/IP,PPP.AT command


引言:
 藍牙技術廣闊的應用前景在國內(nèi)引起了極大的關注,有些公司已經(jīng)決定投入資金進行技術跟蹤和相應產(chǎn)品的開發(fā)。但大多數(shù)廠商還在持觀望的態(tài)度,其中有藍牙硬件成本仍高居不下的問題,也有藍牙軟件協(xié)議開發(fā)困難和協(xié)議兼容性認證困難的問題。
 XTNDAccess Blue SDK是Extended Systems公司(www.extendedsystems.com) 開發(fā)的功能完善,原碼形式提供的,經(jīng)過Bluetooth SIG兼容性測試的協(xié)議軟件產(chǎn)品。目前全球已經(jīng)有超過60個客戶在使用該SDK進行著藍牙應用的開發(fā),其中不乏著名公司,如 3COM/Plam,Motorola,HP, Xircomm, Red-M, Fujitsu, Flashpoint……
 本人希望通過介 紹XTNDAccess Blue SDK的設計原理和實現(xiàn)方法,揭開藍牙協(xié)議設計與實現(xiàn)的神秘面紗,增加讀者對藍牙協(xié)議軟件的認識,使讀者掌握使用XTNDAccess Blue SDK進行藍牙產(chǎn)品的開發(fā)的過程,也為讀者自己進行藍牙軟件設計與實現(xiàn)提供一定的思路。
 需要指出的是,藍牙技術發(fā)展迅速,Extended Systems公司的XTNDAccess Blue SDK的軟件版本也在不斷的更新之中,本文介紹的內(nèi)容是基于XTNDAccess Blue SDK的1.2版本。該軟件的最新特性,可以參考http://www.extendedsystems.com


1. 藍牙標準協(xié)議棧結構的簡介:
藍牙技術規(guī)范目前版本為1.0b,主要規(guī)范文檔 為<>和<>,。
其中<>對藍牙技術的射頻、基帶、音頻傳輸,HCI接口,LMP,L2CAP,SDP,RFCOMM,與IrDA協(xié)議 的互操作,藍牙產(chǎn)品的認證等進行了定義。<>對藍牙技術的各種Profile(應用模型)進行詳細的定義,其中包括
另外,<>文檔對藍牙協(xié)議的軟件結構做了專門的介紹。讓我們首先看看該文檔中的完整的藍牙軟件協(xié)議結構圖(見圖一)。
 
   圖一:標準藍牙軟件協(xié)議結構圖

規(guī)范中將所有協(xié)議分類為:
1. 藍牙核心協(xié)議
基帶控制部分,包括語音處理;鏈路管理協(xié)議(LMP);邏輯鏈路適配協(xié)議(L2CAP);服務發(fā)現(xiàn)協(xié)議(SDP)。
2. 電纜替代協(xié)議
串口仿真協(xié)議(RFCOMM),基于ETSI 07.10規(guī)范。
3. 電話控制協(xié)議
TCS BIN,基于ITU-T的Q.931規(guī)范;AT Commands基于ITU-T的推薦V.250和ETS 300 916(GSM 07.07)規(guī)范。
4. 吸收的協(xié)議
PPP;TCP/IP;OBEX(對象交換協(xié)議)基于紅外協(xié)議棧中的IrOBEX;WAP。
我們在此文中不再詳細介紹各個協(xié)議的具體功能,而著重介紹這些協(xié)議在XTNDAccess Blue SDK中的實現(xiàn)方法。

2. XTNDAccess Blue SDK的設計思想:
Extended Systems公司設計XTNDAccess Blue SDK的目的是為藍牙應用的開發(fā)者提供一個高效開放的藍牙軟件協(xié)議開發(fā)平臺,使開發(fā)人員可以很方便地開發(fā)出自己的藍牙應用,很方便的將藍牙軟件移植到開發(fā) 人員選定的操作系統(tǒng)中,通過特定的HCI接口支持特定的藍牙模塊。
Extended Systems公司是短距離無線通信協(xié)議的著名提供商。早在加入Bluetooth SIG之前,就已經(jīng)是紅外通信標準化組織的發(fā)起人和標準制定人(當時以Conter Pointer公司的身份)。該公司以Dave Suvak為主的技術專家參與制訂了紅外通信協(xié)議簇中的絕大部分協(xié)議。尤其值得指出的是Dave Suvak 編寫的IrOBEX協(xié)議,被Bluetooth SIG吸收到藍牙協(xié)議中來。作為藍牙技術和紅外技術的結合點,OBEX協(xié)議規(guī)定了藍牙技術和紅外技術的互操作性。作為Object Push Profile,F(xiàn)ile Transfer Profile,Synchronization Profile的實現(xiàn)基礎,OBEX在藍牙協(xié)議的應用上有著極其重要的地位。
在藍牙的規(guī)范中,藍牙硬件模塊中實現(xiàn)了基帶的功能和鏈路管理協(xié)議(LMP),所以不需要SDK實現(xiàn)。但對基帶送上來的語音,SDK還是要有特殊的處理部分的。
在藍牙的協(xié)議中,PPP,IP,TCP/UDP等協(xié)議歸屬于TCP/IP協(xié)議簇,已經(jīng)相當成熟,并且被絕大多數(shù)操作系統(tǒng)實現(xiàn),屬于操作系統(tǒng)的一部分,所以也SDK也沒有實現(xiàn)的必要。
AT Commands非常簡單,只是需要在特定的應用中通過RFCOMM協(xié)議發(fā)送特定的數(shù)據(jù)(命令)而已,所以也無實現(xiàn)的必要。
WAP協(xié)議本身的發(fā)展還有許多不確定的因素,并且WAP協(xié)議本身比較復雜,相對獨立,有獨立的軟件開發(fā)商提供,所以SDK沒有包含WAP協(xié)議簇的必要。
這樣,我們就可以確定了SDK要實現(xiàn)的藍牙協(xié)議的模塊:L2CAP,RFCOMM,SDP,TCS BIN,Audio,OBEX。
其中OBEX因為地位特殊,在XTNDAccess Blue SDKstack中被作為Add-Ins(特殊的應用部分)實現(xiàn),不包含與SDK stack之中。這樣我們可以得到在XTNDAccess Blue SDKstack的基本構成。

3.XTNDAccess Blue SDKstack的結構和功能模塊:
 
圖二:Blue SDK stack的內(nèi)部結構圖

在圖二中,我們看到在Blue SDK stack中除了基本的協(xié)議模塊外,還有兩個軟件模塊:Management Entity 和 Event Manager。
這兩個模塊的功能是什么呢?
Management Entity是負責管理功能的軟件模塊,包括:
1) Piconet Manager:負責Piconet的連接的建立、維護,設備查詢,維護Slave設備的工作模式(Active,Park,Hold,Sniff)。
2) SCO Manager:負責創(chuàng)建和維護設備之間的語音交換的鏈路。
3) Security Manager:允許應用程序?qū)﹁b權和加密進行設置,真正的鑒權和加密是硬件實現(xiàn)的。
Event Manager是一個執(zhí)行線程(thread),包含著對所有協(xié)議模塊的調(diào)用,并且管理著協(xié)議棧的初始化和定時器信息。
由此可以看出,SDK中附加的兩個模塊是為了藍牙的實際應用而建立的。Management Entity包含了藍牙實現(xiàn)中最常用的管理應用;Event Manager是程序執(zhí)行的線程實體。

3. XTNDAccess Blue SDK的移植和應用:

  
  圖三:構成藍牙應用的部件
在圖三中,我們可以看到以Blue SDK stack為核心,該SDK經(jīng)過歸納設計出了三種API:
Application API—開發(fā)藍牙應用程序;
OS API—使用操作系統(tǒng)提供的服務;
HCI API—通過特定的HCI類型驅(qū)動特定的藍牙硬件模塊。
 
1) 操作系統(tǒng)的移植-- OS API:
我們的協(xié)議棧任務的基本要求是不可重入。
移植前,我們要明確操作系統(tǒng)的一些特性,如:是單任務OS還是多任務的OS;多任務的OS是否是搶占式的;系統(tǒng)的互斥機制;定時器的特性;中斷處理程序的編寫等等……
向特定操作系統(tǒng)的移植,會涉及到以下一些操作系統(tǒng)提供的服務
 
 下面我們通過圖四表現(xiàn),協(xié)議棧任務的執(zhí)行過程。
 
    圖四:協(xié)議棧執(zhí)行的流圖

堆棧任務實際就是反復的調(diào)用EVM_Process()函數(shù),此函數(shù)不可重入,所以用OS_LockStack()和 OS_UnlockStack()函數(shù)實現(xiàn)互斥的保護。OS_LockStack()和OS_UnlockStack()利用了一個OS的 Semaphore來實現(xiàn)。在任務執(zhí)行過程中,需要調(diào)用到高層協(xié)議的時候,SDK使用Callback函數(shù)的方式實現(xiàn)。在其它層中,提供的 Callback函數(shù),也會鎖定協(xié)議任務。所以要求操作系統(tǒng)提供的互斥機制可以多次鎖定同樣的任務。
另外,XTNDAccess Blue SDK以Windows和VxWorks為例,提供了操作系統(tǒng)移植包,用戶可以用VC++6.0和VxWorks的編譯器對協(xié)議棧和例子進行編譯,并且可以直接在Windows平臺上運行大部分例子程序。

2) 對藍牙硬件模塊的驅(qū)動的移植--HCI API:
*圖五中表現(xiàn)了協(xié)議棧與HCI的層次關系
  
   圖五:HCI層次圖
HCI API Layer:這是在協(xié)議棧內(nèi)部供其它協(xié)議模塊使用的接口。
HCI Transport Driver:依據(jù)不同的傳輸類型設計的驅(qū)動程序,比如UART、RS232、USB,屬于規(guī)范定義的標準類型;其他,如PCI、PCMCIA,屬于非規(guī)范定義的傳輸類型。
HCI Hardware Driver:針對具體硬件的設備驅(qū)動程序,負責硬件的初始化和接收和發(fā)送的處理,要和HCI Transport Driver接口。
*對HCI接口的移植方法:
XTNDAccess Blue SDK已經(jīng)支持UART,USB,PCMCIA類型的HCI接口。如果用戶使用UART或USB的HCI接口,可以直接使用SDK提供的HCI Transport Driver,如果用戶使用的UART或USB硬件不是XTNDAccess Blue SDK所支持的,用戶要依據(jù)HCI Transport Driver提供的API編寫自己硬件的HCI Hardware Driver。關于PCMCIA接口,SDK提供對3COM的藍牙PCMCIA接口的驅(qū)動作為參考。如果用戶使用自己的HCI接口,那么用戶要自己編寫 HCI Transport Driver和HCI Hardware Driver。
另外,SDK提供了基于TCP/IP的特殊的HCI類型INET。可以在TCI/IP上模擬其它的HCI接口,開發(fā)和調(diào)試基于SDK的程序。
SDK中所有的例子代碼,都支持UART、USB和INET三種HCI接口。以我的經(jīng)驗而言,這種INET接口對于開發(fā)應用非常有用。

3) 開發(fā)應用程序—Application API:
XTNDAccess Blue SDK中的ME、L2CAP、SDP、RFCOMM都提供了供上層應用開發(fā)使用的API。另外在RFCOMM上,Extended Systems開發(fā)出了Serial API(create/remove/open/close/read/write/ioctl),以供基于串行API開發(fā)程序的移植。
應用模型 (Profile)的實現(xiàn):不同的協(xié)議模塊的上層API的組合可以實現(xiàn)不同的Profile。XTNDAccess Blue SDK的設計支持GAP(Generic Access Profile)、CTP(Cordless Telephone Profile)、Intercom Profile、SDAP(Service Discovery Application Profile)、SPP(Serila Port Profile)、DUN(Dial-Up Networking Profiel)、LAN Access Profile、 Fax Profile,Handset Profile。
SDK中包含一些例子代碼,如L2CAP的應用程 序、TCS的測試程序、Serial API的應用程序、Cordless Telephony終端和網(wǎng)關的應用程序、Headset Profile的應用程序。這些例子都可在Windows下用VC++6.0直接編譯,以供編程參考。并且這些例子都支持UART、USB和INET三種 HCI接口。基于INET接口的應用開發(fā)可以屏蔽藍牙的無線通道,對于開發(fā)非常簡單。

4) OBEX Add-ins:
OBEX作為Add-ins,實際是特殊的上層應用。它利用SDK提供的Application API,基于RFCOMM實現(xiàn)了OBEX協(xié)議模塊。
同時,OBEX也提供了自己的Application API。并且利用這些API,實現(xiàn)了GOEP(Generic Object Exchange Profile)、FTP(File Translate Profle)、Objext Push Profile。
該 OBEX具有復用的功能,不只支持藍牙傳輸通道,同時也支持紅外和TCP/IP傳輸通道,可以實現(xiàn)藍牙協(xié)議(XTNDAccess Blue SDK)和紅外協(xié)議(XTNDAccess IrDA SDK—Extended Systems 公司的紅外協(xié)議棧)及其他通道的復用。如果用戶選擇的是其他通道(藍牙、紅外、TCP/IP以外),目前SDK不支持,用戶可以根據(jù)OBEX提供的API 開發(fā)出自己的傳輸通道支持驅(qū)動。
該部分也包含了一些例子代碼,如File Translate的應用、Qbeam的應用。同SDK中一樣,這些例子都可在Windows下用VC++6.0直接編譯。并且這些例子都支持UART、USB和INET三種HCI接口。

結論:
Extended Systems公司的XTNDAccess Blue SDK藍牙協(xié)議軟件設計合理,結構清晰,應用簡單,功能完全,是一種非常優(yōu)秀的藍牙應用開發(fā)平臺。用戶可以在此協(xié)議棧基礎上方便地開發(fā)出符合自己需要的藍牙應用。
同時也希望此文為自己開發(fā)藍牙協(xié)議軟件的讀者提供一定的思路,設計出自己的藍牙協(xié)議棧。進一步推動藍牙技術在國內(nèi)走向?qū)嵱谩?/p>

作者簡介:
 李冉,現(xiàn)任美國IMAG公司Bluetooth產(chǎn)品專員。
1996-1998在電子部六所進行電信軟件的開發(fā)工作;
1998-2000在美國IMAG公司負責Tornado/VxWorks實時操作系統(tǒng)在嵌入式領域(主要是通信和自動控制領域)中應用的技術咨詢工作;
2000-現(xiàn)在 在美國IMAG公司負責Extended Systems公司的藍牙協(xié)議產(chǎn)品的技術咨詢工作。

文章評論

您需要登錄才可以對文章進行評論。

沒有賬號?立即注冊

最新活動
意見反饋
取消