999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于LM3S8962的TCP/IP協議棧的設計與實現?

2020-05-15 05:19:42呂海燕張立民
計算機與數字工程 2020年2期
關鍵詞:系統

劉 凱 呂海燕 張立民

(海軍航空大學航空基礎學院 煙臺 264001)

1 引言

隨著嵌入式系統和網絡接入方法的日益發展,越來越多的嵌入式系統連接至網絡,作為網絡終端參與數據交互、信息處理[1~2]?;?TCP/IP 的以太網是一種標準開放式的網絡,由于其通用性強,組網容易,能夠實現遠距離數據傳輸,容易實現資源共享,受到了廣泛的應用和支持[3~4]。因此,基于以太網的嵌入式系統逐漸成為了當前片上系統(Sys?tem on Chip,SoC)[5]的發展熱點。但是,由于嵌入式系統中硬件資源有限,如果移植完整的TCP/IP協議棧,會大大增加系統運行載荷,導致系統運行緩慢且數據通信不暢。因此,需要依據嵌入式系統特點,有針對性地選擇TCP/IP協議棧精簡方案,從而實現網絡穩定通信與系統高效運行的平衡。

2 TCP/IP協議棧設精簡設計

2.1 LM3S8962簡介

LM3S8962[6~7]微控制器是德州儀器(TI)公司提供的一款具有32位高性能運算能力的基于ARM?CortexTM-M3的控制器,其優勢還在于能夠方便地運用多種ARM的開發工具和片上系統(SoC)的底層IP應用方案。另外,該微控制器使用了兼容ARM Thumb?的Thumb2指令集來減少存儲容量的需求,并以此達到降低成本的目的。最后,LM3S8962微控制器與Stellaris?系列的所有成員是代碼兼容的,這為用戶提供了靈活性,能夠適應各種精確的需求。

LM3S8962微控制器的主要特性之一是具有10/100以太網控制器,它遵循IEEE 802.3-2002規范,遵循IEEE 1588-2002精確時間協議(PTP)。在100Mbps和10Mbps速率運作下支持全雙工和半雙工的操作方式,集成10/100Mbps收發器(PHY),自動的MDI/MDI-X交叉校驗,可編程MAC地址[8~9]。

2.2 TCP/IP協議棧設計思路

針對LM3S8962已經具備10/100以太網控制器特點,需要在其硬件以太網控制器的基礎上構建協議包系統,從而完成TCP或UDP數據包的處理,實現TCP/IP協議棧的通信。

1)以太網協議

以太網數據由以太網幀來傳送[10]。以太網的沖突退避算法是由硬件自動執行的,在軟件設計中可不用考慮。類型表示上層協議類型,本協議棧只處理這兩種類型的以太網幀:IP包、ARP包。

2)地址解析協議(ARP)和反地址解析協議(RARP)

為了簡化TCP/IP協議棧內容,本協議棧僅僅涉及了使用固定IP地址的方式實現以太網通信。因此,在本協議棧中無需實現RARP,僅僅需要對ARP包進行處理。ARP請求格式如圖1所示。

圖1 ARP請求應答格式

以太網報頭中的前兩個字段是以太網的源地址和目的地址。目的地址為全1的特殊地址是廣播地址。兩個字節長的以太網幀類型表示后面數據的類型。如果以太網報文內容為ARP請求或應答,該字段的值為0×0806。對于一個ARP請求,除目的端硬件地址以外的所有其他字段都有填充值。當系統收到一份目的端為本機的ARP請求報文后,它就把硬件地址填進去,然后用兩個目的端地址分別替換兩個發送端地址,并把操作字段置為2,最后把它發送回去。

3)控制報文協議(ICMP)

針對嵌入式應用系統的特點,雖然ICMP可以提供很好的網絡狀態報告,但對于本系統中嵌入式軟件而言,只需要實現一個“回顯應答”(即Ping應答)的功能即可。

Ping是Internet上最常用的調試工具,它的目的是為了測試另一臺主機是否可達[11~12]。該程序發送一份ICMP回顯請求報文給目的IP設備,并等待返回ICMP回顯應答。用該命令,可以方便地測試儀表與網絡是否連通。為實現響應ping命令,本協議支持的ICMP類型如下:

type=8:ICMP Echor(回送)回答報文;

type=0:ICMP Echor請求。

4)網際協議(IP)

IP數據包的格式如圖2所示。考慮到本系統網絡數據較小,故在IP協議實現時沒有支持有選項字段的IP包和分片操作。

圖2 IP數據包格式

8位協議字段表示上層協議類型,在本項目中只要處理兩種類型的IP包:ICMP包、UDP包。

5)用戶數據報協議(UDP)

UDP分段的頭部格式如圖3所示。

圖3 UDP分段的頭部格式

在本協議棧中,設計了完整的UDP協議,并實現了與計算機的Socket通信。

從上面可以得出,經過了剪裁之后在本系統中應用的TCP/IP協議棧層次如圖4所示。

圖4 TCP/IP協議棧層次設計

3 精簡TCP/IP協議棧實現

3.1 硬件層設計

該層主要為LM3S8962以太網底層硬件驅動,包含以太網中斷響應函數EthernetIntHandler()、硬件初始化函數InitNic()、處理接收數據函數Rec?Packet()、以太網底層發送數據函數Send_Packet()。

LM3S8962自帶的函數庫包含了基本的以太網通信控制函數,故該協議是在其函數庫基礎上實現的。

1)InitNic()

要實現網絡的驅動,必須對LM3S8962的各個寄存器進行初始化和配置。在對LM3S8962進行初始化之前需要進行硬件復位和軟件復位;然后進行寄存器設置。LM3S8962網絡初始化的順序如圖5所示。

圖5 LM3S8962網絡初始化流程

2)EthernetIntHandler()函數

該函數參數為void,主要是作為接收中斷響應函數調用RecPacket()函數。由于該協議是在μC/OS-Ⅱ基礎上設計的,在該函數最后進行了任務的調度。

3)RecPacket()函數

該函數的參數為void,該函數需調用LM3S8962的庫函數EthernetPacketGetNonBlocking Get(),其具體功能是從以太網控制器獲取數據包,返回接收數據包的長度。

4)Send_Packet()函數

在協議棧中設計了鏈表_pkst,其結構如圖6所示。協議棧利用它作為數據讀取和發送的數據結構。

圖6 _pkst結構

Send_Packet()函數的輸入參數為數據鏈初始指針,返回值為void。

3.2 鏈路層設計

數據鏈路層中包含地址解析函數PRO?CESS_ARP_REC(),網絡的收發操作函數Send_IP_LLC()和 Rec_Ethernet_Packet(),還有一些輔助函數,如設置網絡地址函數SetNetPort()等。

1)PROCESS_ARP_REC()函數

2)Send_IP_LLC()函數

該函數能夠為IP數據包的目標IP查找MAC地址并將其發送出去。輸入參數為發送結構指針和目標IP地址指針。

3)Rec_Ethernet_Packet()函數

該函數被RecPacket()函數調用,其功能是處理接收到的數據包,并將其數據指針傳遞到IP層。其輸入參數為接收數據指針;輸出參數為0表示發送失敗,1表示發送成功。

3.3 網絡層設計

網絡層包括IP包的接收和發送控制,ICMP請求報文的接收和 ICMP應答報文的發送控制[13~14]。考慮到實際數據量較少,在IP數據包的處理上沒有實現分片處理。

在IP協議中,創建了消息隊列RecUdpQFlag和信號量SendFlag。消息隊列的用處:如果有UDP數據包傳遞到IP協議層,則釋放該消息隊列,同時該消息隊列保存了UDP數據包的存儲地址;信號量則在Send_Ip_Frame()函數中使用。具體使用過程:首先判斷該信號量是否當前可用,以判斷該函數能否獲得網絡發送的權利,如果該時間可以進行網絡數據發送,則在IP數據包發送完畢以后釋放信號量。

1)IP_PROCESS()函數

該函數的輸入參數為接收數據結構的指針;返回值表明處理結果,如果為1,則數據處理正確,如果為0表明處理失敗。

2)Send_Ip_Frame()函數

該函數實現的是IP數據包的發送。輸入參數由發送地址指針和目標IP地址組成,輸出參數表明發送結果是否成功。

在ICMP協議中,系統實現了Ping命令的響應,即客戶端能夠判斷接收服務端的ICMP Echo報文,同時向服務端回送一個ICMP Echo Reply報文完成Ping。

3)ICMP_PROCESS()函數

該函數的功能是對ICMP數據報進行處理。輸入參數為ICMP數據報指針,輸出參數表示處理結果。

3.4 運輸層設計

鑒于LM3S8962內部以太網控制器穩定性高、通信鏈路延時低的優勢,同時為了降低通信負載,在本TCP/IP協議棧中運輸層僅僅使用UDP協議。為滿足通信要求,在該層設計了兩個結構udp_sub_socket和 udp_socket,其結構如圖 7、8 所示,并且定義了全局Socket變量。

udp_socket UdpStatus;

圖7 udp_sub_socket結構

圖8 udp_socket結構

1)UDP_Process()函數

該函數的輸入參數為接收UDP數據包指針,輸出參數表明處理結果。

2)UDP_Send()函數

該函數實現了UDP數據包的發送,輸入參數由數據指針、目的IP和網絡端口組成。

3.5 應用層設計

對于網絡數據的接收,該協議棧在系統中的具體使用步驟如下:

1)等待消息隊列RecUdpQFlag。如果消息隊列被釋放了,根據函數IP_PROCESS()處理流程,表明存在UDP數據包。調用UDP_Process(),相應的代碼如下所示:

UdpTemp = OSQPend (RecUdpQFlag, 0,&eer);

if(eer==OS_NO_ERR)

Udp_Process((Rec_Ptr*)UdpTemp);

2)等待UdpStatus中的信號量UdpSemRec,通過UDP_Process()保存后的數據指針得到UDP數據包中的數據。

3)如果要求發送網絡數據,調用UDP_Send()函數即可。

4 TCP/IP協議棧測試

為了驗證嵌入式TCP/IP協議棧工作性能,采用兩種方式進行測試,1是Ping測試,2是將其應用于數據采集節點測試通信效果。

4.1 Ping測試

Pin命令主要是對網絡層進行測試[15~16]。在測試中,客戶端設定的IP地址是192.168.0.18,當服務器發出Ping命令時,客戶端給出回應。從圖9中可以看出,傳遞的數據并沒有丟失,并且傳輸的時延較小,證明通信性能較好??梢宰C明IP層、物理層、數據鏈路層是連通的,能夠保證客戶端與服務器進行正常通信。

圖9 ICMP的測試結果

4.2 數據采集節點通信測試

在本系統中,數據采集節點通過以太網完成與上位機的信息交互。上位機進行UDP測試工具如圖10所示。

圖10 上位機測試UDP包結果

經過實驗驗證,數據采集節點能夠及時將所采集的數據通過網絡以UDP包的形式傳遞給上位機,上位機根據節點傳遞的數據及時作出反映。

5 結語

針對LM3S8962芯片特點,采用了模塊化設計方法設計了TCP/IP協議棧。根據實際系統通信需要,對各個棧功能進行精簡,去掉了反地址解析協議,簡化了控制報文協議和TCP包處理。既保證了以太網通信需求,又節約了嵌入式系統資源。通過相關實驗驗證,該協議棧的設計達到了嵌入式系統預期要求。本文提出的這種基于嵌入式系統的精簡TCP/IP協議棧,對LM3S8962等同類型芯片的以太網通信等工程實踐提供了參考借鑒,并且對該領域中的相關技術研究也具有一定的指導意義。

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: 亚洲成人高清无码| 亚洲中文无码h在线观看| 国产极品美女在线| 日韩欧美国产中文| 国产国产人成免费视频77777 | 欧日韩在线不卡视频| 四虎永久免费地址| 狠狠色丁香婷婷综合| 国产在线精品香蕉麻豆| a级高清毛片| 国产成人综合亚洲欧美在| 中文字幕免费播放| av一区二区三区在线观看| 亚洲精品波多野结衣| 亚洲无码高清一区二区| 国产成人免费高清AⅤ| 亚洲国产精品日韩av专区| 免费精品一区二区h| 91精品视频在线播放| 中文字幕在线视频免费| 亚洲精品爱草草视频在线| 国产av色站网站| 亚洲侵犯无码网址在线观看| 国产女人喷水视频| 无遮挡一级毛片呦女视频| 久久网综合| 色婷婷狠狠干| 国产精品永久在线| 国内精品91| 人人妻人人澡人人爽欧美一区| 日韩免费成人| 伊人中文网| 女人一级毛片| 午夜限制老子影院888| 亚洲精品第五页| 日韩欧美综合在线制服| 欧美中文字幕无线码视频| av大片在线无码免费| 最新日本中文字幕| 国产一区二区三区在线观看免费| 成人无码一区二区三区视频在线观看| 免费国产高清精品一区在线| 自拍亚洲欧美精品| 乱人伦中文视频在线观看免费| 夜夜爽免费视频| 一本综合久久| 欧美不卡视频一区发布| 亚洲欧美另类色图| 国产毛片不卡| а∨天堂一区中文字幕| 精品成人免费自拍视频| 日韩a级片视频| 好吊色国产欧美日韩免费观看| 在线日本国产成人免费的| 91激情视频| 国产高清国内精品福利| 日韩一区二区在线电影| 欧美日韩中文字幕在线| 91精品在线视频观看| 亚洲国产理论片在线播放| 国产精品女同一区三区五区 | 中文字幕在线视频免费| 99久久亚洲综合精品TS| 欧美日韩第三页| 免费人成又黄又爽的视频网站| 久久综合伊人 六十路| 试看120秒男女啪啪免费| 国产美女一级毛片| 国产亚洲视频中文字幕视频| 996免费视频国产在线播放| 国产欧美日韩18| 国产真实乱人视频| 在线不卡免费视频| 男女精品视频| 18禁色诱爆乳网站| 亚洲欧美不卡视频| 99ri精品视频在线观看播放| 亚洲欧美在线综合图区| 女人毛片a级大学毛片免费 | 青青草国产一区二区三区| 久久精品娱乐亚洲领先| 国产黑丝一区|