LwIP裸機(jī)移植與編程介紹課件_第1頁(yè)
LwIP裸機(jī)移植與編程介紹課件_第2頁(yè)
LwIP裸機(jī)移植與編程介紹課件_第3頁(yè)
LwIP裸機(jī)移植與編程介紹課件_第4頁(yè)
LwIP裸機(jī)移植與編程介紹課件_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

123LwIP源碼組織架構(gòu)與移植41LwIP介紹與源碼獲取常見(jiàn)的嵌入式TCP/IP協(xié)議棧背景介紹5簡(jiǎn)單RAW接口編程實(shí)例123LwIP源碼組織架構(gòu)與移植41LwIP介紹與源碼獲取常2

隨著社會(huì)的快速發(fā)展,在數(shù)據(jù)采集領(lǐng)域,針對(duì)一些小型監(jiān)測(cè)設(shè)備通過(guò)網(wǎng)絡(luò)功能來(lái)實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)傳輸顯得異常重要。而現(xiàn)存的IP網(wǎng)諸如全球Internet網(wǎng)的趨勢(shì)愈演愈烈,只要那些設(shè)備上實(shí)現(xiàn)了TCP/IP協(xié)議棧并增加一個(gè)網(wǎng)絡(luò)接口,就可以方便的接入到現(xiàn)有的網(wǎng)絡(luò)中,所以小型化嵌入式設(shè)備的網(wǎng)絡(luò)接入技術(shù)是未來(lái)物聯(lián)網(wǎng)實(shí)現(xiàn)的關(guān)鍵。背景介紹背景介紹TCP/IP協(xié)議棧網(wǎng)絡(luò)接入網(wǎng)絡(luò)接口2隨著社會(huì)的快速發(fā)展,在數(shù)據(jù)采集領(lǐng)域,針對(duì)3背景介紹背景介紹TCP/IP協(xié)議棧是一種四層的結(jié)構(gòu)模型,如圖所示:

對(duì)于一些低端的嵌入式產(chǎn)品,受到本身硬件資源的限制,幾乎沒(méi)辦法支持完整的TCP/IP協(xié)議棧,而且一些情況也不需要支持!3背景介紹背景介紹TCP/IP協(xié)議棧是一種四層的結(jié)構(gòu)模型,4常見(jiàn)的嵌入式TCP/IP協(xié)議棧uC/IP

uC/IP是由GuyLancaster編寫的一套基于uC/OS且開(kāi)放源碼的TCP/IP協(xié)議棧,亦可移植到操作系統(tǒng),是一套完全免費(fèi)的、可供研究的TCP/IP協(xié)議棧,uC/IP大部分源碼是從公開(kāi)源碼BSD發(fā)布站點(diǎn)和KA9Q(一個(gè)基于DOS單任務(wù)環(huán)境運(yùn)行的TCP/IP協(xié)議棧)移植過(guò)來(lái)。uC/IP具有如下一些特點(diǎn):帶身份驗(yàn)證和報(bào)頭壓縮支持的PPP協(xié)議,優(yōu)化的單一請(qǐng)求/回復(fù)交互過(guò)程,支持IP/TCP/UDP協(xié)議,可實(shí)現(xiàn)的網(wǎng)絡(luò)功能較為強(qiáng)大,并可裁減。uC/IP協(xié)議棧被為一個(gè)帶最小化用戶接口及可應(yīng)用串行鏈路網(wǎng)絡(luò)模塊。根據(jù)采用CPU、編譯器和系統(tǒng)所需實(shí)現(xiàn)協(xié)議的多少,協(xié)議棧需要的代碼容量空間在30-60KB之間。4常見(jiàn)的嵌入式TCP/IP協(xié)議棧uC/IP5uIP

uIP由瑞典計(jì)算機(jī)科學(xué)學(xué)院(網(wǎng)絡(luò)嵌入式系統(tǒng)小組)的AdamDunkels開(kāi)發(fā)。其源代碼由C語(yǔ)言編寫,并完全公開(kāi)。uIP協(xié)議棧去掉了完整的TCP/IP中不常用的功能,簡(jiǎn)化了通訊流程,但保留了網(wǎng)絡(luò)通信必須使用的協(xié)議,設(shè)計(jì)重點(diǎn)放在了IP/TCP/ICMP/UDP/ARP這些網(wǎng)絡(luò)層和傳輸層協(xié)議上,保證了其代碼的通用性和結(jié)構(gòu)的穩(wěn)定性。 1)代碼非常少,其協(xié)議棧代碼不到6K,很方便閱讀和移植。 2)占用的內(nèi)存數(shù)非常少,RAM占用僅幾百字節(jié)。 3)對(duì)數(shù)據(jù)的處理采用輪循機(jī)制,不需要操作系統(tǒng)的支持。 4)支持多個(gè)主動(dòng)連接和被動(dòng)連接并發(fā)。 5)其硬件處理層、協(xié)議棧層和應(yīng)用層共用一個(gè)全局緩存區(qū),不存在數(shù)據(jù)的拷貝,且發(fā)送和接收都是依靠這個(gè)緩存區(qū),極大的節(jié)省空間和時(shí)間。常見(jiàn)的嵌入式TCP/IP協(xié)議棧5uIPuIP由瑞典計(jì)算機(jī)科學(xué)學(xué)院(網(wǎng)6LwIP

LwIP是瑞士計(jì)算機(jī)科學(xué)院(SwedishInstituteofComputerScience)的AdamDunkels等開(kāi)發(fā)的一套用于嵌入式系統(tǒng)的開(kāi)放源代碼TCP/IP協(xié)議棧。LwIP的含義是LightWeight(輕型)IP協(xié)議。LwIP可以移植到操作系統(tǒng)上,也可以在無(wú)操作系統(tǒng)的情況下獨(dú)立運(yùn)行。LwIPTCP/IP實(shí)現(xiàn)的重點(diǎn)是在保持TCP協(xié)議主要功能的基礎(chǔ)上減少對(duì)RAM的占用,一般它只需要幾十K的RAM和40K左右的ROM就可以運(yùn)行,這使LwIP協(xié)議棧適合在低端嵌入式系統(tǒng)中使用。常見(jiàn)的嵌入式TCP/IP協(xié)議棧6LwIPLwIP是瑞士計(jì)算機(jī)科學(xué)院7常見(jiàn)的嵌入式TCP/IP協(xié)議棧三種TCP/IP協(xié)議棧的比較LwIP和uC/IP是同量級(jí)別的兩個(gè)開(kāi)源協(xié)議棧,兩者代碼容量和實(shí)現(xiàn)功能相似,LwIP沒(méi)有操作系統(tǒng)針對(duì)性。而uC/IP協(xié)議最初是針對(duì)uC/OS設(shè)計(jì),依賴于操作系統(tǒng)。

從應(yīng)用和開(kāi)發(fā)的角度看,選擇LWIP更有優(yōu)勢(shì),網(wǎng)上可供參考的文檔資料較多;而uC/IP在文檔支持與軟件升級(jí)管理上有很多不足,但是它最初是針對(duì)UC/OS而設(shè)計(jì),如果選用UC/OS作為軟件基礎(chǔ)的話,在系統(tǒng)函數(shù)構(gòu)造方面有優(yōu)勢(shì)。uIP代碼容量小巧,實(shí)現(xiàn)功能精簡(jiǎn),但也限制了在一些稍高要求場(chǎng)合下的應(yīng)用,如大容量數(shù)據(jù)傳輸。7常見(jiàn)的嵌入式TCP/IP協(xié)議棧三種TCP/IP協(xié)議棧的比較LwIP介紹與源碼獲取LwIP介紹8

lwIPisasmallindependentimplementationoftheTCP/IPprotocolsuitethathasbeendevelopedbyAdamDunkelsattheComputerandNetworksArchitectures(CNA)labattheSwedishInstituteofComputerScience(SICS).

ThefocusofthelwIPTCP/IPimplementationistoreducetheRAMusagewhilestillhavingafullscaleTCP.ThismakinglwIPsuitableforuseinembeddedsystemswithtensofkilobytesoffreeRAMandroomforaround40kilobytesofcodeROM.LwIP介紹與源碼獲取LwIP介紹8lwIPLwIP介紹與源碼獲取9LwIP主要特性LwIP的版本較多,新的版本通常是對(duì)LwIP的功能進(jìn)行完善。LwIP主要特性如下:ARP協(xié)議,以太網(wǎng)地址解析協(xié)議;UDP協(xié)議,用戶數(shù)據(jù)報(bào)協(xié)議;TCP協(xié)議,支持TCP擁塞控制,RTT估計(jì),快速恢復(fù)與重傳等;IP協(xié)議,包括IPv4和IPv6,支持IP分片與重裝,支持多網(wǎng)絡(luò)接口下數(shù)據(jù)轉(zhuǎn)發(fā);ICMP協(xié)議,用于網(wǎng)絡(luò)調(diào)試與維護(hù);IGMP協(xié)議,用于網(wǎng)絡(luò)組管理,可以實(shí)現(xiàn)多播數(shù)據(jù)的接收;提供三種用戶編程接口方式:raw/callbackAPI、sequentialAPI、BSD-stylesocketAPI;DNS,域名解析;DHCP,動(dòng)態(tài)主機(jī)配置協(xié)議;SNMP,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議;AUTOIP,IP地址自動(dòng)配置;PPP,點(diǎn)對(duì)點(diǎn)協(xié)議,支持PPPoE。LwIP介紹與源碼獲取9LwIP主要特性LwIP的版本較多,LwIP介紹與源碼獲取10源碼獲取訪問(wèn):/releases/lwip/LwIP源碼獲取LwIP介紹與源碼獲取10源碼獲取訪問(wèn):LwIP源碼獲取11LwIP源碼組織架構(gòu)與移植LwIP源碼文件組織LwIP文件目錄的組織結(jié)構(gòu)如下圖所示:其中,doc文件夾中為L(zhǎng)wIP介紹、移植與編程說(shuō)明文檔;test文件夾中為L(zhǎng)wIP提供的一些測(cè)試程序;

src文件夾中包含了LwIP的源碼。11LwIP源碼組織架構(gòu)與移植LwIP源碼文件組織LwIP文12doc文件目錄解析LwIP|—doc|—contrib.txt:開(kāi)發(fā)者如何為L(zhǎng)wIP做貢獻(xiàn);

|—rawapi.txt:RAW接口編程介紹;|—savannah.txt:獲取最新源碼說(shuō)明;|—sys_arch.txt:系統(tǒng)抽象層說(shuō)明文檔(包含移植說(shuō)明);LwIP源碼組織架構(gòu)與移植12doc文件目錄解析LwIPLwIP源碼組織架構(gòu)與移植13src文件目錄解析LwIP|—src|—api:LwIP為用戶提供的兩種高級(jí)API接口;

|—core:LwIP內(nèi)核源碼,包含IP、ICMP、IGMP、TCP、UDP等核心協(xié)議以及建立在它們基礎(chǔ)上的DNS、DHCP、SNMP等上層應(yīng)用協(xié)議;|—include:LwIP使用到的相關(guān)頭文件;|—netif:主要包含了與底層網(wǎng)絡(luò)接口相關(guān)的文件;LwIP源碼組織架構(gòu)與移植13src文件目錄解析LwIPLwIP源碼組織架構(gòu)與移植14LwIP源碼組織架構(gòu)與移植LwIP裸機(jī)移植LwIP移植準(zhǔn)備工作:1、Keil基礎(chǔ)工程;2、LwIP源碼的下載,文中的移植版本為v1.3.2;3、STM32F207以太網(wǎng)庫(kù)的下載,在ST官網(wǎng)下載;LwIP裸機(jī)移植:1、STM32F207以太網(wǎng)庫(kù)添加到基礎(chǔ)工程;(由于官方以太網(wǎng)庫(kù)中配有stm32f2x7_eth_conf_template.h,且是針對(duì)DP83848編寫的,直接用就可以了);2、LwIP源碼添加到基礎(chǔ)工程;3、DP83848網(wǎng)口芯片的驅(qū)動(dòng)程序的編寫(根據(jù)板子的實(shí)際情況);4、添加中間文件arch文件以連接LwIP和以太網(wǎng)驅(qū)動(dòng);14LwIP源碼組織架構(gòu)與移植LwIP裸機(jī)移植LwIP移植準(zhǔn)15修改文件說(shuō)明LwIP源碼組織架構(gòu)與RAW接口編程LwIP提供的ethernetif.c文件給出了網(wǎng)絡(luò)接口驅(qū)動(dòng)的整體框架,用戶需要自己完成的函數(shù)主要有3個(gè),分別是:底層初始化函數(shù)low_level_init()——該函數(shù)用來(lái)對(duì)網(wǎng)絡(luò)接口進(jìn)行初始化,任何與初始化網(wǎng)絡(luò)接口有關(guān)的操作都可以在該函數(shù)內(nèi)實(shí),如MAC地址配置;底層輸入函數(shù)low_level_input()——該函數(shù)為到達(dá)的數(shù)據(jù)包分配pbuf(通常是一個(gè)pbuf鏈),并將數(shù)據(jù)包從網(wǎng)絡(luò)接口傳入至pbuf鏈中;底層輸出函數(shù)low_level_output()——該函數(shù)負(fù)責(zé)將數(shù)據(jù)包發(fā)送至指定的網(wǎng)絡(luò)接口中。15修改文件說(shuō)明LwIP源碼組織架構(gòu)與RAW接口編程LwIP16

在LWIP的源碼中有個(gè)opt.h的文件,這個(gè)文件是裁剪和配置LWIP的,但最好不要直接在里面修改。這里參照網(wǎng)上資料,在lwipopts.h中對(duì)功能和性能進(jìn)行裁剪和配置。LwIP源碼組織架構(gòu)與RAW接口編程修改文件說(shuō)明16在LWIP的源碼中有個(gè)opt.h17RAW接口編程LwIP為用戶提供三種編程接口方式:raw/callbackAPI、sequentialAPI、BSD-stylesocketAPI。

而后兩種編程接口是需要操作系統(tǒng)支持的,根據(jù)我們的實(shí)際應(yīng)用情況出發(fā),采用RAWAPI編程。使用RAWAPI進(jìn)行TCP/IP編程,可以使應(yīng)用程序的代碼和TCP/IP協(xié)議棧的代碼很好地結(jié)合起來(lái)。程序的執(zhí)行機(jī)制是以回調(diào)函數(shù)為基礎(chǔ)的事件驅(qū)動(dòng)的,同時(shí)回調(diào)函數(shù)也是被TCP/IP代碼直接調(diào)用的。TCP/IP代碼和應(yīng)用程序的代碼運(yùn)行在同一個(gè)線程里面,在程序代碼的執(zhí)行時(shí)間上更快,而且在運(yùn)行中它也占用更少的內(nèi)存資源。簡(jiǎn)單RAW接口編程實(shí)例17RAW接口編程LwIP為用戶提供18回調(diào)函數(shù)

回調(diào)函數(shù)就是一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用來(lái)調(diào)用其所指向的函數(shù)時(shí),我們就說(shuō)這是回調(diào)函數(shù)。回調(diào)函數(shù)不是由該函數(shù)的實(shí)現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時(shí)由另外的一方調(diào)用的,用于對(duì)該事件或條件進(jìn)行響應(yīng)。程序的執(zhí)行是靠回調(diào)函數(shù)來(lái)驅(qū)動(dòng)的。每一個(gè)回調(diào)函數(shù)也只不過(guò)是一個(gè)能夠直接被TCP/IP代碼調(diào)用的普通的C語(yǔ)言函數(shù)。每一個(gè)回調(diào)函數(shù)的調(diào)用都是傳遞一個(gè)當(dāng)前連接UDP或TCP的狀態(tài)。另外,為了使應(yīng)用程序有一個(gè)明確的執(zhí)行狀態(tài),回調(diào)函數(shù)的指定是可編程的,并且是獨(dú)立于TCP/IP狀態(tài)之外的。簡(jiǎn)單RAW接口編程實(shí)例18回調(diào)函數(shù)回調(diào)函數(shù)就是一個(gè)通過(guò)函數(shù)指針調(diào)19RAW接口編程——UDP服務(wù)器簡(jiǎn)單RAW接口編程實(shí)例19RAW接口編程——UDP服務(wù)器簡(jiǎn)單RAW接口編程實(shí)例20簡(jiǎn)單RAW接

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論