發(fā)布時間:2010-10-21 閱讀量:1482 來源: 發(fā)布人:
摘要:本文以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ī)范文檔 為<
其中<
另外,<
?
???圖一:標準藍牙軟件協(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??梢栽赥CI/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接口?;贗NET接口的應用開發(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é)議?;A上方便地開發(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)品的技術咨詢工作。
兩腳晶振必為無源晶振,不管是插件晶振或貼片晶振
隨著科技的發(fā)展,尤其是移動設備、可穿戴技術以及物聯(lián)網(wǎng)(IoT)領域的崛起,智能化產(chǎn)品越來越趨向于便攜式,因此對晶振的小型化的需求也逐漸增加。
24MHz無源晶振具有多種重要作用
汽車行業(yè)正處在電動化和智能化的轉(zhuǎn)型過程中,而半導體企業(yè)站在這一變革的最前沿
市場對工業(yè)應用的需求與日俱增,數(shù)據(jù)采集系統(tǒng)是其中的關鍵設備。它們通常用于檢測溫度、流量、液位、壓力和其他物理量,隨后將這些物理量對應的模擬信號轉(zhuǎn)換為高分辨率的數(shù)字信息,再由軟件做進一步處理。此類系統(tǒng)對精度和速度的要求越來越高,這些數(shù)據(jù)采集系統(tǒng)由放大器電路和模數(shù)轉(zhuǎn)換器(ADC)組成,其性能對系統(tǒng)具有決定性的影響。