



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、LwIP協(xié)議棧開發(fā)嵌入式網(wǎng)絡的三種方法分析摘要 輕量級的TCP/IP協(xié)議棧LwIP,提供了三種應用程序設計方法,且很容易被移植到多任務的操作系統(tǒng)中。本文結合C/OS-II這一實時操作系統(tǒng),以建立TCP服務器端通信為例,分析三種方法以及之間的關系,著重介紹基于raw API的應用程序設計。最后在ST公司STM32F107微處理器平臺上驗證,并給出了測試結果。關鍵詞 LwIP協(xié)議棧;C/OS-II;嵌入式網(wǎng)絡;STM32F107;隨著嵌入式系統(tǒng)功能的多樣化以及網(wǎng)絡在各個領域的中的廣泛應用,具備網(wǎng)絡功能的嵌入式設備擁有更高的使用價值和更強的通用性。然而大部分嵌入式設備使用經(jīng)濟型處理器,受內存和速度限
2、制,資源有限,不需要也不可能完整實現(xiàn)所有的TCP/IP協(xié)議,有時只需要滿足實際需求就行。LwIP是由瑞典計算機科學研究院開發(fā)的輕量型TCP/IP協(xié)議棧,其特點是保持了以太網(wǎng)的基本功能,通過優(yōu)化減少了對存儲資源的占用。LwIP是免費、開源的,任何人可以使用,能夠在裸機的環(huán)境下運行,當然設計的時候也考慮了將來的移植問題,可以很容易移植到多任務操作系統(tǒng)中。本文介紹了以ARM微處理器STM32F107和PHY接口DP83848為平臺,構建的嵌入式系統(tǒng)中,采用LwIP和嵌入式操作系統(tǒng)C/OS-II,使用協(xié)議棧提供的三種應用程序接口,實現(xiàn)嵌入式設備的網(wǎng)絡通信功能。1 LwIP和C/OS-II介紹1.1 L
3、wIP協(xié)議棧LwIP協(xié)議是瑞士計算機科學院的Adam Dunkels等開發(fā)的一套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧。LwIP含義是light weight(輕型)IP協(xié)議,在實現(xiàn)時保持了TCP協(xié)議的主要功能基礎上減少對RAM的占用,一般它只需要幾十K的RAM和40K左右的ROM就可以運行,這使LwIP協(xié)議棧很適合在低端嵌入式系統(tǒng)中使用。LwIP協(xié)議棧的設計才用分層結構的思想,每一個協(xié)議都作為一個模塊來實現(xiàn),提供一些與其它協(xié)議的接口函數(shù)。所有的TCP/IP協(xié)議棧都在一個進程當中,這樣TCP/IP協(xié)議棧就和操作系統(tǒng)內核分開了。而應用程序既可以是單獨的進程也可以駐留在TCP/IP進程中,它
4、們之間利用ICP機制進行通訊。如果應用程序是單獨的線程可以通過操作系統(tǒng)的郵箱、消息隊列等,與協(xié)議棧進程通訊。如果應用程序駐留在協(xié)議棧進程中,則應用程序可以通過內部回調函數(shù)和協(xié)議棧進程通訊。1.2 C/OS-II實時操作系統(tǒng)C/OS-II是一個源碼公開、可移植、可固化、可裁剪及占先式的實時多任務操作系統(tǒng),是專門為嵌入式應用設計的實時操作系統(tǒng)內核,已廣泛的應用在各種嵌入式系統(tǒng)中。 C/OS-II是多任務系統(tǒng),內核負責管理各個任務,每個任務都有其優(yōu)先級,C/OS-II最多可以管理64個任務,其每個任務都擁有自己獨立的堆棧。C/OS-II提供了非常豐富的系統(tǒng)服務功能,比如信號量、消息郵箱、消息隊列、事
5、件標志、內存管理和時間管理等,這些功能可以幫助用戶實現(xiàn)非常復雜的應用。1.3 LwIP協(xié)議棧移植到C/OS-IILwIP協(xié)議棧在設計的時候就考慮到了將來的移植問題,因此把所有與硬件、操作系統(tǒng)、編譯器有關的部分都全部獨立起來,形成了一個操作系統(tǒng)模擬層。操作系統(tǒng)模擬層用進程間的信號量、郵箱機制處理通信問題,而C/OS-II是一個基于任務調度的嵌入式實時操作系統(tǒng),因此移植LwIP協(xié)議棧到C/OS-II,是很容易實現(xiàn)的。2 LwIP開發(fā)嵌入式網(wǎng)絡應用程序LwIP提供了三種應用程序接口:(1) 低水平的,基于內核/回調函數(shù)的API(后面稱 RAW API)(2) 高水平的,連續(xù)的API(后面稱LwIP
6、API)(3) BSD風格的套接字API(后面稱BSD socket)可以在協(xié)議棧中通過對宏定義的不同配置,來決定使用哪種方式。其中BSD socket方式不是很成熟,RAW API需要編寫回調函數(shù),協(xié)議棧推薦使用LwIP API這種方式,但是三種方式到了底層都是通過回調函數(shù)實現(xiàn)的。本文直接從RAW API入手,以建立TCP服務器端通信為例,詳述底層的調用,然后再講述后面的兩種是如何封裝而成的。2.1基于RAW API的應用程序設計步驟使用RAW API進行TCP/IP編程,可以使應用程序的代碼和協(xié)議棧的代碼很好地結合起來。程序的執(zhí)行機制是以回調函數(shù)為基礎的事件驅動的,同時回調函數(shù)也是被TCP
7、/IP代碼直接調用的,回調函數(shù)、數(shù)據(jù)發(fā)送函數(shù)都需要自己編寫。這種方式是唯一的一種支持設備裸機運行,又可以完成網(wǎng)絡通信完成系統(tǒng)功能。裸機運行實際相當于是一個線程,而協(xié)議棧代碼和應用程序代碼通過先后次序處理,完成數(shù)據(jù)流轉。圖1是使用RAW API方式,多任務系統(tǒng)實現(xiàn)TCP服務器端通信的步驟。圖1 RAW API方式應用程序設計LwIP協(xié)議棧中的tcp塊結構有兩種TCP_PCB和TCP_PCB_LISTEN,前者在內存池中的默認個數(shù)是5,后者是8,其中l(wèi)isten型的結構占用少量的內存,專門用于處理在偵聽狀態(tài)的tcp塊結構。tcp_listen函數(shù)中,釋放tcp_new創(chuàng)建的塊結構,而是返回一個li
8、sten型的tcp塊結構。客戶端連接,到達TCP層,在tcp_listen_input函數(shù)中,重新創(chuàng)建一個TCP_PCB塊結構,專門用于和客戶端通信。偵聽到客戶端連接,完成三次握手后,回調自己編寫的接收函數(shù),然后將全局的指針指向與客戶端通信的塊結構,在數(shù)據(jù)發(fā)送時,使用這個指針,就是在用這個塊結構與客戶端通信。由上面看出,這種方式最大的特點是減少了任務之間的切換,只要數(shù)據(jù)來到協(xié)議棧線程,通過回調的方式就可以完成數(shù)據(jù)的處理。2.2 基于LwIP API的應用程序設計LwIP API方式的編程,是基于上面的RAW API的,封裝了一個netconn的結構,所有操作不在針對TCP塊結構,而變成了net
9、conn型的結構變量。操作都需要協(xié)議棧去處理,應用程序與協(xié)議棧通信,通過發(fā)送消息方式進行,因此這種方式會造成頻繁的任務切換,速度相比RAW API慢了許多,使用步驟如圖2所示。圖2 LwIP API方式應用程序設計2.3 基于BSD socket的應用程序設計BSD socket相當于對LwIP API做了一層封裝,而netconn結構有一個變量是socket,這樣兩者很容易結合起來。Socket方式很容易被理解,編寫應用程序也較為容易,但是效率低,消耗的資源更多,使用步驟如圖3所示。圖3 BSD socket方式應用程序設計3 實際應用與驗證本次驗證中使用的開發(fā)板,微處理器采用ST公司推出的
10、STM32F107,以太網(wǎng)PHY芯片采用DP83848.STM32F107是一款基于ARM Cortex-M3內核的32位處理器,是面向網(wǎng)絡互連型應用的,最大工作頻率為72MHz,內置了MAC控制器,可以方便地與以太網(wǎng)PHY芯片連接,構成以太網(wǎng)接口。以太網(wǎng)PHY芯片DP83848采用RMII模式與STM32F107連接。RMII模式可以減少接口之間的引腳連接,降低了繪制電路板的復雜性,同時空閑的引腳可用作其它用途,以太網(wǎng)接口如圖4所示。圖4 STM32F107 MAC與DP83848連接圖在開發(fā)板上,移植好LwIP協(xié)議棧和C/OS-II操作系統(tǒng),應用程序中創(chuàng)建一個Web服務器,綁定本地IP地址192.168.1.241、端口80。在自己編寫的數(shù)據(jù)接收函數(shù)中,利用兩個字符
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 三年級下學期數(shù)學家長會計劃
- 外墻防滲漏措施的案例分析
- 城市基礎設施冬季維護措施
- 幼兒園科學活動教案標準格式范文
- 高科技企業(yè)員工晉升流程分析
- 學校安全文化建設活動計劃
- 小學健康教育與社會實踐計劃
- PEP小學英語五年級下冊單元測試與評估計劃
- 旅游業(yè)相關產(chǎn)品供貨計劃
- 患者教育對醫(yī)療安全管理的參與流程
- 吉林2025年03月長春新區(qū)面向社會公開選聘8名各產(chǎn)業(yè)招商辦公室負責人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 微風發(fā)電項目可行報告
- 2025年中小學生安全教育日知識競賽考試題(附答案)
- 2024年初級會計實務考試真題及答案(5套)
- 垃圾焚燒飛灰處理行業(yè)深度調研及發(fā)展戰(zhàn)略咨詢報告
- 2024年東莞市寮步鎮(zhèn)招聘特聘材料員筆試真題
- 阿爾茨海默癥健康教育
- 鉚工基礎知識培訓
- 2025年車位轉讓協(xié)議模板
- 2025年注會合同法試題及答案
- 2025年礦區(qū)招聘考試試題及答案
評論
0/150
提交評論