新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 嵌入式藍牙網關中藍牙驅動層研究與實現

        嵌入式藍牙網關中藍牙驅動層研究與實現

        作者: 時間:2008-05-06 來源:網絡 收藏
        摘要:目前,解決家庭和辦公環境下智能終端互連互通困難的主要途徑之一是技術,針對終端與互聯網之間的不便互連互通的問題,研制了,并對其中關鍵技術展開了討論。重點闡述了藍牙的硬件組成結構、軟件體系架構和藍牙層框架。同時,提出一種管理藍牙虛擬串口設備的方案。實驗證明,基于上述技術所研制的藍牙是有效的,魯棒的。
        關鍵字:嵌入式;藍牙網關;tty設備;虛擬串口

        Abstract: At present,the bluetooth technology is one of main ways which resolve the intelligent terminals interconnect and visit Internet expediently under the family and the work environment.Therefore ,we developed the Embedded Bluetooth Gateway ,and launched the discussion to key technologies .Firstly, the hardware composition structure and the software system construction of the Embedded Bluetooth Gateway are presented . Then, proposed an improvement program which based on the TTY(Teletype)driver model. Finally, test system of Embedded Bluetooth Gatway confirmed the bluetooth driver architecture which designed based on the TTY driver model is effective.

        Key words:Embedded;Bluetooth Gateway;tty Device;Virtual Serial Port

        0.引言

        隨著智能終端設備的不斷增多,用來連接各種筆記本、PDA、臺式電腦等設備的電纜布線會越來越復雜,它不僅影響了美觀性,還增加了安裝、維護的費用和難度,藍牙技術是解決上述問題的有效途徑之一[1],家庭或辦公室中的筆記本、PC機等只要安裝上藍牙適配器就成為具有了藍牙連接功能的數據終端(DT),彼此之間可以方便地互連互通。目前,具有藍牙功能的筆記本、PDA、手機等終端設備越來越多,而藍牙終端設備與互聯網之間的互連互通則成了制約其應用的一大瓶頸[2]。藍牙網關正是為這些藍牙終端設備(包括藍牙PDA、藍牙筆記本電腦、藍牙PC等)創建一個到本地網絡的無線連接通訊鏈路,使之能夠訪問本地網絡及Internet。目前,藍牙網關大多是基于PC機上的windows或linux平臺開發的,體積、成本、易用性等因素在一定程度上制約了藍牙網關的推廣[3]。考慮以上各因素,筆者研制了一種嵌入式藍牙網關,與基于PC的藍牙網關相比在成本、易用性、體積等方面都具有一定的優勢。本文主要針對嵌入式藍牙網關中藍牙硬件模塊層框架設計及具體給予詳細闡述,并提出一種管理藍牙虛擬串口設備的方案,在此基礎上了一個以MIPS內核嵌入式微處理器Au1000為硬件平臺的嵌入式藍牙網關[4]

        1.嵌入式藍牙網關的硬件結構

        藍牙是一種開放性的、短距離無線數據和語音通信的全球規范。藍牙規范的動機是通過合理地選擇鏈路的傳輸速度、通訊距離和傳輸功率來實現一種成本低、效率高、單芯片方式的通信收發設備,而嵌入式藍牙網關正是一種藍牙應用規范中LAP(局域網接入應用模型)的典型應用[5] [6]

        一般來說,嵌入式藍牙網關硬件主要由微處理器、內嵌式藍牙硬件模塊及其他接口電路、存儲器件等組成。考慮到系統的性價比等諸多因素,在本文中,筆者采用AMD的MIPS內核的嵌入式微處理器Au1000作為微處理器平臺,同時在處理器豐富資源的基礎上,還進行了相關的配置和擴展,平臺配置了Intel 16Mbyte的E28F128J3 FLASH芯片和Hynix 32Mbyte 的HY57V561620 SDRAM芯片。通過SMSC公司的LAN91C11 10/100M型以太網控制芯片擴展了一個網絡接口。藍牙模塊采用CSR BlueCore02芯片的增強型藍牙模塊,兼容藍牙1.2規范,最大發射距離達到100米,最大數據傳輸率可達到1.384Mbps,支持低功耗工作模式/高速工作模式,支持安全認證、數據加密,該模塊通過UART口與Au1000微處理器通信。

        2.嵌入式藍牙網關的軟件體系架構

        在嵌入式系統的開發過程中,嵌入式操作系統平臺的選擇是關鍵點之一。目前,常見的嵌入式操作系統有Vxworks、Win CE、pPOS、palm OS、Nucleus、QNX,嵌入式linux等,針對不同的應用需求,它們各有特點。在嵌入式藍牙網關的開發中,我們選用MIZI公司的嵌入式Linux操作系統來構建嵌入式藍牙網關的軟件平臺,其原因主要有三:一方面,它是一種開放源碼的操作系統,并且MIZI-Linux已經成為嵌入式領域很受歡迎的操作系統之一[7];另一方面,Linux下的軟件幾乎都遵循GPL版權協議,可以利用Linux操作系統上的mgetty+AutoPPP快速搭建嵌入式藍牙網關端的撥號服務器應用程序,從而不必自己開發撥號服務器應用程序;據此,筆者設計的嵌入式藍牙網關中的軟件體系架構如圖1所示。

        圖1 嵌入式藍牙網關軟件的體系架構圖

        本文主要是對該軟件體系架構中的藍牙層框架及實現給予闡述,并提出一種管理藍牙虛擬串口設備的方案,在此基礎上實現了一個以Au1000為硬件平臺的嵌入式藍牙網關。

        3.藍牙硬件模塊驅動層框架的設計與實現

        在開發嵌入式藍牙網關過程中,為了縮短開發周期,減少開發成本,筆者利用了Linux下現有的撥號服務器程序來實現與藍牙設備的互連,為此,筆者實現了藍牙虛擬串口設備ttyBT。對于用戶使用來說,該虛擬串口和系統真實串口tty沒有任何區別。同時,為了更好地管理虛擬串口以及實現與藍牙協議模塊進行交互,筆者對于以往的tty驅動模型進行了改進,即在藍牙協議模塊和ttyBT設備之間設計了一個ttyBTmgr模塊。下面將詳細描述藍牙驅動硬件模塊的驅動層框架和驅動層框架中的各函數的實現過程。

        3.1 藍牙硬件模塊驅動層框架

        tty設備是一種字符設備, 在MIZI-Linux操作系統中,串行通信端口設備被實現為tty設備,即ttySx [8]。筆者在設計嵌入式藍牙網關時,將其中的藍牙硬件模塊設計成一種tty類型設備,即通過藍牙虛擬串口設備ttyBT實現與MIZI-Linux操作系統的互連。遵循tty設備驅動規范,藍牙虛擬串口設備ttyBT驅動層框架如圖2所示:

        圖 2 藍牙硬件模塊驅動層框架

        從圖2可以看出, ttyBT設備驅動程序由三部分構成,第一部分是tty核心,負責與嵌入式Linux操作系的接口,這對所有的tty設備都是一樣的;第二部分是ttyBT鏈路規程,它的作用是使用特殊的方法,把從用戶或硬件那里傳遞來的數據格式化,這種格式化通常使用一些協議來完成轉化,比如PPP協議或者藍牙協議;第三部分是ttyBT驅動程序,完成藍牙硬件模塊輸入/輸出隊列的讀寫操作。

        整個ttyBT設備驅動程序的數據流向為:tty核心從用戶那里得到將要發往藍牙硬件模塊的數據,然后把數據發送給ttyBT鏈路規程,該鏈路規程把數據在傳遞給ttyBT驅動程序;ttyBT驅動程序對數據進行格式化后,然后發送給藍牙硬件模塊;從藍牙硬件模塊那里接收到的數據將回溯至ttyBT驅動程序,然后流入ttyBT鏈路規程,接著是流入tty核心,最后,用戶從tty核心那里得到數據。此外,tty設備可以很方便地和PPP模塊鏈接起來,是因為能通過將tty設備的行為注冊為PPP來實現。這個特性對于快速構建嵌入式藍牙網關的應用程序來說是非常必要的。這也是筆者將這種設備實現為一種tty設備,即ttyBT的原因之一。

        3.2藍牙硬件模塊驅動程序實現

        如圖3所示,藍牙硬件模塊驅動層主要包括tty核心層、ttyBT鏈路規程層和ttyBT驅動程序層構成,下面分別將其實現過程介紹如下。

        (1)tty核心層 其負責與嵌入式Linux操作系的接口,實現的關鍵是如何定義一個tty_driver結構,該結構用來向tty核心注冊一個ttyBT驅動程序。藍牙驅動層框架中的tty核心層使用終端設備數據結構tty_struct保存ttyBT端口的狀態,同時賦予鏈路規程識別并向串行接口發送和接收4種藍牙HCI數據包: HCI Command Packet,HCI Event Packet,HCI ACL Data Packet和HCI SCO Data Packet,同時完成向高層協議提供標準發送接收過程[9]

        (2)藍牙硬件模塊鏈路規程 鏈路規程對于TTY驅動程序來說是不透明的,驅動程序不能直接與鏈路規程通信,在Linux系統中使用終端鏈路規程把具體的終端設備和輸入/輸出隊列相關聯,使得操作系統對所有的終端都視為標準的流操作[10]

        (3)ttyBT設備驅動函數 實現把藍牙硬件模塊接收到的字符遞送給ttyBT鏈路規程的輸入隊列和輸出隊列,發送到藍牙硬件的同時完成對輸入隊列和輸出隊列的監測功能以及硬件中斷過程。

        4.藍牙虛擬串口設備的管理

        在實現藍牙驅動層框架的過程中,為了便于管理ttyBT設備驅動層中的虛擬串口設備并使之和ttyBT鏈路規程層中的藍牙協議模塊進行交互,筆者提出了一種基于tty驅動模型的改進方案,即ttyBT設備不是和藍牙協議模塊直接通信的,而是在藍牙協議模塊和ttyBT設備之間增加了一個ttyBTmgr的字符設備。這個字符設備在藍牙協議模塊啟動時,由協議模塊打開。ttyBTmgr和藍牙協議模塊、ttyBT設備的消息通信機制如圖3所示。

        圖3 ttyBTmgr的消息通信機制

        (1)ttyBT設備發送消息 當一個ttyBT設備被打開、關閉、寫數據等的時候,它要向藍牙協議模塊發送消息。在筆者的設計中,ttyBT設備不是和藍牙協議模塊直接通信的,而是通過ttyBTmgr設備和藍牙協議模塊通信的。在ttyBT設備的數據結構中,維護了一個消息鏈表,所有的ttyBT設備要向協議模塊發送的消息都要先插入到這個消息鏈表中。

        (2)ttyBT設備接收消息 當藍牙協議模塊給ttyBTmgr設備發送了消息,則ttyBTmgr設備需要將這些消息轉發給ttyBT設備。由于ttyBTmgr設備和ttyBT設備的驅動程序都是編譯成內核模塊,運行在內核空間,它們可以共享那些全局變量,這樣ttyBTmgr直接修改ttyBT的全局變量就實現了消息的轉發。

        (3)藍牙協議模塊發送消息 如果藍牙協議模塊要向虛擬串口設備發消息,它使用ioctl( )系統調用發送消息。這個ioctl命令是自定義的,其類型是W32IF_FROM_RFCOMM,在這里面有三種消息:DRV2UI_OPEN_RESULT_IND 指示串口設備打開結果

        DRV2UI_SEND_DATA_COMPLETE 指示數據發送完畢

        DRV2UI_REMOTE_DATA_IND 指示收到遠程數據

        (4)藍牙協議模塊接收消息 在藍牙協議模塊中,專門有一個線程來接收來自驅動程序的消息。前面講過,這些消息不是直接來自ttyBT設備而是來自ttyBTmgr。協議模塊用select( )系統調用來等待消息,如果當前消息隊列里有消息,或一旦有消息被添加到消息隊列,則select( )系統調用會成功返回。然后協議模塊調用read( )系統調用將消息從ttyBTmgr設備中讀出,然后根據消息類型進行相應的處理。

        5.測試實驗

        為了驗證本文的藍牙驅動層框架是有效的,魯棒的,筆者搭建了嵌入式藍牙網關的測試系統,由筆者研發出的嵌入式藍牙網關和藍牙數據終端組成。藍牙數據終端是由PC機、USB藍牙適配器、BlueSoleil組成的藍牙PC。依據本文提出的藍牙驅動層框架所編寫的嵌入式藍牙網關端的藍牙驅動程序,實現了藍牙硬件模塊和藍牙主機(Au1000硬件平臺)之間HCI傳送功能,使該嵌入式藍牙網關實現了局域網接入訪問服務。試驗結果表明,藍牙PC能成功連接到嵌入式藍牙網關,并能搜索到嵌入式藍牙網關提供的藍牙網絡接入服務,從而使藍牙PC能通過該嵌入式藍牙網關訪問Internet和局域網。

        6.結束語

        本文針對基于MIZI-linux操作系統的嵌入式藍牙網關中藍牙驅動層框架設計給予詳細闡述,并描述了驅動層框架的函數實現方法,同時,對以往tty驅動模型提出了相應的改進措施,達到了便于管理藍牙虛擬串口設備以及與藍牙協議模塊進行交互的目的。實驗證明,基于上述技術所研制的嵌入式藍牙網關是有效的,魯棒的。

        7.參考文獻

        [1] 李遠偉,姜雪輝等.應用藍牙技術組建家庭無線局域網[J].中國科技信息,2006-05:109.

        [2] 馮慶勝,李紅等.基于藍牙技術組建無線家庭網絡[J].微計算機信息,2006-08:59.

        [3] 袁宇恒,葉芝慧等.基于藍牙技術的家庭網絡控制子網設計與研制[J].東大學報,2006-01.

        [4] NicolasRouhana,Eric Horlait.Bluetooth Web Internet Gateway[J]. Proceedings of Seventh International Symposium on Computers and Communications, July 2002:679-684.

        [5] 馬建倉,羅亞軍等.藍牙核心技術及應用[M].北京:科學出版社,2003:99-103.

        [6] David Johnson.Hardware and Software Implications of Creating Bluetooth Scatternet Devices[J].AFRICON Conference in Africa,Volume 1,2004:211- 215.

        [7] 鄭靈翔.嵌入式系統設計與應用開發[M].北京:北京航空航天大學出版社,2006:78-82.

        [8] Jonatban Corbet, Alessandro Rubini.Linux Device Drivers[M].南京:東南大學出版社,2005:538-566.

        [9] David Kammert等著,李靜等譯.藍牙應用開發指南.北京:科學出版社,2003:130-159.

        [10] Robert Love.Linux Kernel Development[M].2nd Edition.Novell Press,2005.

        基金編號:江蘇省高校自然科學計劃項目 06KJD520037

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        linux相關文章:linux教程


        藍牙技術相關文章:藍牙技術原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 绿春县| 迁西县| 遂川县| 中江县| 高青县| 怀安县| 仪陇县| 巨鹿县| 铜梁县| 都兰县| 甘泉县| 平谷区| 大兴区| 博客| 靖远县| 阿鲁科尔沁旗| 秦安县| 红河县| 临颍县| 郎溪县| 平乡县| 正宁县| 仁寿县| 泉州市| 静海县| 宝兴县| 阜南县| 宁夏| 台南县| 浦北县| 牡丹江市| 府谷县| 泗阳县| 通山县| 墨玉县| 河津市| 巴林左旗| 寿光市| 鱼台县| 色达县| 元阳县|