【摘要】藍(lán)牙技術(shù)是一種用于個人區(qū)域網(wǎng)絡(luò)的低成本、低功率的無線通信技術(shù),主要包括基帶芯片和協(xié)議棧兩個部分。本文分析了藍(lán)牙協(xié)議棧的功能和結(jié)構(gòu),提出了實現(xiàn)該嵌入式協(xié)議棧的軟件結(jié)構(gòu)。并對各個模塊進(jìn)行了分析。
【關(guān)鍵詞】藍(lán)牙技術(shù);協(xié)議棧;嵌入式軟件
引言
藍(lán)牙技術(shù)是一種無線數(shù)據(jù)與語音通信的開放性全球規(guī)范,它以低成本的近距離無線連接為基礎(chǔ),為固定與移動設(shè)備通信環(huán)境建立一個特別連接。藍(lán)牙技術(shù)的實質(zhì)內(nèi)容是要建立通用的射頻接口及其控制軟件的公開標(biāo)準(zhǔn),使通信和計算機(jī)進(jìn)一步結(jié)合,使不同廠家生產(chǎn)的移動電話、便攜式計算機(jī)以及各種便攜式通信設(shè)備的主機(jī)之間在沒有電線或電纜相互連接的情況下。也能在近距離范圍內(nèi)具有互用、相互操作的性能.實現(xiàn)無縫的資源共享。
1.藍(lán)牙協(xié)議棧結(jié)構(gòu)
藍(lán)牙技術(shù)規(guī)范在使用通用無線傳輸模塊和數(shù)據(jù)通信協(xié)議的基礎(chǔ)上,開發(fā)交互式服務(wù)和應(yīng)用。藍(lán)牙技術(shù)規(guī)范的目的是使符合該規(guī)范的各種應(yīng)用之間能夠互通,本地設(shè)備與遠(yuǎn)端設(shè)備需要使用相同的協(xié)議,不同的應(yīng)用需要不同的協(xié)議,但是,所有的應(yīng)用都使用藍(lán)牙技術(shù)規(guī)范中的數(shù)據(jù)鏈路層和物理層協(xié)議。
完整的藍(lán)牙協(xié)議包括藍(lán)牙專利協(xié)議LMP(Link Manager Protoco1)、L2CAP(Logic Link Control and A—daptive Protoco1)和非專利協(xié)議。例如對象交換協(xié)議(OBEX)和用戶數(shù)據(jù)報文協(xié)議(UDP)。設(shè)計協(xié)議和協(xié)議棧的主要原則是盡可能利用現(xiàn)有的各種高層協(xié)議,保證現(xiàn)有協(xié)議與藍(lán)牙技術(shù)的融合以及各種應(yīng)用之間的互通性,充分利用兼容藍(lán)牙技術(shù)規(guī)范的軟硬件系統(tǒng)。
2.藍(lán)牙協(xié)議棧開發(fā)平臺
本系統(tǒng)是在一塊帶有CPU的Nios開發(fā)板上進(jìn)行的,系統(tǒng)的硬件是基于FPGA開發(fā)的藍(lán)牙芯片,用來完成藍(lán)牙基帶中需要的復(fù)雜運(yùn)算和實現(xiàn)射頻功能,并以函數(shù)調(diào)用的形式提供對這些功能的訪問。
3.藍(lán)牙協(xié)議棧的功能分析
藍(lán)牙的協(xié)議棧是運(yùn)行在CPU核上面、管理系統(tǒng)資源、控制硬件、對通過HCI(Host Controller Interface)來自主機(jī)的命令進(jìn)行處理、完成藍(lán)牙功能的嵌入式軟件。由于本系統(tǒng)提供基帶的功能和實現(xiàn)鏈路管理器協(xié)議,主機(jī)是通過HCI層來控制藍(lán)牙的,L2CAP屬于上層的協(xié)議。所以系統(tǒng)要做的工作就是給主機(jī)提供HCI的接口,并且處理來自另一個藍(lán)牙設(shè)備的鏈路管理器協(xié)議的PDU(Prtocol Data Unit)包。在藍(lán)牙協(xié)議中,藍(lán)牙主機(jī)軟件實現(xiàn)了L2CAP功能和上層HCI的驅(qū)動程序;PPP、IP、TCP/UDP等協(xié)議歸屬于TCP/IP協(xié)議。已經(jīng)相當(dāng)成熟,并且被絕大多數(shù)操作系統(tǒng)實現(xiàn),不在嵌入式協(xié)議棧的處理范圍之內(nèi)。
從一般軟件設(shè)計分類的角度來看,設(shè)備管理和系統(tǒng)資源管理是操作系統(tǒng)的任務(wù)。在綜合考慮系統(tǒng)簡單性和成本等因素之后,本系統(tǒng)中沒有使用獨(dú)立的實時操作系統(tǒng),而是由嵌入式軟件完成部分應(yīng)該由操作系統(tǒng)完成的功能。
4.藍(lán)牙協(xié)議??傮w設(shè)計
總體設(shè)計的內(nèi)容包括:結(jié)構(gòu)設(shè)計,功能設(shè)計,系統(tǒng)任務(wù)之間的通信和重要數(shù)據(jù)結(jié)構(gòu)的確定等。
4.1 結(jié)構(gòu)設(shè)計
系統(tǒng)采用單進(jìn)程的結(jié)構(gòu)。由主程序循環(huán)調(diào)用幾個任務(wù)。當(dāng)一個任務(wù)執(zhí)行完之后。才會進(jìn)入執(zhí)行下一個任務(wù)。在任務(wù)執(zhí)行期間,不屏蔽外部事件的中斷請求。因而外部事件可以被實時響應(yīng)。整個系統(tǒng)構(gòu)成典型的前后臺系統(tǒng)。這些任務(wù)包括:對HCI命令和PDU的處理,對LC(Link controler)的控制和管理。對Timer的管理和數(shù)據(jù)包的處理。
4.1.1 HCI和LC數(shù)據(jù)處理模塊
HCI和LC數(shù)據(jù)處理模塊主要完成數(shù)據(jù)包的分包和重組。HCI是UART接口。這里的數(shù)據(jù)包是L2CAP層傳送的上層應(yīng)用程序的數(shù)據(jù)包;LC層可以傳送的數(shù)據(jù)包是藍(lán)牙協(xié)議規(guī)定的包類型。并且與建立連接時兩個設(shè)備的協(xié)商結(jié)果有關(guān),所以。來自HCI的數(shù)據(jù)包可. 能與LC層可以傳送的數(shù)據(jù)包的大小不同。這就需要在發(fā)送來自HCI的數(shù)據(jù)包時。根據(jù)LC層可以使用的數(shù)據(jù)包的大小來重新組合和分包。以適合LC層的需要;當(dāng)收到LC層的固定類型的數(shù)據(jù)包時。還要根據(jù)HCI層規(guī)定來組合,以適合HCI層的傳送需要。
4.1.2 內(nèi)存管理模塊
內(nèi)存管理通常是操作系統(tǒng)的核心任務(wù)之一。由于本系統(tǒng)沒有使用實時操作系統(tǒng)。所以。這部分任務(wù)是系統(tǒng)必需而重要的任務(wù)。輸入的數(shù)據(jù)包必須保存在內(nèi)存中。由適當(dāng)?shù)娜蝿?wù)做進(jìn)一步處理。
同時,應(yīng)用程序產(chǎn)生的輸出數(shù)據(jù)也必須以數(shù)據(jù)包的形式存儲在內(nèi)存中。由硬件設(shè)備傳送出去。一般來說。協(xié)議軟件的有效性最終取決于如何管
理保存這些數(shù)據(jù)包的存儲器。一個良好的設(shè)計要做到快速分配存儲空間。并且避免數(shù)據(jù)包在各層協(xié)議之間移動時的數(shù)據(jù)復(fù)制。常用的分配方案有:緩沖區(qū)方案、鏈表方案、時鐘管理模塊、事件處理模塊。
4.2 任務(wù)之間的通信
任務(wù)之間的通信是協(xié)議棧軟件的重要部分,對協(xié)議的性能有很大的影響。對于操作系統(tǒng)來說,任務(wù)之間的通信通常采用的方法有信號量、郵箱、消息隊列、管道等。在我們的實現(xiàn)中,借鑒了管道的思想,亦即給所有需要通信的任務(wù)之間建立管道。為所有需要通信的任務(wù)建立管道,需要發(fā)送消息的任務(wù)把消息的內(nèi)容放入雙方已協(xié)商的管道中,然后由需要消息的任務(wù)從中取出。對管道中消息的存取和檢查都由一組統(tǒng)一的函數(shù)完成。
4.3 重要數(shù)據(jù)結(jié)構(gòu)的確定
從對藍(lán)牙協(xié)議的分析可知,鏈路管理器的核心任務(wù)是管理和維護(hù)由數(shù)個藍(lán)牙設(shè)備組成的Piconet。Pi-conet的基本組成單元是兩個藍(lán)牙設(shè)備之間的連接,最基本的Piconet由兩個藍(lán)牙設(shè)備組成。因此,由兩個藍(lán)牙設(shè)備組成的一個連接是系統(tǒng)最基本的組成部分,對這種連接的建立、維護(hù)和參數(shù)管理是軟件最基本的功能。對這種連接的操作就是嵌入式軟件實現(xiàn)的核心任務(wù)。根據(jù)藍(lán)牙規(guī)范和連接的屬性,確定了描述這個對象的參數(shù),用結(jié)構(gòu)TACLConnection來描述這個對象。
5.試驗結(jié)果分析
本系統(tǒng)利用Nios開發(fā)板,對所設(shè)計的軟件和藍(lán)牙基帶芯片進(jìn)行了測試,證明軟件可以完成藍(lán)牙基帶的基本功能。藍(lán)牙嵌入式通信協(xié)議棧的開發(fā)工作尚未全部結(jié)束,目前完成的是在兩個藍(lán)牙設(shè)備之間建立連接的工作。測試結(jié)果表明,在這個協(xié)議棧的開發(fā)工作中采取的一系列技術(shù)手段是基本成功的。這使得我們可以進(jìn)一步開發(fā)更加完善的協(xié)議棧。
參考文獻(xiàn)
[1]王璞,張臻鑒,王玉空.面向?qū)崟r嵌入式機(jī)載軟件的測試技術(shù)研究[M].航空計算技術(shù),1997,27(4):4-11.
[2]金純,許光辰,孫容.藍(lán)牙技術(shù)[M].北京:電子工業(yè)出版社,2001.
[3]李偉華,康繼昌.實時軟件測試用例構(gòu)造的充要策略研究[J].航空計算技術(shù),1996,26(2):20-25.
作者簡介:李曼(1980—),女,陜西西安人,工學(xué)碩士,西安外事學(xué)院講師,研究方向:機(jī)械工程。