喬富強(qiáng)
【摘要】 隨著科技水平的發(fā)展,嵌入式的網(wǎng)絡(luò)通信也隨之發(fā)展了起來,因此,我們要更加深入地對嵌入式TCP/IP協(xié)議進(jìn)行探究和更深層次的功能實(shí)現(xiàn)。本文對TCP/IP協(xié)議棧進(jìn)行了分析,論述如何實(shí)現(xiàn)嵌入式以太網(wǎng)數(shù)據(jù)通信。
【關(guān)鍵詞】 嵌入式 TCP/IP協(xié)議 以太網(wǎng)
一、引言
嵌入式網(wǎng)絡(luò)通信在各個方面都得到了非常廣泛的運(yùn)用。目前最常見的就是總線和USB數(shù)據(jù)傳輸方式,傳輸速度即使可以達(dá)到較快的水平,但是其并不能夠滿足長距離的數(shù)據(jù)傳輸。因此,以太網(wǎng)能夠彌補(bǔ)其在數(shù)據(jù)傳輸方面的缺陷。以太網(wǎng)能夠?qū)崿F(xiàn)一百米距離點(diǎn)對點(diǎn)的數(shù)據(jù)傳輸,如果要實(shí)現(xiàn)更加遠(yuǎn)距離的數(shù)據(jù)傳輸,則需要使用路由器或者交換機(jī)來完成。此文基于對CP2200嵌入式TCP/IP協(xié)議進(jìn)行探究,并實(shí)現(xiàn)以太網(wǎng)嵌入式系統(tǒng)設(shè)計(jì)。
二、嵌入式TCP/IP協(xié)議的探究與實(shí)現(xiàn)
TCP/IP協(xié)議棧從上到下分別是由應(yīng)用層、運(yùn)輸層、網(wǎng)絡(luò)層和網(wǎng)絡(luò)接口層所組成的四層結(jié)構(gòu),每一層各司其職,都有著不同的網(wǎng)絡(luò)協(xié)議。依據(jù)軟件實(shí)際使用的情況,在嵌入式系統(tǒng)當(dāng)中為了達(dá)到網(wǎng)絡(luò)通信的目的,需要對TCP/IP協(xié)議族進(jìn)行裁剪。在對軟件進(jìn)行初始化的時候,也對單片機(jī)同時進(jìn)行了初始化,其中包括對系統(tǒng)時鐘、定時器、端口和串口進(jìn)行了初始化。當(dāng)然還有CP2200進(jìn)行初始化,其中包括對MAC層和物理層進(jìn)行初始化,并且中斷使能。
在TCP/IP協(xié)議棧當(dāng)中,運(yùn)用層包含HTTP協(xié)議,運(yùn)輸層包含TCP協(xié)議和UDP協(xié)議,網(wǎng)絡(luò)層包含ARP協(xié)議、IP協(xié)議和ICMP協(xié)議。以下是嵌入式TCP/IP協(xié)議的每個模塊的實(shí)現(xiàn)流程:
1、HTTP協(xié)議模塊。HTTP協(xié)議的發(fā)送函數(shù)http_send()即是TCP協(xié)議的發(fā)送函數(shù)和數(shù)據(jù)信息的結(jié)合,但是http_ send()函數(shù)主要是實(shí)現(xiàn)設(shè)計(jì)網(wǎng)頁內(nèi)容,JPEG的圖片和HTML(超文本標(biāo)記語言)等信息的使用依靠其函數(shù)實(shí)現(xiàn)。
2、TCP協(xié)議模塊。TCP協(xié)議的發(fā)送函數(shù)tcp_send()是需要發(fā)送一個不包含任何數(shù)據(jù)的TCP報文,其作用是能夠?qū)ψ止?jié)頭和校驗(yàn)和進(jìn)行處理。通過對時間功能的設(shè)定,TCP協(xié)議的重傳函數(shù)tcp_retransmit()能夠?qū)崿F(xiàn)對數(shù)據(jù)最多為兩次重傳的傳輸功能,實(shí)現(xiàn)傳輸功能的應(yīng)用程序是依靠傳送頁數(shù)據(jù)而實(shí)現(xiàn)的,即是HTTP服務(wù)程序。TCP協(xié)議的?;詈瘮?shù)tcp_ inacivity()是沒半秒運(yùn)行一次,當(dāng)連接正在建立的狀態(tài)下,保活期滿了的時候并且沒能被再次使用,就會中斷連接。TCP協(xié)議的接收函數(shù)tcp_rcve()實(shí)現(xiàn)對字節(jié)頭和校驗(yàn)和的運(yùn)算,進(jìn)而對HTTP服務(wù)程序和其連接狀態(tài)等情況進(jìn)行斷定,最后進(jìn)行TCP有限的狀態(tài)機(jī)判斷數(shù)據(jù)包的程序。
3、UDP協(xié)議模塊。UDP協(xié)議的發(fā)送函數(shù)udp_send()能夠?qū)崿F(xiàn)對字節(jié)頭和校驗(yàn)和進(jìn)行處理,其接收函數(shù)udp_rcve()是對所接收的UDP報文進(jìn)行處理,如果沒有受到UDP報文數(shù)據(jù),就需要發(fā)送ICMP終點(diǎn)不可到達(dá)報文。
4、ARP協(xié)議模塊。ARP協(xié)議的發(fā)送函數(shù)arp_send(),在發(fā)送請求報文的時候,對于不清楚目的物理地址的,則是廣播報文;在發(fā)送應(yīng)答報文的時候,接收的一方的目的物理地址需要添加物理地址。ARP協(xié)議的重傳函數(shù)arp_retransmit()能夠?qū)崿F(xiàn)當(dāng)其發(fā)出ARP請求之后的半秒時間內(nèi)沒有任何響應(yīng),則進(jìn)行再一次發(fā)送的功能,但是當(dāng)兩次發(fā)送沒有得到響應(yīng)就會對報文進(jìn)行刪除。ARP協(xié)議的緩存更新函數(shù)age_ arp_cache()能夠每一分鐘更新一次。ARP的解析函數(shù)arp_ resolve()能夠?qū)λl(fā)送的IP報文目的IP地址進(jìn)行解析,如果發(fā)送IP地址和目的IP地址都不在相同的一個網(wǎng)絡(luò)當(dāng)中,那么此IP地址是網(wǎng)關(guān)IP地址,然后在緩存表當(dāng)中對其進(jìn)行查找,如果找不到就需要發(fā)送ARP請求報文。ARP協(xié)議的接收函數(shù)arp_rcve()能夠?qū)崿F(xiàn)對報文進(jìn)行接收或者應(yīng)答,對緩存表需要進(jìn)行更新和重新定時,如果所接受的報文是應(yīng)答報文,則需要發(fā)送等候地址解析的IP報文,但是所接收到的報文是請求報文 ,則需要發(fā)送ARP應(yīng)答報文。
5、IP協(xié)議模塊。IP協(xié)議的發(fā)送函數(shù)ip_send9()能夠?qū)崿F(xiàn)對發(fā)送IP報文的20字節(jié)頭和校驗(yàn)和進(jìn)行處理,進(jìn)而使用網(wǎng)絡(luò)接口層進(jìn)行發(fā)送。IP協(xié)議接收函數(shù)ip_rcve()能夠根據(jù)版本情況和所接收報文的種類轉(zhuǎn)移到相應(yīng)的接收函數(shù)來處理。
6、ICMP協(xié)議模塊。ICMP協(xié)議模塊的接收函數(shù)icmp_ rcve()是實(shí)現(xiàn)對ping請求的接收進(jìn)行處理,并且處理ICMP不同種類的報文。其中Ping命令請求信息函數(shù)ping_send()是用來檢測發(fā)送接收兩方的接收情況。
三、結(jié)言
綜上所述,此文對TCP/IP的網(wǎng)絡(luò)結(jié)構(gòu)中的各層協(xié)議模塊進(jìn)行探究,基于網(wǎng)絡(luò)控制芯片CP2200的以太網(wǎng)接口和單片機(jī)C8051F340,并用編程語言來實(shí)現(xiàn)嵌入式以太網(wǎng)通信,同時進(jìn)一步通過對各個層協(xié)議的裁剪,實(shí)現(xiàn)嵌入式以太網(wǎng)的數(shù)據(jù)通信。根據(jù)現(xiàn)階段來看,嵌入式網(wǎng)絡(luò)通信基本上都是依靠TCP/IP協(xié)議來實(shí)現(xiàn)的,嵌入式設(shè)備和網(wǎng)絡(luò)兩者相結(jié)合是嵌入式系統(tǒng)今后發(fā)展的主要方向。因此,我們要更加深入地對嵌入式TCP/IP協(xié)議進(jìn)行探究以及更深層次的功能實(shí)現(xiàn)。
參 考 文 獻(xiàn)
[1]王樹森,王希杰,劉秋菊.嵌入式Web遠(yuǎn)程糧情監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[J].自動化儀表,2013(10):243-247.
[2]王寶寶,余世明,王振宇.嵌入式Internet中Nagle算法及其應(yīng)用研究[J].中國工程科學(xué),2014(02):101-105.