資源描述:
《LwIP協(xié)議棧開發(fā)嵌入式網(wǎng)絡(luò)的三種方法分析》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、LwIP協(xié)議棧開發(fā)嵌入式網(wǎng)絡(luò)的三種方法分析LwIP協(xié)議棧開發(fā)嵌入式網(wǎng)絡(luò)的三種方法分析摘要輕量級(jí)的TCP/IP協(xié)議棧LwIP,提供了三種應(yīng)用程序設(shè)計(jì)方法,且很容易被移植到多任務(wù)的操作系統(tǒng)中。木文結(jié)合uC/OS-H這一實(shí)時(shí)操作系統(tǒng),以建立TCP服務(wù)器端通信為例,分析三種方法以及Z間的關(guān)系,著重介紹基于rawAPT的應(yīng)用程序設(shè)計(jì)。最后在ST公司STM32F107微處理器平臺(tái)上驗(yàn)證,并給出了測(cè)試結(jié)果。關(guān)鍵詞LwIP協(xié)議棧;uC/OS-II;嵌入式網(wǎng)絡(luò);STM32F1O7;隨著嵌入式系統(tǒng)功能的多樣化以及網(wǎng)絡(luò)在各個(gè)領(lǐng)域的中的
2、廣泛應(yīng)用,具備網(wǎng)絡(luò)功能的嵌入式設(shè)備擁有更高的使用價(jià)值和更強(qiáng)的通用性。然而人部分嵌入式設(shè)備使用經(jīng)濟(jì)型處理器,受內(nèi)存和速度限制,資源有限,不需要也不可能完整實(shí)現(xiàn)所有的TCP/IP協(xié)議,有時(shí)只需要滿足實(shí)際需求就行。LwTP是由瑞典計(jì)算機(jī)科學(xué)研究院開發(fā)的輕量型TCP/IP協(xié)議棧,其特點(diǎn)是保持了以太網(wǎng)的基木功能,通過(guò)優(yōu)化減少了對(duì)存儲(chǔ)資源的占用。臥IP是免費(fèi)、開源的,任何人可以使用,能夠在裸機(jī)的壞境卜.運(yùn)行,當(dāng)然設(shè)計(jì)的時(shí)候也考慮了將來(lái)的移植問(wèn)題,可以很容易移植到多任務(wù)操作系統(tǒng)中。木文介紹了以ARM微處理器STM32F107和
3、PHY接UDP83848為平臺(tái),構(gòu)建的嵌入式系統(tǒng)中,采用LwIP和嵌入式操作系統(tǒng)UC/OS-I1,使用協(xié)議棧提供的三種應(yīng)用程序接口,實(shí)現(xiàn)嵌入式設(shè)備的網(wǎng)絡(luò)通信功能。1LwIP和uC/OS-II介紹1.1LwIP協(xié)議棧LwIP協(xié)議是瑞士計(jì)算機(jī)科學(xué)院的AdamDunkels等開發(fā)的一套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧。LwIP含義是lightweight(輕型)IP協(xié)議,在實(shí)現(xiàn)時(shí)保持了TCP協(xié)議的主要功能基礎(chǔ)上減少對(duì)RAM的占用,一般它只需要幾十K的RAM和40K左右的ROM就對(duì)以運(yùn)行,這使LwIP協(xié)議棧很
4、適合在低端嵌入式系統(tǒng)中使用。LwIP協(xié)議棧的設(shè)計(jì)才用分層結(jié)構(gòu)的思想,每一個(gè)協(xié)議都作為一個(gè)模塊來(lái)實(shí)現(xiàn),捉供一些與其它協(xié)議的接口函數(shù)。所有的TCP/IP協(xié)議棧都在一個(gè)進(jìn)程當(dāng)中,這樣TCP/IP協(xié)議棧就和操作系統(tǒng)內(nèi)核分開了。而應(yīng)用程序既可以是單獨(dú)的進(jìn)程也可以駐留在TCP/IP進(jìn)程小,它們之間利用ICP機(jī)制進(jìn)行通訊。如果應(yīng)用程序是單獨(dú)的線程可以通過(guò)操作系統(tǒng)的郵箱、消息隊(duì)列等,與協(xié)議棧進(jìn)程通訊。如果應(yīng)川程序駐留在協(xié)議棧進(jìn)程屮,則應(yīng)用程序可以通過(guò)內(nèi)部凹調(diào)函數(shù)和協(xié)議棧進(jìn)程通訊。1.2uC/OS-II實(shí)時(shí)操作系統(tǒng)uC/OS-II
5、是一個(gè)源碼公開、對(duì)移植、對(duì)固化、可裁剪及占先式的實(shí)時(shí)多任務(wù)操作系統(tǒng),是專門為嵌入式應(yīng)用設(shè)計(jì)的實(shí)吋操作系統(tǒng)內(nèi)核,已廣泛的應(yīng)用在各種嵌入式系統(tǒng)中。uC/OS-I1是多任務(wù)系統(tǒng),內(nèi)核負(fù)責(zé)管理各個(gè)任務(wù),每個(gè)任務(wù)都有其優(yōu)先級(jí),UC/OS-1I扱多町以管理64個(gè)任務(wù),其每個(gè)任務(wù)都擁有自己獨(dú)立的堆棧。uC/OS-II提供了非常豐富的系統(tǒng)服務(wù)功能,比如信號(hào)量、消息郵箱、消息隊(duì)列、事件標(biāo)志、內(nèi)存管理和時(shí)間管理等,這些功能可以幫助用戶實(shí)現(xiàn)非常復(fù)雜的應(yīng)用。1.3LwIP協(xié)議棧移植到uC/OS-IILwIP協(xié)議棧在設(shè)計(jì)的時(shí)候就考慮到了將
6、來(lái)的移植問(wèn)題,因此把所有與硬件、操作系統(tǒng)、編譯器有關(guān)的部分都全部獨(dú)立起來(lái),形成了一個(gè)操作系統(tǒng)模擬層。操作系統(tǒng)模擬層用進(jìn)程間的信號(hào)量、郵箱機(jī)制處理通信問(wèn)題,而PC/OS-TT是一個(gè)基于任務(wù)調(diào)度的嵌入式實(shí)時(shí)操作系統(tǒng),因此移植LwIP協(xié)議棧到PC/OS-II,是很容易實(shí)現(xiàn)的。2LwIP開發(fā)嵌入式網(wǎng)絡(luò)應(yīng)用程序LwIP提供了三種應(yīng)用程序接口:(1)低水平的,基于內(nèi)核/回調(diào)函數(shù)的API(后面稱RAWAPI)(2)高水平的,連續(xù)的API(后而稱LwIPAPI)(3)BSD風(fēng)格的套接字API(后而稱BSDsocket)可以在協(xié)議
7、棧中通過(guò)對(duì)宏定義的不同配置,來(lái)決定使用哪種方式。其中BSDsocket方式不是很成熟,RAWAPI需要編寫凹調(diào)函數(shù),協(xié)議棧推薦使用LwIPAPI這種方式,但是三種方式到了底層都是通過(guò)回調(diào)函數(shù)實(shí)現(xiàn)的。本文直接從RAWAPT入手,以建立TCP服務(wù)器端通信為例,詳述底層的調(diào)用,然后再講述后而的兩種是如何封裝而成的。2.1基于RAWAPI的應(yīng)用程序設(shè)計(jì)步驟使用RAWAPI進(jìn)行TCP/IP編程,可以使應(yīng)用程序的代碼和協(xié)議棧的代碼很好地結(jié)介起來(lái)。程序的執(zhí)行機(jī)制是以回調(diào)函數(shù)為基礎(chǔ)的事件驅(qū)動(dòng)的,同時(shí)回調(diào)函數(shù)也是被TCP/IP代碼
8、直接調(diào)用的,冋調(diào)函數(shù)、數(shù)據(jù)發(fā)送函數(shù)都需要自己編寫。這種方式是唯一的一?種支持設(shè)備裸機(jī)運(yùn)行,又可以完成網(wǎng)絡(luò)通信完成系統(tǒng)功能。裸機(jī)運(yùn)行實(shí)際相當(dāng)于是一個(gè)線程,而協(xié)議棧代碼和應(yīng)用程序代碼通過(guò)先后次序處理,完成數(shù)據(jù)流轉(zhuǎn)。圖1是使用RAWAPI方式,多任務(wù)系統(tǒng)實(shí)現(xiàn)TCP服務(wù)器端通信的步驟。圖1RAWAPI方式應(yīng)用程序設(shè)計(jì)LwTP協(xié)議棧中的tcp塊結(jié)構(gòu)有兩種TCP_PCB和TCP_PC