熟女人妻水多爽中文字幕,国产精品鲁鲁鲁,隔壁的少妇2做爰韩国电影,亚洲最大中文字幕无码网站

技術頻道

娓娓工業
您現在的位置: 中國傳動網 > 技術頻道 > 應用方案 > 輕量級TCP/IP協議棧OpenTCP的移植與應用

輕量級TCP/IP協議棧OpenTCP的移植與應用

時間:2008-05-19 09:09:00來源:zhangting

導語:?隨著工業控制和計算機技術的發展,對數據的傳輸提出了更高的要求,各種總線技術的發展日新月異。
引 言 隨著工業控制和計算機技術的發展,對數據的傳輸提出了更高的要求,各種總線技術的發展日新月異。其中,采用以太網技術完成數據的遠程通信并連入Internet,已經成為工業和家用領域的重要發展方向,將來幾乎所有上業設備和家電均需要具有Internet連接能力。目前,以MCU等構成的嵌入式系統已廣泛應用于工業、家電等各個領域,嵌入式系統對網絡應用的要求也越來越高,因此在嵌入式系統中實現TCP/IP協議,已經成為嵌入式系統領域的研究熱點。 傳統的TCP/IP協議在資源有限的嵌入式系統中實現起來很困難,必須把大量的資源花在保證數據傳送的可靠性以及數據流量的控制上,因而在實時性要求比較高的嵌入式領域中,不能滿足實時要求。因此,研究并改進嵌入式TCP/IP協議棧以滿足嵌入式系統的高性能要求,具有重要的現實意義。 1、硬件平臺和OpenTCP簡介 1.1 硬件平臺 該系統硬件部分由ADE7758高性能電能計量芯片、ARM處理器、2 MB NOR Flash、64 MB SDRAM和以太網接口等組成。ADE7758內部集成了6路16位△-∑ADC、高性能DSP、電壓基準及溫度傳感器等電路,在1000:1動態范圍內誤差小于0.1%;提供有功、無功及視在電能,電壓、電流有效值及波形采樣等數據;三相三線/三相四線兼容;DSP內部對無功電能進行了補償;提供獨立的有功電能及無功電能脈沖輸出,非常適合三相電能計量。被測三相電壓、電流經傳感器和調理電路后,送入ADE7758的A相、B相、C相電壓和電流輸入端;經ADE7758計算后,轉換為有功功率、無功功率、視在功率、復功率等電能信息,數據通過ADE7758的SPI接口輸出。MCU讀出電能數據信息并處理后,送LCD顯示和網絡接口。硬件原理框圖如圖1所示。
為了通過計算機遠程監控電能數據,軟件部分采用了OpenTCP作為協議棧完成數據通信。OpenTCP是英國Vi-ola公司開發的用于8/16位MCU的源碼開放的TCP/IP協議棧。與通用的嵌入式TCP/IP協議棧(如lwIP、uIP)相比,其代碼更為精簡,不需要操作系統的支持,可以根據需要進行裁剪,全部用ANSI C編寫,支持Ethernet、SLIP、ARP、RARP、ICMP、TCP、UDP;應用層支持TFTP、TEL-NET、HTTP、SMTP、POP3、DNS等,對于應用層協議都提供callback接口,可方便用戶的應用程序設計。 1.2 協議棧的特點 通用計算機上運行的TCP/IP協議棧過于復雜,需占用大量系統資源,而嵌入式應用系統的資源往往都非常有限。因此,需要將傳統的TCP/IP協議棧加以簡化。在設計中OpenTCP為提高協議棧的運行效率,在保持高性能的同時,針對嵌入式系統的要求對TCP/IP進行了部分精簡和優化,使其能在各種MCU體系結構上實現,減少對資源的消耗,以滿足嵌入式應用的要求。具體特點如下: ①由于嵌入式系統對網絡功能的要求各有不同,OpenTCP可以根據應用的要求選擇必要的協議,縮減程序代碼的大小和對數據存儲器的占用。 ②根據嵌入式系統應用環境的特點,一般其作為服務器端,與之通信的都是實現了完整TCP/IP的設備,通信較為可靠,不需要復雜的路由選擇、IP分片、重裝、TCP流量控制、擁塞控制等。因此,在OpenTCP中簡化了TCP、IP等協議的實現,取消了所有的IP選項和TCP選項(包括IP的分段);TCP的流量控制窗口長度為1,即報文傳輸是基于停止一等待方式。避免了復雜的流量控制和分段處理,可以滿足嵌人式網絡應用的要求。TCP狀態機也進行了一定的簡化處理。 ③OpenTCP針對TCP/IP協議中對性能影響最大的部分——緩沖區的管理進行了優化,采用零拷貝技術,即在網卡驅動程序和協議之間沒有數據拷貝的過程,以減少對系統資源的占用,簡化緩沖區的管理,提高實時性。 TCP/IP具有層次性,每一層都有自己的數據格式。數據在各層之間傳送時需要不斷地進行打包和解包處理,以及數據的拷貝,會大大增加系統對存儲器和運算能力的開銷,降低系統的性能。在OpenTCP協議棧中,每一層都沒有用于數據傳輸的緩沖區,協議棧之間傳遞的是數據指針。接收數據時,每一層將本層的數據處理完畢后,將處理過的數據指針指向上一層的數據的頭部;發送數據時,也是以類似的過程來實現。 為了減小網絡對系統存儲器的需求,采用靜態分配技術,在網絡初始化時靜態分配數據緩沖區,設置專門的發送和接收緩沖區,大小一般大于網絡的MTU值。該值可根據網絡環境調整,在本系統中采用的底層網絡接口為以太網,設置接收緩沖區大小為1 500字節。當一個數據包來到時,網絡設備驅動將其放在接收緩沖區里,調用TCP/IP協議棧。如果數據包里有數據,TCP/IP協議就會通知相應的應用程序。如果應用程序需要發送數據,OpenTCP的每一層協議都有自己的數據結構用于本層報文頭部處理,發送緩沖區的只用來存放發送的數據。發送數據時,應用程序把數據寫入緩沖區,設備驅動程序立即發送報文頭部和數據到網絡上。 ④OpenTCP協議棧可以作為一個任務運行在多任務的系統里,也可以采用前后臺方式作為一個主程序運行在一個單任務系統里。其主循環控制都在重復地做一件事:檢查是否有數據幀到達,如果一個幀到來,則立即根據幀的類型調用對應的輸入處理函數。 ⑤應用程序接口決定了應用程序和TCP/IP協議棧連接的方式。最常用的TCP/IP API是BSD SOCKETAPI,通常用在Unix系統中,它需要多任務操作系統的支持。OpenTCP使用了事件驅動接口來響應特定事件。應用程序作為C函數運行在協議棧上,被調用來響應特定事件。當數據被接收或者分配一個連接時,這些函數被調用。應用程序只需提供一個回調函數,因此用戶應用程序的編寫和調試非常方便。 ⑥OpenTCP提供非常方便的調試手段,在每一層協議的關鍵部分都可以通過串口輸出,使用戶及時了解協議的運行情況。由于TCP/IP協議的復雜性,很難復現同一種錯誤,此時只需在編譯程序時打開調試選項就可以實時監控協議棧的運行情況。調試完畢后,取消調試選項即可恢復協議的運行效率。 2、軟件移植過程和對協議棧的改進 2.1 校驗和的改進 TCP/IP協議處理過程中主要的運算量集中在3個部分:應用程序將數據拷貝到RAM;將RAM中的數據包拷貝到網絡設備的發送緩沖區;計算校驗和。前兩部分在該協議中通過零拷貝技術改進運行效率,最后一部分是利用C語言來實現的。TCP/IP協議中多處用到了對校驗和的計算,在IP層需要對20字節的報頭進行校驗,在TCP/UDP處理中是對12個字節組成的偽首部和數據進行校驗。OpenTCP中采用的是每一個字節逐個計算校驗和的算法,雖然這樣可以適應8/16位等多種不同的處理器體系結構,但是卻極大地影響了校驗的速度和效率。為了充分發揮ARM7處理器的性能,采用了ARM匯編語言的優化算法,借鑒Linux核心代碼中處理校驗和的源程序,將Linux gcc中AT&T格式的算法改寫為ADS1.2的標準寫法,經過測試,大大提高了計算的效率。 2.2定時器的設置 TCP/IP協議中需要多種定時器來完成ARP緩存的刷新,TCP協議中也需要利用定時器實現重傳等機制。OpenTCP采用的是統一的定時器處理方式,在協議初始化之前初始化一個定時器池,其中定時器的個數可以根據應用的要求來設置。當協議需要使用定時器時,首先在定時器池中申請一個定時器并設置超時時間,定時器的超時由硬件定時器中斷處理函數完成。當檢查到有超時的事件產生時,協議處理函數進行超時處理。S3C44B0X內部有6個定時器,這里選擇定時器5作為該協議中與時間有關的事件的定時處理,定時器的周期為10 ms。 2.3網卡驅動程序設計 OpenTCP協議棧具有很好的可移植性,只需要在軟件中設計幾個宏定義,分別實現以太網數據的收發等功能。該協議棧已經提供了CS8900的驅動程序,由于使用的是RTL8019網卡控制器,針對該芯片的特點編寫了相應的驅動程序。將RTL8019內部的RAM分為幾個 部分,分別作為接收緩沖區,ARP、ICMP、TCP和UDP協議的數據發送區。這里將各個不同協議的發送緩沖區分開,在實際應用過程中發現調試較為方便。 RTL8019AS的驅動程序設計中將協議中SEND_NETWORK_B(c)、NETWORK_CHECK_IF_RECEIVED()和NETWORK_RECEIVE_INITIALIZE(c)等幾個宏定義為對應函數,就可以完成底層的驅動程序設計。 RTL8019AS的驅動程序設計主要包括3個部分:NE2000init()完成芯片的初始化,包括設置網卡MAC地址、收發緩沖區的地址和大小等;NE2000receive()和NE2000send()分別完成數據的接收和發送。 另外,OpenTCP的設置以宏定義的形式單獨包含在config.h的頭文件中,用戶修改很方便。用戶可以根據自己的要求更改MAC和IP地址、網關地址、收發緩沖區的大小、UDP/TCP連接的個數、端口的設置,以及ARP表項的大小等。 3、應用設計和小結 協議棧OpenTCP已經成功應用于小型光伏發電站電能計量系統設計中,ARM處理器運行嵌入式Web服務器,可以通過遠程計算機實現對發電站電能參數的實時監控和記錄,并通過TCP協議實現數據的遠程采集。程序調試完成后固化在Flash中,上位機采用“VC+SQL Serv-er”編寫應用程序。在100M快速以太網環境下經過測試,可以完全滿足系統的要求。 OpenTCP作為一種高效的TCP/IP協議棧,利用高性能的處理器系統具有結構簡單、速度快等特點,為各種需要遠程控制或者實現便攜式數據采集的應用場合提供了一個具有較高性價比的設計方案。

標簽:

點贊

分享到:

上一篇:阿爾泰MODBUS模塊在工業廢水...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。

本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。

網站簡介|會員服務|聯系方式|幫助信息|版權信息|網站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動網-工業自動化與智能制造的全媒體“互聯網+”創新服務平臺

網站客服服務咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權所有
粵ICP備 14004826號 | 營業執照證書 | 不良信息舉報中心 | 粵公網安備 44030402000946號

主站蜘蛛池模板: 资溪县| 永吉县| 咸丰县| 绩溪县| 长治县| 庆元县| 齐河县| 富蕴县| 墨竹工卡县| 婺源县| 巍山| 永春县| 井研县| 舞阳县| 沁水县| 巧家县| 五家渠市| 兴城市| 盐山县| 六安市| 呼图壁县| 元江| 永城市| 常宁市| 唐海县| 门头沟区| 桐梓县| 安化县| 扎兰屯市| 仁怀市| 凌海市| 遂平县| 河间市| 南通市| 嵩明县| 岳西县| 布拖县| 清涧县| 错那县| 孟津县| 临海市|