一. 引言
藍牙技術將計算和通訊很好地結合起來,根據網絡的概念提供點對點和點對多點的無線鏈接,使人們能隨時隨地地進行數據信息的交換與傳輸。隨著各種藍牙終端設備的普及,為它們提供局域網訪問的嵌入式局域網接入點會有廣泛的應用場合。使用籃牙無線通信的直接網絡接入要優于同等條件下的有線接入,隨著各種藍牙終端設備的普及,為它們提供局域網訪問的嵌入式接入點會有廣泛的應用場合。
本文所介紹的局域網接入點 LAP(LAN Access Point)解決了藍牙設備對有線網絡的訪問問題,它不同于目前基于Windows開發平臺的藍牙網關。如圖一所示,本嵌入式局域網接入點類似于一個小小插件,直接插在現有的有線網絡拓撲結構里,只是在最后一步才是無線的,這樣就有效地利用了已有網絡資源,需要更少的配制和干預,也更接近人們的使用習慣,讓各種藍牙終端設備便利的接入現有的局域網,給藍牙技術的推廣應用帶來極大的方便。藍牙局域網接入點實現了藍牙協議子集中的LAN Access Profile,對于已經實現TCP/IP協議的藍牙設備,藍牙局域網接入點可以運行PPP 協議與該類藍牙設備實現通訊,從而達到將該類藍牙設備接入到Ethernet及Internet的目的。
二. 系統硬件結構
本系統的硬件主要由兩大部分組成:藍牙模塊和嵌入式微處理器,另外還有電源、鍵盤、顯示等輔助電路。圖二給出了籃牙局域網接入點LAP (LAN Access Point)的硬件框圖。藍牙模塊采用愛立信的 BOM4E,它將無線射頻、基帶、鏈路控制器和管理器封裝在一起。在模塊中,無線層和鏈路控制器通過硬件來實現,而鏈路管理器在固件中實現,將該模塊附著在一個主機設備上后,該設備就具有了藍牙無線通信的功能。藍牙模塊的射頻單元功率也符合FCC關于ISM頻段的要求,采用時分雙工(TDD)方案來實現全雙工傳輸。藍牙模塊通過UART接口同微處理器通訊,它提供了標準的主機控制器接口(Host Control Interface), 允許包括應用在內的高層協議訪問基帶層、鏈路管理層以及其他的硬件寄存器,主機發射和接受數據時,無論是同步業務還是異步業務都是通過HCI來傳送。當接收到來自微處理器的HCI命令后,模塊可以進入某一種給定的操作模式,比如,完成一種鑒權操作,或者執行一個設備的尋呼狀態。反之,模塊可以通過HCI事件向高層協議傳送一個設備請求操作結果等。
微處理器是本系統的核心部分,負責藍牙中間層協議的處理、網絡協議的實現以及整個系統的控制功能。IP2022是一款高性能的微處理器,它有兩個全雙工串化解串接口(Ser/Des),能方便地同藍牙模塊以及網絡接口相連。它包含64K FLASH數據存儲器,20K SRAM程序存儲器。內置三個定時器和一個硬件看門狗。微處理器的網絡處理功能通過以太網接口RJ45直接將藍牙無線網絡接入到局域網絡(LAN)中。它能進行數據的上傳和下行,既能將無線接收到的數據打包為標準的TCP/IP包上傳到局域網,也能接受來自局域網上的數據。用戶可以使用預創建軟件模塊和配置工具,對IP2022進行編程和重編程,為各種設備間通信和人機通信創建真正的單片式網絡應用方案。在模塊內部實現了物理層、鏈路層、網絡層協議及部分應用層協議,在網絡傳輸層,可以進行TCP、UDP傳輸,在應用層,有FTP文件傳輸等服務。
三. 軟件協議棧
藍牙的核心部分是協議棧,藍牙協議棧允許多個設備進行相互的定位、連接和交換數據,并能實現互操作和交互式的應用。藍牙的協議棧分別運行在藍牙模塊及微處理器上面,是管理系統資源、控制硬件、通過HCI對來自主機的命令進行處理、完成藍牙功能的嵌入式軟件。由于本系統的藍牙模塊提供了基帶的功能和實現鏈路管理器協議,主機是通過HCI層來控制藍牙的,所以系統要做的工作就是要給主機提供HCI的接口,并在HCI接口上開發中間層協議以及為應用提供應用接口。在藍牙的協議中,藍牙主機軟件實現L2CAP功能和上層HCI的驅動程序;PPP、IP、TCP/UDP等協議歸屬于TCP/IP協議,已經相當成熟,并且被絕大多數操作系統實現,在本系統中由微處理器IP2022來完成。設計協議和協議棧的主要原則是盡可能利用現有的各種高層協議,保證現有協議與藍牙技術的融合以及各種應用之間的互通性,充分利用兼容藍牙技術規范的軟硬件系統。協議棧(如圖三)的各種單元在邏輯上可以被分為三組:底層協議組、中間件協議組、應用協議組。
1) 底層協議組:這個協議組包含的協議主要用于使籃牙設備能確認彼此的相互位置,并且能夠創建、配置和管理物理以及邏輯的鏈路,以便使高層協議和上層應用經這些鏈路利用傳輸協議來傳輸數據。這個協議組包括無線、基帶、鏈路控制器和管理器協議。本系統采用的藍牙模塊已經固化有藍牙的底層協議,并且提供了標準的訪問接口(HCI),不再這里討論。
2) 中間協議組:這是本系統需要開發的核心部分,包括有邏輯鏈路控制及適配協議(L2CAP)、服務搜索協議(SDP)、基于TS07.10的串口仿真協議(RFCOMM)。
3) 應用協議組:本系統實現了籃牙的協議子集LAN Access Point(LAP),這種應用模式在藍牙連接上使用IETF的點到點協議(PPP),PPP是一種廣泛使用的Internet標準,為IP通訊提供了主機配置和準備,PPP是為在同等單元之間傳輸數據包這樣的簡單的鏈路而設計的。這種鏈路提供全雙工操作,并按照順序傳遞數據包。PPP為基于各種主機、網橋和路由器的簡單連接提供一種共通的解決方案。使用PPP是LAP的關鍵,PPP適用于數據接入點和數據終端間的連接。IP網絡業務能夠在PPP鏈路上傳輸,PPP在設計時已經考慮到了要在串行連接上使用,因此在LAP中PPP可以運行在串口仿真協議RFCOMM之上。UDP、TCP&IP是由IETF定義,主要用于Internet上的通訊。
四. 協議棧的實現
籃牙協議棧的設計主要包括:結構設計,重要數據結構的設計,任務的管理,內存的管理等等。
1) 結構設計:系統采用單進程的結構,由主程序循環的調用幾個任務。當一個任務執行完之后,才會進入對下一個任務的執行。任務的執行不影響中斷的產生和中斷服務程序的調用,可以保證系統對外部事件的響應,構成典型地前后臺系統。
2) 重要數據結構的確定:根據對藍牙協議的分析可知,協議的中心任務是建立和管理幾個藍牙設備之間的連接,建立通訊鏈路,并借此傳輸數據。因此對這種連接的建立,維護和參數管理是軟件最基本的功能。根據藍牙規范中連接的屬性和各種協議數據包的定義,可以確定對應的數據結構。例如可以用結構l2cap_con來描述邏輯鏈路控制和適配協議層的對等層間的連接通道。
struct l2cap_con {
BD_ADDR remote_bd; /* 6 bytes */
unsigned short local_cid;
unsigned short remote_cid;
int current_state;
unsigned short psm;
unsigned short remote_mtu;
unsigned short flush_timeout;
…
};
其中BD_ADDR是一個6字節的結構,記錄連接中另一方的藍牙地址,local_cid是邏輯信道本地端設備信道標示符,remote_con是遠端信道標示符,current_state表示目前的連接狀態,psm是協議/服務復用段,remote_mtu是遠端最大傳輸單位等等。還有其他一些變量用來說明這個連接的一些屬性和狀態。通過這個數據結構,可以描述在L2CAP 對等層間的數據通道。除了結構l2cap_con之外,還有許多用來描述各層協議數據包屬性的結構也都是系統的核心結構,這里不再詳細列出。
3) 任務管理:針對協議任務和事件數量多,并且之間相關性大的特點,使用有限狀態機的方法來處理,并采用過程驅動方案來實現有限狀態機,為每個輸入狀態啟動一個過程。當某一個事件發生時,系統利用當前狀態來選取一個適當的動作,該動作處理輸入事件并更新當前狀態變量值。如圖四所示是L2CAP的面向連接信道的狀態機,顯示了由哪一個事件導致狀態轉換,以及在狀態轉換時采取哪一個動作。信道的操作共有七個狀態:關閉、高層連接請求、L2CAP層連接請求、配置、打開、高層斷開連接請求、L2CAP層斷開連接請求。
4) 內存管理:內存管理通常是操作系統的核心任務之一,由于本系統沒有使用操作系統,所以這部分任務是系統必需而重要的任務。輸入的數據包必須被保存在內存中,并將其傳遞給適當的任務作進一步的處理。同時,應用程序產生的輸出數據也必須以數據包的形式存儲在內存中,并將其傳遞給硬件設備傳送出去。設計要做到快速分配存儲空間,并且避免數據包在各層協議之間移動時的數據復制。針對本系統處理的實際情況:藍牙協議數據報只有一些固定的大小的包類型,因此采用系統分配大小固定的緩沖區的方案。這樣作可以杜絕內存碎片。需要緩沖區的時候,系統調用allot_bt_buffer函數。只要緩沖區分配完成,需要保存的僅僅是指向緩沖區的指針,所以歸還緩沖區到空閑緩沖區列表的時候,系統調用unallot_bt_buffer,將被釋放的緩沖區的指針交還給它。采用這種方法,協議軟件只需傳遞指向該緩沖區的指針,處理過程統一,并且避免了處理過程中數據的移動。
從一般軟件設計分類的角度來看,設備管理和系統資源管理是操作系統的任務。在綜合考慮系統簡單性和成本等因素之后,本系統中沒有使用獨立的實時操作系統,而是由嵌入式軟件完成部分應該由操作系統完成的功能。
五. 結束語
本嵌入式局域網訪問點已可以應用于對機器人的遠程訪問上。如果將現有接入點進行適當改動和擴展,就能實現其他功能,例如給它擴展上一個語音解碼芯片后很容易擴展到語言信號的傳輸。
評論
查看更多