




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
123LwIP源碼組織架構(gòu)與移植41LwIP介紹與源碼獲取常見的嵌入式TCP/IP協(xié)議棧背景介紹5簡單RAW接口編程實(shí)例123LwIP源碼組織架構(gòu)與移植41LwIP介紹與源碼獲取常2
隨著社會的快速發(fā)展,在數(shù)據(jù)采集領(lǐng)域,針對一些小型監(jiān)測設(shè)備通過網(wǎng)絡(luò)功能來實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)傳輸顯得異常重要。而現(xiàn)存的IP網(wǎng)諸如全球Internet網(wǎng)的趨勢愈演愈烈,只要那些設(shè)備上實(shí)現(xiàn)了TCP/IP協(xié)議棧并增加一個(gè)網(wǎng)絡(luò)接口,就可以方便的接入到現(xiàn)有的網(wǎng)絡(luò)中,所以小型化嵌入式設(shè)備的網(wǎng)絡(luò)接入技術(shù)是未來物聯(lián)網(wǎng)實(shí)現(xiàn)的關(guān)鍵。背景介紹背景介紹TCP/IP協(xié)議棧網(wǎng)絡(luò)接入網(wǎng)絡(luò)接口2隨著社會的快速發(fā)展,在數(shù)據(jù)采集領(lǐng)域,針對3背景介紹背景介紹TCP/IP協(xié)議棧是一種四層的結(jié)構(gòu)模型,如圖所示:
對于一些低端的嵌入式產(chǎn)品,受到本身硬件資源的限制,幾乎沒辦法支持完整的TCP/IP協(xié)議棧,而且一些情況也不需要支持!3背景介紹背景介紹TCP/IP協(xié)議棧是一種四層的結(jié)構(gòu)模型,4常見的嵌入式TCP/IP協(xié)議棧uC/IP
uC/IP是由GuyLancaster編寫的一套基于uC/OS且開放源碼的TCP/IP協(xié)議棧,亦可移植到操作系統(tǒng),是一套完全免費(fèi)的、可供研究的TCP/IP協(xié)議棧,uC/IP大部分源碼是從公開源碼BSD發(fā)布站點(diǎn)和KA9Q(一個(gè)基于DOS單任務(wù)環(huán)境運(yùn)行的TCP/IP協(xié)議棧)移植過來。uC/IP具有如下一些特點(diǎn):帶身份驗(yàn)證和報(bào)頭壓縮支持的PPP協(xié)議,優(yōu)化的單一請求/回復(fù)交互過程,支持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常見的嵌入式TCP/IP協(xié)議棧uC/IP5uIP
uIP由瑞典計(jì)算機(jī)科學(xué)學(xué)院(網(wǎng)絡(luò)嵌入式系統(tǒng)小組)的AdamDunkels開發(fā)。其源代碼由C語言編寫,并完全公開。uIP協(xié)議棧去掉了完整的TCP/IP中不常用的功能,簡化了通訊流程,但保留了網(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)對數(shù)據(jù)的處理采用輪循機(jī)制,不需要操作系統(tǒng)的支持。 4)支持多個(gè)主動連接和被動連接并發(fā)。 5)其硬件處理層、協(xié)議棧層和應(yīng)用層共用一個(gè)全局緩存區(qū),不存在數(shù)據(jù)的拷貝,且發(fā)送和接收都是依靠這個(gè)緩存區(qū),極大的節(jié)省空間和時(shí)間。常見的嵌入式TCP/IP協(xié)議棧5uIPuIP由瑞典計(jì)算機(jī)科學(xué)學(xué)院(網(wǎng)6LwIP
LwIP是瑞士計(jì)算機(jī)科學(xué)院(SwedishInstituteofComputerScience)的AdamDunkels等開發(fā)的一套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧。LwIP的含義是LightWeight(輕型)IP協(xié)議。LwIP可以移植到操作系統(tǒng)上,也可以在無操作系統(tǒng)的情況下獨(dú)立運(yùn)行。LwIPTCP/IP實(shí)現(xiàn)的重點(diǎn)是在保持TCP協(xié)議主要功能的基礎(chǔ)上減少對RAM的占用,一般它只需要幾十K的RAM和40K左右的ROM就可以運(yùn)行,這使LwIP協(xié)議棧適合在低端嵌入式系統(tǒng)中使用。常見的嵌入式TCP/IP協(xié)議棧6LwIPLwIP是瑞士計(jì)算機(jī)科學(xué)院7常見的嵌入式TCP/IP協(xié)議棧三種TCP/IP協(xié)議棧的比較LwIP和uC/IP是同量級別的兩個(gè)開源協(xié)議棧,兩者代碼容量和實(shí)現(xiàn)功能相似,LwIP沒有操作系統(tǒng)針對性。而uC/IP協(xié)議最初是針對uC/OS設(shè)計(jì),依賴于操作系統(tǒng)。
從應(yīng)用和開發(fā)的角度看,選擇LWIP更有優(yōu)勢,網(wǎng)上可供參考的文檔資料較多;而uC/IP在文檔支持與軟件升級管理上有很多不足,但是它最初是針對UC/OS而設(shè)計(jì),如果選用UC/OS作為軟件基礎(chǔ)的話,在系統(tǒng)函數(shù)構(gòu)造方面有優(yōu)勢。uIP代碼容量小巧,實(shí)現(xiàn)功能精簡,但也限制了在一些稍高要求場合下的應(yīng)用,如大容量數(shù)據(jù)傳輸。7常見的嵌入式TCP/IP協(xié)議棧三種TCP/IP協(xié)議棧的比較LwIP介紹與源碼獲取LwIP介紹8
lwIPisasmallindependentimplementationoftheTCP/IPprotocolsuitethathasbeendevelopedbyAdamDunkelsattheComputerandNetworksArchitectures(CNA)labattheSwedishInstituteofComputerScience(SICS).
ThefocusofthelwIPTCP/IPimplementationistoreducetheRAMusagewhilestillhavingafullscaleTCP.ThismakinglwIPsuitableforuseinembeddedsystemswithtensofkilobytesoffreeRAMandroomforaround40kilobytesofcodeROM.LwIP介紹與源碼獲取LwIP介紹8lwIPLwIP介紹與源碼獲取9LwIP主要特性LwIP的版本較多,新的版本通常是對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,動態(tài)主機(jī)配置協(xié)議;SNMP,簡單網(wǎng)絡(luò)管理協(xié)議;AUTOIP,IP地址自動配置;PPP,點(diǎn)對點(diǎn)協(xié)議,支持PPPoE。LwIP介紹與源碼獲取9LwIP主要特性LwIP的版本較多,LwIP介紹與源碼獲取10源碼獲取訪問:/releases/lwip/LwIP源碼獲取LwIP介紹與源碼獲取10源碼獲取訪問:LwIP源碼獲取11LwIP源碼組織架構(gòu)與移植LwIP源碼文件組織LwIP文件目錄的組織結(jié)構(gòu)如下圖所示:其中,doc文件夾中為LwIP介紹、移植與編程說明文檔;test文件夾中為LwIP提供的一些測試程序;
src文件夾中包含了LwIP的源碼。11LwIP源碼組織架構(gòu)與移植LwIP源碼文件組織LwIP文12doc文件目錄解析LwIP|—doc|—contrib.txt:開發(fā)者如何為LwIP做貢獻(xiàn);
|—rawapi.txt:RAW接口編程介紹;|—savannah.txt:獲取最新源碼說明;|—sys_arch.txt:系統(tǒng)抽象層說明文檔(包含移植說明);LwIP源碼組織架構(gòu)與移植12doc文件目錄解析LwIPLwIP源碼組織架構(gòu)與移植13src文件目錄解析LwIP|—src|—api:LwIP為用戶提供的兩種高級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)庫的下載,在ST官網(wǎng)下載;LwIP裸機(jī)移植:1、STM32F207以太網(wǎng)庫添加到基礎(chǔ)工程;(由于官方以太網(wǎng)庫中配有stm32f2x7_eth_conf_template.h,且是針對DP83848編寫的,直接用就可以了);2、LwIP源碼添加到基礎(chǔ)工程;3、DP83848網(wǎng)口芯片的驅(qū)動程序的編寫(根據(jù)板子的實(shí)際情況);4、添加中間文件arch文件以連接LwIP和以太網(wǎng)驅(qū)動;14LwIP源碼組織架構(gòu)與移植LwIP裸機(jī)移植LwIP移植準(zhǔn)15修改文件說明LwIP源碼組織架構(gòu)與RAW接口編程LwIP提供的ethernetif.c文件給出了網(wǎng)絡(luò)接口驅(qū)動的整體框架,用戶需要自己完成的函數(shù)主要有3個(gè),分別是:底層初始化函數(shù)low_level_init()——該函數(shù)用來對網(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修改文件說明LwIP源碼組織架構(gòu)與RAW接口編程LwIP16
在LWIP的源碼中有個(gè)opt.h的文件,這個(gè)文件是裁剪和配置LWIP的,但最好不要直接在里面修改。這里參照網(wǎng)上資料,在lwipopts.h中對功能和性能進(jìn)行裁剪和配置。LwIP源碼組織架構(gòu)與RAW接口編程修改文件說明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é)合起來。程序的執(zhí)行機(jī)制是以回調(diào)函數(shù)為基礎(chǔ)的事件驅(qū)動的,同時(shí)回調(diào)函數(shù)也是被TCP/IP代碼直接調(diào)用的。TCP/IP代碼和應(yīng)用程序的代碼運(yùn)行在同一個(gè)線程里面,在程序代碼的執(zhí)行時(shí)間上更快,而且在運(yùn)行中它也占用更少的內(nèi)存資源。簡單RAW接口編程實(shí)例17RAW接口編程LwIP為用戶提供18回調(diào)函數(shù)
回調(diào)函數(shù)就是一個(gè)通過函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用來調(diào)用其所指向的函數(shù)時(shí),我們就說這是回調(diào)函數(shù)?;卣{(diào)函數(shù)不是由該函數(shù)的實(shí)現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時(shí)由另外的一方調(diào)用的,用于對該事件或條件進(jìn)行響應(yīng)。程序的執(zhí)行是靠回調(diào)函數(shù)來驅(qū)動的。每一個(gè)回調(diào)函數(shù)也只不過是一個(gè)能夠直接被TCP/IP代碼調(diào)用的普通的C語言函數(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)之外的。簡單RAW接口編程實(shí)例18回調(diào)函數(shù)回調(diào)函數(shù)就是一個(gè)通過函數(shù)指針調(diào)19RAW接口編程——UDP服務(wù)器簡單RAW接口編程實(shí)例19RAW接口編程——UDP服務(wù)器簡單RAW接口編程實(shí)例20簡單RAW接
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年氨綸提花布項(xiàng)目投資價(jià)值分析報(bào)告
- 2025年直線直面封邊機(jī)項(xiàng)目可行性研究報(bào)告
- 硅片和硅基材料行業(yè)發(fā)展報(bào)告
- 2024-2025學(xué)年高中生物課時(shí)分層作業(yè)4生命活動的主要承擔(dān)者-蛋白質(zhì)含解析新人教版必修1
- 保安的工作總結(jié)范文(9篇)
- 2020-2025年中國麗江市酒店行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報(bào)告
- 2025-2030年中國汽車自動波紙基摩擦片行業(yè)深度研究分析報(bào)告
- 2025年坑紋地墊行業(yè)深度研究分析報(bào)告
- 2024年中國網(wǎng)絡(luò)社群經(jīng)濟(jì)研究報(bào)告
- 生物燃料訂貨合同范本
- 姜曉龍-麥田除草劑愛秀的開發(fā)-先正達(dá)
- 部編人教版三年級下冊語文:荷花課件
- 多聯(lián)機(jī)空調(diào)系統(tǒng)設(shè)計(jì)課件
- 螺紋牙強(qiáng)度校核計(jì)算
- 技術(shù)規(guī)范書柴油發(fā)電機(jī)組
- 青島科技大學(xué)成人大?!豆ど唐髽I(yè)管理實(shí)訓(xùn)報(bào)告》
- 低鉀血癥最新版本最新課件
- 2023年陜西延長石油礦業(yè)有限責(zé)任公司招聘筆試題庫及答案解析
- YY/T 1792-2021熒光免疫層析分析儀
- GB/T 39235-2020豬營養(yǎng)需要量
- GB/T 30799-2014食品用洗滌劑試驗(yàn)方法重金屬的測定
評論
0/150
提交評論