日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

TCP/IP協(xié)議在VRS51單片機上的實現(xiàn)

出處:oldzhang 發(fā)布于:2007-10-24 11:11:28

引言

  隨著人們對信息化程度的要求不斷提高, 設備上網(wǎng)已經(jīng)成為一個趨勢。32位機資源豐富,上網(wǎng)方案也較為成熟,但成本相對較高,因而價位偏低的8位機上網(wǎng)方案成為研究的熱點。但是,8位機資源有限,因此在實現(xiàn)8位機以太網(wǎng)連接時,一定要考慮周全。本文介紹在VRS51L3074上實現(xiàn)TCP/IP協(xié)議棧uIP的移植,成功實現(xiàn)了socket通信。


硬件平臺

  本方案的硬件平臺主要由VRS51L3074和CS8900A組成,經(jīng)網(wǎng)絡變壓器的隔離,CS8900A與網(wǎng)絡接口RJ-45連接上,這樣整個系統(tǒng)就可以連接到Ethernet。數(shù)據(jù)輸入可由串口傳遞給系統(tǒng)。

VRS51L3074簡介

  VRS51L3074是Ramtron公司推出的單周期、基于8051內(nèi)核、功能豐富的SOC單片機,是款集成FRAM的高性能單片機。CPU處理速度可達40MIPS,內(nèi)置64kB Flash存儲器支持ISP、IAP功能、4kB+256B的SRAM以及8kB的FRAM,帶有完全可配置的I2C接口和SPI接口等片內(nèi)外設,支持JTAG和非侵入式在線調(diào)試。VRS51系列單片機和8051完全兼容,支持SDCC、Keil等C編譯器,編譯和時需要一些特殊的配置。Versa Ware JTAG軟件是VRS51系列單片機的工具,和Keil uVision配合使用時需要一些配置。

CS8900A簡介

  CS8900A是CIRRUS LOGIC公司的一種低價位、高集成度、低功耗、全雙工的16bit以太網(wǎng)控制器,是一款專門為嵌入式系統(tǒng)設計優(yōu)化的以太網(wǎng)控制器。該芯片的突出特點就是使用靈活,其物理層接口、數(shù)據(jù)傳輸模式、工作模式都能根據(jù)需要而進行動態(tài)配置,可通過內(nèi)部寄存器的配置來適應不同的應用環(huán)境。CS8900A有三種工作模式:I/O模式、存儲器模式和DMA模式。

  CS8900A基本工作原理是:在收到由主機發(fā)來的數(shù)據(jù)報后,偵聽網(wǎng)絡線路。如果線路忙,它就等到線路空閑為止,否則立即發(fā)送該數(shù)據(jù)幀 。發(fā)送過程中,首先它添加以太網(wǎng)幀頭(包括先導字段和幀開始標志),然后生成CRC校驗碼,將此數(shù)據(jù)幀發(fā)送到以太網(wǎng)上。接收時,它將從以太網(wǎng)收到的數(shù)據(jù)幀在經(jīng)過解碼、去掉幀頭和地址檢驗等步驟后緩存在片內(nèi)。通過CRC校驗后,它會根據(jù)初始化配置情況,通知主機CS8900A收到了數(shù)據(jù)幀,用某種傳輸模式傳到主機的存儲區(qū)中。


嵌入式TCP/IP協(xié)議棧uIP

  TCP/IP是一個協(xié)議族,它是一個四層協(xié)議模型,包括應用層、傳輸層、網(wǎng)絡層和網(wǎng)絡接口層。應用層定義清晰的會話過程,HTTP、FTP、Telnet和SMTP等都屬于應用層協(xié)議;傳輸層提供端到端的通信,該協(xié)議有傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報協(xié)議(UDP);網(wǎng)絡層負責數(shù)據(jù)打包和邏輯尋址,IP、ICMP和ARP等協(xié)議都屬于網(wǎng)絡層;網(wǎng)絡接口層負責在源和目的節(jié)點間線路上進行無差錯的傳輸數(shù)據(jù),具有流量控制等功能。

  TCP/IP協(xié)議較為復雜,實現(xiàn)起來非常困難,一般都采用現(xiàn)有的TCP/IP協(xié)議棧來實現(xiàn)。本系統(tǒng)就是采用源碼開放的嵌入式TCP/IP協(xié)議棧uIP來實現(xiàn)TCP/IP協(xié)議的。

  uIP是專門為8位和16位嵌入式微控制器設計的微型TCP/IP協(xié)議棧 , 它是由瑞典計算機學院的Adam Dunkels開發(fā)的開源軟件,版本為uIP1.0。uIP完全是由C語言編寫的,因此可移植到各種不同的CPU結構和操作系統(tǒng)上。uIP提供了網(wǎng)絡通信所必須的協(xié)議,本身代碼和占用的內(nèi)存數(shù)都非常少,uIP的源代碼只有幾kB,RAM僅占用幾百字節(jié)。uIP具有如下特點:

  1)完整的說明文檔和公開的源代碼,全部由C編寫,并附有詳細的注釋,便于移植。

  2)極少的代碼占用量和RAM資源要求,尤其適合于8/16位單片機。

  3)支持IP、ARP、TCP、ICMP和UDP等基本功能。

  4)高度的可配置性以適應不同資源條件和應用場合。

  5)支持多個主動連接和被動連接并發(fā),支持連接的動態(tài)分配和釋放。

  6)簡易的應用層接口和設備驅動層接口。

  7)完善的示例程序和協(xié)議實現(xiàn)范例。

  為了節(jié)省資源占用,簡化應用接口,uIP1.0在內(nèi)部實現(xiàn)上做了特殊處理。

  1)注意各模塊的融合,減少處理函數(shù)的個數(shù)和調(diào)用次數(shù),提高代碼復用率以減少ROM占用。

  2)基于單一全局數(shù)組的收發(fā)數(shù)據(jù)緩沖區(qū),不支持內(nèi)存動態(tài)分配,由應用負責處理收發(fā)的數(shù)據(jù)。

  3 )基于事件驅動的應用程序接口,各并發(fā)連接采用輪循處理,僅當網(wǎng)絡事件發(fā)生時,由uIP內(nèi)核喚起應用程序處理,這樣uIP用戶只須關注特定應用就可以了。傳統(tǒng)的TCP/IP實現(xiàn)一般要基于多任務處理環(huán)境,而大多數(shù)8位機系統(tǒng)不具備這個條件。

  4)應用程序主動參與部分協(xié)議棧功能的實現(xiàn)(如TCP的重發(fā)機制,數(shù)據(jù)包分段和流量控制),由uIP內(nèi)核設置重發(fā)事件,應用程序重新生成數(shù)據(jù)提交發(fā)送,免去了大量內(nèi)部緩存的占用?;谑录寗拥膽媒涌谑沟眠@些實現(xiàn)較為簡單。

  uIP實現(xiàn)了TCP/IP協(xié)議族的四個基本協(xié)議:ARP(地址解析協(xié)議),IP(網(wǎng)際協(xié)議),ICMP(因特網(wǎng)信息控制協(xié)議)和TCP(傳輸控制協(xié)議),UDP協(xié)議是可選模塊。

  IP(Internet Protocol網(wǎng)際協(xié)議)是TCP/IP協(xié)議族中為的協(xié)議,提供不可靠的無連接的數(shù)據(jù)報傳送服務。所有的TCP、UDP、ICMP及IGMP數(shù)據(jù)都是以IP數(shù)據(jù)報格式傳輸?shù)摹IP的IP協(xié)議主要負責封裝TCP幀、驗證輸入包IP頭的正確性、接受IP數(shù)據(jù)報進行處理并向上層協(xié)議提交以及TCP與ICMP之間的復用數(shù)據(jù)包。為了節(jié)省占用空間,uIP1.0只支持一個數(shù)據(jù)報的分片和重組。

  TCP(Transmission Control Protocol)協(xié)議是傳輸層的協(xié)議之一,它提供高可靠性的數(shù)據(jù)通信。TCP的主要工作是把應用程序交給的數(shù)據(jù)分成適當?shù)男K交給下面的網(wǎng)絡層,確認收到的分組,設置發(fā)送確認分組的超時時鐘等。TCP是uIP重點實現(xiàn)的協(xié)議。為了減少存儲器空間占用,uIP沒有實現(xiàn)TCP發(fā)送和接收數(shù)據(jù)的窗口調(diào)整,且不會緩存收到的TCP段,而是立即交給應用程序處理。重發(fā)也是由應用程序實現(xiàn)的。在輸出數(shù)據(jù)時,每一個連接只能有一個正在傳輸?shù)腡CP段。

  ICMP(Internet控制報文協(xié)議)用來傳遞差錯報文以及其他需要注意的信息。uIP只實現(xiàn)了echo。

  ARP(Address Resolution Protocol)為IP地址到對應的硬件地址之間提供動態(tài)映射。ARP協(xié)議是把目標IP地址解析為以太網(wǎng)MAC地址,當一個IP包要在以太網(wǎng)上發(fā)送時,先查詢ARP表,找出要發(fā)送的MAC地址。如果在表里找不到對應的IP地址,就會廣播ARP請求包,以獲取給出IP地址所對應的MAC地址。目的主機收到請求包后發(fā)出一個ARP回應包,給出自己的MAC地址和IP地址。ARP表每十秒更新。ARP協(xié)議是uIP的可選模塊。

  UDP(User Datagram Protocol)協(xié)議是一個簡單的、面向數(shù)據(jù)報的傳輸層協(xié)議。UDP協(xié)議是uIP可選模塊。

  uIP是一個專為8位和16位單片機設計的小型簡易的TCP/IP協(xié)議棧,簡單易用、占用資源少是其設計特點。為了占用較少的資源,uIP只保留了基本的通信功能而把全功能協(xié)議棧中那些不常用的功能去掉,其重點是在IP、TCP和ICMP的實現(xiàn)上,而把ARP和UDP作為可選模塊。

  uIP處于網(wǎng)絡通信的中間,其上層協(xié)議是應用程序層,其下層硬件或固件稱為網(wǎng)絡設備驅動層。uIP并不僅僅是為以太網(wǎng)設計的,它與媒體無關。

uIP的設備驅動程序接口

  uIP中需要底層驅動支持的函數(shù)有:uip_input( )和uip_periodic( )。uip_input( )函數(shù)是用來處理網(wǎng)絡層和設備驅動層之間的傳送數(shù)據(jù)的,當設備驅動程序從網(wǎng)絡層收到一個數(shù)據(jù)包時會調(diào)用此函數(shù),設備驅動程序會事先把數(shù)據(jù)包存放在uip_buf[ ]緩沖區(qū)里,而把數(shù)據(jù)長度放到uip_len,然后交給uip_input( )函數(shù)處理。當函數(shù)返回時,如果uip_len不為0,則表明帶有數(shù)據(jù)。如果需要ARP支持時,則要考慮更新ARP 表或者發(fā)送ARP請求和回應。

  uip_periodic( )用于內(nèi)部時鐘事件計時,當周期定時激發(fā)時,每一個 TCP連接應該調(diào)用uip_periodic( )函數(shù)。這個函數(shù)用于uIP內(nèi)核對各連接的定時輪循,因此需要一個硬件支持的定時程序周期性地用它輪循各連接,一般用于檢查主機是否有數(shù)據(jù)要發(fā)送,如果需要則構造IP包。

 從本質(zhì)上來說,uip_input( )和uip_periodic( )在內(nèi)部是一個函數(shù),即uip_process ( )。UIP的設計者將uip_process(UIP_DATA)定義成uip_input( ),而將uip_process(UIP_TIMER)定義成uip_periodic( ),因此從代碼實現(xiàn)上來說是完全復用的。

uIP應用程序接口

  uIP在接受到底層傳來的數(shù)據(jù)包后,如需送上層應用程序處理,就會調(diào)UIP_APPCALL( ),同時uIP設置UIP_CONN結構體指針指向當前連接。UIP_CONN記錄一條TCP連接的所有相關信息。為了將用戶的應用程序掛接到uIP中,必須將宏UIP_APPCALL( )定義成實際的應用程序函數(shù)名,這樣每當某個uIP事件發(fā)生時,內(nèi)核就會調(diào)用該應用程序進行處理。如果要加入應用程序狀態(tài)的話,必須將宏UIP_APPSTATE_SIZE定義成應用程序狀態(tài)結構體的長度。


uIP在VRS51L3074上的應用和簡單Socket通信

  本硬件平臺是網(wǎng)絡POS機的一部分,它的工作原理是:由掃描槍采集的數(shù)據(jù)經(jīng)串口送入網(wǎng)卡內(nèi),然后經(jīng)網(wǎng)絡發(fā)送到遠端主機。

  本系統(tǒng)的軟件部分包括網(wǎng)絡設備驅動程序、TCP/IP協(xié)議棧實現(xiàn)以及簡單的Socket通信程序。

  CS8900主要包括三個部分:EtherDevInit()函數(shù)完成CS8900A網(wǎng)絡芯片的初始化,包括初始化寄存器等,使之進入服務狀態(tài);EtherDevSend()實現(xiàn)把以太網(wǎng)數(shù)據(jù)包發(fā)送到網(wǎng)絡中;EtherDevRecv()完成數(shù)據(jù)的接受。在CS8900的頭文件中設置了MAC地址以及其他的一些參數(shù)。

  網(wǎng)絡設備驅動程序通過兩個全局變量與uIP協(xié)議棧進行接口:uip_buf為收發(fā)緩沖區(qū),uip_len為數(shù)據(jù)的長度。EtherDevSend( )函數(shù)把uip_buf里的數(shù)據(jù)發(fā)送到網(wǎng)絡中,EtherDevRecv( )函數(shù)把接受到的數(shù)據(jù)存儲到uip_buf緩沖區(qū)中,同時修改uip_len的值。

 uIP協(xié)議棧承擔網(wǎng)絡通信功能,一方面與底層鏈路層通信實現(xiàn)數(shù)據(jù)收發(fā),另一方面為上層應用程序提供了簡單的API接口。uIP基本實現(xiàn)了IP、TCP、ARP、UDP以及ICMP(ping)等協(xié)議,它包括uip.c、uip_arch.c、uip_arp.c、uip.h、uipopt.h、uip_arch.h、uip_arp.h等文件。uip.c完成主要TCP/IP功能,主要是IP和TCP協(xié)議,UDP是可選模塊;uip_arp.c完成地址解析;uip_arch.c完成校驗;uipopt.h是uIP配置文件,它以宏的形式定義便于修改,用戶可根據(jù)自己的需要設置本地的物理地址、IP地址、網(wǎng)關地址、收發(fā)緩沖區(qū)大小、支持的連接數(shù)以及ARP表大小等選項。
VRS51L3074有3個16-bit的定時器,可以選擇一個為TCP/IP協(xié)議中與事件有關的事件定時。uIP中需要定時的事件有:為uip_periodic( )函數(shù)的執(zhí)行提供基準和ARP表更新。uip_periodic( )函數(shù)每0.5秒執(zhí)行,ARP表每10秒更新。

  添加了必需的模塊,進行了正確的配置后,需要編寫主程序和應用程序初始化包括定時器初始化、串口初始化、網(wǎng)卡芯片初始化、uIP協(xié)議棧初始化、用戶應用程序初始化等,主程序初始化完成后,進入不停查詢的狀態(tài),如果有數(shù)據(jù)到來,則交給uip_input( )進行處理,如果沒有則由uip_periodic( )來處理定時事件。為了將應用程序掛接到uIP中,必須把UIP_APPCALL( )定義為實際的應用 程序函數(shù)名,這樣每當某個uIP事件發(fā)生時,內(nèi)核就會調(diào)用該應用程序進行處理。本應用程序定義 #define UIP_APPCALL socket_appcall。


結束語

  本方案成功地把嵌入式TCP/IP協(xié)議棧uIP移植到VRS51單片機上,實現(xiàn)了網(wǎng)絡通信。該方案是網(wǎng)絡POS機的一部分,目前已經(jīng)正在運行,且狀態(tài)良好。本方案采用的單片機和網(wǎng)絡芯片不但性能良好而且價格低廉,uIP是一個性能優(yōu)良的小型TCP/IP協(xié)議棧,因此本系統(tǒng)運行速度快、穩(wěn)定可靠且價位較低。本方案可廣泛應用于遠程數(shù)據(jù)采集、傳輸,遠程監(jiān)控,遠程抄表以及 信息家電等領域。



  
關鍵詞:TCP/IP協(xié)議在VRS51單片機上的實現(xiàn)CS8900ACS8900RJ-45VRS51L3074

版權與免責聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權均屬于維庫電子市場網(wǎng),轉載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關法律責任。

本網(wǎng)轉載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉載時,必須保留本網(wǎng)注明的作品出處,并自負版權等法律責任。

如涉及作品內(nèi)容、版權等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務:
賣家服務:
技術客服:

0571-85317607

網(wǎng)站技術支持

13606545031

客服在線時間周一至周五
9:00-17:30

關注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!