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

ZLIP TCP/IP協議棧在嵌入式系統中的應用*

2013-09-25 03:05:24李威殷志堅
單片機與嵌入式系統應用 2013年12期
關鍵詞:嵌入式設置系統

李威,殷志堅

(江西科技師范大學通信與電子學院,南昌330013)

引 言

隨著嵌入式系統技術的不斷發展,越來越多的應用需要嵌入式系統連接成網絡使用,這就需要一個可應用于嵌入式系統的TCP/IP協議。由32位處理器搭建的嵌入式系統在使用網絡的時候,通常都會運行一個集成有TCP/IP協議棧的操作系統。這樣的TCP/IP協議棧是龐大的,不適用于處理能力和資源都十分有限的8位或16位的處理器搭建的嵌入式平臺,而且由于處理能力和資源有限,8位或16位的處理器搭建的嵌入式系統一般都不運行操作系統。TCP/IP協議棧的透明性掩蓋了其實現的復雜性,系統開發者從無到有搭建一個適用于自己平臺的TCP/IP協議棧是一件艱巨的任務,很多時候從一個項目開發周期來說是不可能實現的。ZLIP TCP/IP協議棧是一種可實現的極小的TCP/IP協議棧,適用于8位或16位的處理器構建的嵌入式平臺。ZLIP協議棧是針對51單片機和Keil C51編譯器其自身的特點(存儲類型、函數指針、重入函數等)設計的,而且ZLIP協議棧是用C語言實現的,方便協議棧的移植。ZLIP協議棧代碼量適中,而且對處理器和RAM等資源要求都較小,這使得ZLIP協議棧可以很好地用于低端處理器搭建的系統上。本文將簡單描述ZLIP協議棧的特點,分析ZLIP的應用接口,并討論嵌入式平臺結合ZLIP作為客戶端系統的應用。

1 ZLIP協議棧特點

目前常用的TCP/IP協議有lwIP、uIP、tinyTCP、ZLIP等幾種,其中lwIP、uIP、ZLIP已經成功在單片機上得到了應用。應用在微處理器上的TCP/IP協議棧中,lwIP算是功能較全面的,但是它的代碼量相對來說比較大,對資源的要求也較高;uIP采用了不保存需要應答的數據包的RAM使用方案,uIP的設計側重于減少代碼量和減少RAM的使用量,相對lwIP來說對系統的資源要求較低,但其沒有和BSD的套接字接口兼容應用層接口較復雜;ZLIP協議棧是以李章林博士為主的開發團隊在南開大學電子應用實驗室開發完成,專門為51單片機設計的,針對Keil C51編譯器設計,它的代碼量和RAM使用量都比較適中,所有的外部變量都使用了xdata類型,全部指針都為明確存儲類型的指針,需要重入的函數已經聲明為reentant,使用KeilC的小模式下編譯,使用類似MFC的CScoket的套接字應用層接口,使用方便。ZLIP支持多TCP連接、多網絡設備。ZLIP是用C語言實現的源碼開放的協議棧,能方便地移植到多任務操作系統和其他CPU下,能方便地替換網絡接口協議和網卡驅動設備,具有很好的通用性。

2 ZLIP協議棧分析

ZLIP協議通過提供一系列的接口函數,實現其與底層網卡驅動的連接以及與上層應用程序的通信。它內部的協議集合對用戶都是可見的,增強了該協議棧的通用性和靈活性,用戶可以根據自己的需要將此協議棧移植到不同的平臺。ZLIP協議棧與系統底層驅動和應用程序之間的接口關系如圖1所示。

圖1

2.1 ZLIP協議棧與系統底層的接口

ZLIP與系統底層的接口包括與設備驅動的接口和與系統定時器的接口兩類。ZLIP與設備驅動的接口是通過函數EtherDevInit(),將網絡設備的MAC地址和接收、發送函數通過“注冊”的形式“注冊”進ZLIP協議棧,從而初始化一個以太網接口設備,并設置這個設備的發送和接收驅動函數。為了與ZLIP協議棧結合,其中網絡設備的發送函數為unsigned char型的可重入函數,形參為一個指向待發送數據的指針和一個記錄待發送數據長度的變量,例如unsigned char cp2200_Send(unsigned char xdata*outbuf,unsigned short len)reentrant。網絡設備的接收函數為struct SMemHead xdata*型的可重入函數,例如struct SMemHead xdata*cp2200_rcve()reentrant,其中SMemHead結構體為:

在接收函數中,只要用到pStart成員,將接收到的數據存入pStart指向的存儲區。

2.2 ZLIP協議棧與系統計時接口

TCP/IP協議要處理許多定時事件,例如包重發、ARP表項更新等。系統計時用于為所有ZLIP內部時鐘事件計時。ZLIP與系統定時器的接口是通過NetIfTimer()、ARPTimer()、TCPTimer()三個函數實現的,NetIfTimer()函數調用“注冊”了的每一個接口的接收函數,接收到達的數據包;ARPTimer()函數處理ARP表項更新;TCPTimer()函數處理TCP/IP包的重發等功能。這三個函數必須在短時間(一般不大于25ms)內被調用一次,否則接收數據包等功能將停止。

3 ZLIP協議棧應用接口

ZLIP協議棧提供一系列接口函數供用戶程序調用,應用程序作為單獨的模塊由用戶實現。在應用程序中每個連接都需要定義一個套接字,ZLIP提供了TCPSocket()函數可給每個連接申請一個套接字。當系統作為客戶端使用時,ZLIP提供了TCPConnect()函數向IP地址為DestIP的服務器的DestPort端口發起連接,通過TCPConnect()函數還可以設置當接收到數據包和對方要求關閉TCP連接時應該調用的回調函數。

接收數據包的回調函數原型可定義為類似void On-Receive(void xdata*buf,unsigned short size)reentrant的形式,其中buf指向接收的數據,size是接收的數據量的大小。可以在OnReceive中處理接收的數據。

當程序中有多個TCP連接同時存在時,需要給每個連接準備一個接收回調函數。對方要求關閉TCP連接時應該調用的回調函數原型可定義為類似void OnClose(socket xdata*pSocket)reentrant的形式,pSocket指向將要關閉的socket,在OnClose中可調用ZLIP提供的TCPClose()函數,它將要求關閉套接字pSocket對應的連接。當程序中有多個TCP連接同時存在時,需要給每個連接準備一個OnClose函數。回調函數的函數名在不重復的情況下可以任意命名。

當系統作為服務器使用時,可使用ZLIP提供的TCPListen()函數對目標端口進行監聽,通過TCPListen()函數還可以設置當有客戶端向這個監聽端口連接成功時調用的回調函數,當程序中有多個處于監聽狀態的socket時,需要給每個socket準備一個這樣的回調函數。

不論系統出于客戶端狀態還是服務器狀態,只要系統被連接進網絡后都可以調用ZLIP提供的TCPSend()函數來發送數據,當使用完這個套接字以后,調用ZLIP提供的TCPAbort()函數,將這個套接字釋放還給系統。

4 ZLIP的配置

用戶根據具體的實際條件可對ZLIP進行設置。修改TCPIPmem.h中的宏定義TCPIP_BUF_SIZE可以設置TCP緩沖區大小,默認為8KB,建議大于4KB。緩沖區過小,將會影響發送和接收速度。如果系統中有多個網絡設備,可以修改NetIf.h中的宏定義NET_IF_MAX_NUM設置系統中允許的網絡設備數,在主程序中使用NetIfAdd()函數可添加網絡設備。修改TCP.h中的宏定義TCP_CONNECTION_MAX_NUM可以設置TCP的連接上限。當程序使用以太網以外的網絡接口協議時,修改NetIf.h中的宏定義NETIF_HEAD_MAX_LEN可以設置網絡接口層協議的最大幀頭長度。修改ARP.h中的宏定義ARP_ENTRY_MAX_NUM可以設置ARP表的大小。如果不希望系統能夠響應ping命令,則修改icmp.h中的宏定義ICMP_EN為0即可,響應ping命令就設置為1。

5 ZLIP協議棧應用

下面討論將ZLIP結合CP2200以太網芯片,在C8051F120增強型單片機組成的嵌入式平臺上作為客戶端系統使用。該系統的實現可分為4部分:C8051F120的初始化、CP2200網卡芯片的驅動、系統定時器、應用程序。

C8051F120的初始化主要就是根據需求對系統時鐘、端口設置等初始化。

CP2200網卡芯片的驅動主要包括三個部分:PHY_Init()和MAC_Init()函數實現網卡芯片的上電初始化,主要包括物理層的初始化和MAC初始化;cp2200_Send()函數實現數據的發送;cp2200_rcve()函數實現以太網數據的接收。

C8051F120上有5個可用于定時計數的定時器,可選擇其中任意一個來為TCP/IP協議中與時間有關的事件定時。在定時時間到達時,需要處理的函數包括NetIfTimer()、ARPTimer()、TCPTimer(),為了保證對這三個函數能被及時執行,可以將定時器的定時周期設置為20ms。

在應用程序中可以通過調用TCPSend()函數來發送數據。為了簡單測試該客戶端系統和服務器連通是否能正確通信,可以在數據包接收回調函數中將接收到的數據返發給服務器,這樣可通過在PC上的網絡調試助手軟件查看數據的回顯正確與否,從而判斷客戶端和服務器的通信正常與否。軟件的實現框圖如圖2所示。

圖2

將服務器IP設為192.168.1.149,端口號設為2016。當客戶端和模擬服務器的網絡調試助手連通后,可通過調試助手向客戶端系統發送數據,然后客戶端將數據返發回去。此時數據會在調試助手的網絡數據接收區顯示出來,實驗結果如圖3所示。

圖3

結 語

本文對ZLIP的特點、接口等進行了分析,討論了將ZLIP結合CP2200以太網芯片在C8051F120單片機上實現客戶端系統,并實驗成功。采用ZLIP實現8/16位嵌入式處理器搭建的系統進行以太網通信有著良好的前景,可用于實現遠程信息采集、智能儀表等嵌入式系統應用。

[1] Stevens W Richard.TCP/IP詳解卷一:協議[M] .北京:機械工業出版社,2000.

[2] 李玉玲,苑津莎,張衛華.基于Web服務和工作流的業擴報裝系統研究[J] .電力科學與工程,2006(2):51-54.

[3] 鄧治國.uIP TCP/IP協議棧在51系列單片機上的應用[J] .微計算機信息,2004(2):17-19.

[4] Forouzan B A,Fegan S C.TCP/IP協議族[M] .謝希仁,譯.北京:清華大學出版社,2006.

[5] Silicon Laboratories.C8051F120/1/2/3/4/5/6/7Datasheet,2006.

[6] Silicon Laboratories.CP2200/1Data sheet,2006.

[7] Valetto G,Kaiser G.Using Process Technology to Control and Coordinate Software Adaptation[M] .Portland:ICSE,2003.

猜你喜歡
嵌入式設置系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
Altera加入嵌入式視覺聯盟
主站蜘蛛池模板: 国产青青草视频| 久久综合伊人 六十路| 色呦呦手机在线精品| 国产一级在线播放| 9999在线视频| 99精品免费在线| 亚洲首页在线观看| 亚洲成a人在线观看| swag国产精品| 动漫精品啪啪一区二区三区| 亚洲熟女偷拍| 小说区 亚洲 自拍 另类| 蜜芽国产尤物av尤物在线看| 最新日本中文字幕| 亚洲天堂视频在线播放| 成人国产小视频| 青青青视频蜜桃一区二区| 国产国拍精品视频免费看| 国内精品免费| 伊人蕉久影院| 日韩精品一区二区三区swag| 伊人丁香五月天久久综合| 亚洲精品欧美日韩在线| 国产91久久久久久| 亚洲成人网在线观看| 久久77777| 久久青草免费91线频观看不卡| 国产人人射| 亚洲精品图区| 天堂在线www网亚洲| 国产手机在线观看| 无码国内精品人妻少妇蜜桃视频| 亚洲欧美精品一中文字幕| 久久人人97超碰人人澡爱香蕉| 国产成在线观看免费视频| 久久香蕉国产线看精品| 色偷偷一区二区三区| 在线中文字幕日韩| 538精品在线观看| 亚洲天堂日韩在线| 5555国产在线观看| 97视频在线观看免费视频| 国产美女在线观看| 91在线中文| 中文字幕日韩欧美| 久久久久亚洲精品成人网 | 国产99热| 国产成人亚洲无吗淙合青草| 亚洲制服丝袜第一页| 欧美成人亚洲综合精品欧美激情| 日本一区中文字幕最新在线| 色吊丝av中文字幕| 一本综合久久| 无遮挡国产高潮视频免费观看 | 亚洲中文字幕精品| 亚洲女同一区二区| 亚洲综合在线网| 六月婷婷综合| 永久天堂网Av| 午夜精品久久久久久久无码软件| 九色免费视频| 日本亚洲国产一区二区三区| 嫩草在线视频| 天天躁日日躁狠狠躁中文字幕| 国产欧美日韩免费| 成年女人a毛片免费视频| 日韩麻豆小视频| 亚洲天堂网站在线| 另类专区亚洲| 亚洲丝袜中文字幕| 啪啪啪亚洲无码| 亚洲一级毛片| 日韩欧美国产综合| 国产亚洲欧美日韩在线一区| 97se亚洲综合| 国产欧美日韩视频一区二区三区| 日韩福利在线视频| 国产成人精品视频一区二区电影| 亚洲人成影视在线观看| 在线五月婷婷| 久久综合九色综合97网| 波多野结衣AV无码久久一区|