,
(西安工程大學(xué) 電子信息學(xué)院,西安 710048)
隨著工業(yè) 4.0 的提出和工業(yè)以太網(wǎng)的普及,越來(lái)越多的工業(yè)設(shè)備急需接入 Internet[14-15]。 以太網(wǎng)是嵌入式系統(tǒng)的一個(gè)重要模塊[8]。實(shí)現(xiàn)嵌入式設(shè)備的互聯(lián)必須要有網(wǎng)絡(luò)協(xié)議的支持[4]。LwIP在嵌入式通信中占有很重要的地位,主要是由于其占用資源較少。實(shí)驗(yàn)表明,運(yùn)行該協(xié)議只需要20 KB的RAM和40 KB的ROM[2]。LwIP協(xié)議為數(shù)據(jù)通信提供了基礎(chǔ)[5]。pbuf結(jié)構(gòu)對(duì)于LwIP而言是非常重要的,它關(guān)系到數(shù)據(jù)存放的問(wèn)題,由于不同類型pbuf的內(nèi)存分配方式有所不同,那就意味著將會(huì)儲(chǔ)存不同類型的數(shù)據(jù)包。如果對(duì)pbuf沒有一個(gè)深刻的了解和認(rèn)識(shí),就不能靈活地運(yùn)用pbuf的類型。靈活運(yùn)用pbuf的類型對(duì)于數(shù)據(jù)包的接收和發(fā)送是非常重要的[13],如果不能合理地分配儲(chǔ)存空間的大小和pbuf類型,可能導(dǎo)致數(shù)據(jù)丟失和空間的浪費(fèi)。為了解決上述問(wèn)題,本文對(duì)pbuf結(jié)構(gòu)進(jìn)行了深度分析,并設(shè)計(jì)了內(nèi)存分配實(shí)驗(yàn)。
LwIP是瑞士計(jì)算機(jī)科學(xué)院開發(fā)的一套用于嵌入式系統(tǒng)的開源TCP/IP協(xié)議棧[7,12],用于嵌入式系統(tǒng)的開放源代碼的 TCP/IP 協(xié)議棧[8]。 LwIP提供一系列函數(shù)實(shí)現(xiàn)IP、TCP、UDP等操作[10]。對(duì)數(shù)據(jù)包如何進(jìn)行處理,在LwIP“輕型IP協(xié)議(Light Weight IP)”[21]中是非常重要的一個(gè)環(huán)節(jié)。在網(wǎng)卡驅(qū)動(dòng)編寫時(shí)最核心的部分是數(shù)據(jù)的存儲(chǔ)與傳輸方式[6]。而在LwIP中主要利用4種不同類型的pbuf來(lái)對(duì)數(shù)據(jù)包進(jìn)行分類管理。
由于實(shí)際存入pbuf結(jié)構(gòu)的數(shù)據(jù)可能會(huì)很大,所以需要由多個(gè)pbuf才可以實(shí)現(xiàn)對(duì)數(shù)據(jù)包的存放。這些pbuf可以是相同的類型,也可以是多種類型的混合使用。pbuf的……