色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 藍牙局域網(wǎng)接入點的嵌入式實現(xiàn)

          藍牙局域網(wǎng)接入點的嵌入式實現(xiàn)

          作者: 時間:2011-07-24 來源:網(wǎng)絡 收藏
          四. 協(xié)議棧的

          本文引用地址:http://cafeforensic.com/article/150436.htm

            籃牙協(xié)議棧的設計主要包括:結構設計,重要數(shù)據(jù)結構的設計,任務的管理,內(nèi)存的管理等等。

            1) 結構設計:系統(tǒng)采用單進程的結構,由主程序循環(huán)的調(diào)用幾個任務。當一個任務執(zhí)行完之后,才會進入對下一個任務的執(zhí)行。任務的執(zhí)行不影響中斷的產(chǎn)生和中斷服務程序的調(diào)用,可以保證系統(tǒng)對外部事件的響應,構成典型地前后臺系統(tǒng)。

            2) 重要數(shù)據(jù)結構的確定:根據(jù)對協(xié)議的分析可知,協(xié)議的中心任務是建立和管理幾個設備之間的連接,建立通訊鏈路,并借此傳輸數(shù)據(jù)。因此對這種連接的建立,維護和參數(shù)管理是軟件最基本的功能。根據(jù)規(guī)范中連接的屬性和各種協(xié)議數(shù)據(jù)包的定義,可以確定對應的數(shù)據(jù)結構。例如可以用結構l2cap_con來描述邏輯鏈路控制和適配協(xié)議層的對等層間的連接通道。

            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字節(jié)的結構,記錄連接中另一方的藍牙地址,local_cid是邏輯信道本地端設備信道標示符,remote_con是遠端信道標示符,current_state表示目前的連接狀態(tài),psm是協(xié)議/服務復用段,remote_mtu是遠端最大傳輸單位等等。還有其他一些變量用來說明這個連接的一些屬性和狀態(tài)。通過這個數(shù)據(jù)結構,可以描述在L2CAP 對等層間的數(shù)據(jù)通道。除了結構l2cap_con之外,還有許多用來描述各層協(xié)議數(shù)據(jù)包屬性的結構也都是系統(tǒng)的核心結構,這里不再詳細列出。

            3) 任務管理:針對協(xié)議任務和事件數(shù)量多,并且之間相關性大的特點,使用有限狀態(tài)機的方法來處理,并采用過程驅動方案來有限狀態(tài)機,為每個輸入狀態(tài)啟動一個過程。當某一個事件發(fā)生時,系統(tǒng)利用當前狀態(tài)來選取一個適當?shù)膭幼鳎搫幼魈幚磔斎胧录⒏庐斍盃顟B(tài)變量值。如圖四所示是L2CAP的面向連接信道的狀態(tài)機,顯示了由哪一個事件導致狀態(tài)轉換,以及在狀態(tài)轉換時采取哪一個動作。信道的操作共有七個狀態(tài):關閉、高層連接請求、L2CAP層連接請求、配置、打開、高層斷開連接請求、L2CAP層斷開連接請求。

            4) 內(nèi)存管理:內(nèi)存管理通常是操作系統(tǒng)的核心任務之一,由于本系統(tǒng)沒有使用操作系統(tǒng),所以這部分任務是系統(tǒng)必需而重要的任務。輸入的數(shù)據(jù)包必須被保存在內(nèi)存中,并將其傳遞給適當?shù)娜蝿兆鬟M一步的處理。同時,應用程序產(chǎn)生的輸出數(shù)據(jù)也必須以數(shù)據(jù)包的形式存儲在內(nèi)存中,并將其傳遞給硬件設備傳送出去。設計要做到快速分配存儲空間,并且避免數(shù)據(jù)包在各層協(xié)議之間移動時的數(shù)據(jù)復制。針對本系統(tǒng)處理的實際情況:藍牙協(xié)議數(shù)據(jù)報只有一些固定的大小的包類型,因此采用系統(tǒng)分配大小固定的緩沖區(qū)的方案。這樣作可以杜絕內(nèi)存碎片。需要緩沖區(qū)的時候,系統(tǒng)調(diào)用allot_bt_buffer函數(shù)。只要緩沖區(qū)分配完成,需要保存的僅僅是指向緩沖區(qū)的指針,所以歸還緩沖區(qū)到空閑緩沖區(qū)列表的時候,系統(tǒng)調(diào)用unallot_bt_buffer,將被釋放的緩沖區(qū)的指針交還給它。采用這種方法,協(xié)議軟件只需傳遞指向該緩沖區(qū)的指針,處理過程統(tǒng)一,并且避免了處理過程中數(shù)據(jù)的移動。

            從一般軟件設計分類的角度來看,設備管理和系統(tǒng)資源管理是操作系統(tǒng)的任務。在綜合考慮系統(tǒng)簡單性和成本等因素之后,本系統(tǒng)中沒有使用獨立的實時操作系統(tǒng),而是由軟件完成部分應該由操作系統(tǒng)完成的功能。

            五. 結束語

            本訪問點已可以應用于對機器人的遠程訪問上。如果將現(xiàn)有點進行適當改動和擴展,就能其他功能,例如給它擴展上一個語音解碼芯片后很容易擴展到語言信號的傳輸。

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

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉