版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度四川省公共營(yíng)養(yǎng)師之三級(jí)營(yíng)養(yǎng)師綜合檢測(cè)試卷B卷含答案
- 2024年度四川省公共營(yíng)養(yǎng)師之二級(jí)營(yíng)養(yǎng)師題庫(kù)附答案(基礎(chǔ)題)
- 2025期貨委托協(xié)議合同
- 2025機(jī)動(dòng)車買賣合同 合同范本
- 2025停車位購(gòu)買合同協(xié)議書
- 2025年中國(guó)流式細(xì)胞儀行業(yè)市場(chǎng)調(diào)研分析及投資前景預(yù)測(cè)報(bào)告
- 2025房地產(chǎn)借款合同范本版
- 2025項(xiàng)目合作居間合同
- 2025單位食堂用工的合同
- 2025出國(guó)留學(xué)服務(wù)合同
- 智能化手術(shù)室介紹strykerisuite課件
- 水利機(jī)械施工方案
- 廣東省佛山市南海區(qū)大瀝鎮(zhèn)2023-2024學(xué)年九年級(jí)上學(xué)期期中物理試卷
- ESD內(nèi)部審核日程計(jì)劃表+內(nèi)審檢查表+內(nèi)審報(bào)告全套資料
- HSK標(biāo)準(zhǔn)教程5下-課件-L
- 電腦基礎(chǔ)知識(shí)
- 工程竣工預(yù)驗(yàn)收簽到表
- 靜鉆根植樁施工組織設(shè)計(jì)
- 工程精細(xì)化管理
- 小學(xué)音樂(lè)-(演唱)小拜年教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 醫(yī)院患者知情同意與告知制度
評(píng)論
0/150
提交評(píng)論