在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于VRS51L3074單片機實現協議棧uIP的socket通信設計

電子設計 ? 來源:世界產品與技術 ? 作者:蘇振偉,童子權 ? 2021-05-26 11:34 ? 次閱讀

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

硬件平臺

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

VRS51L3074簡介

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

CS8900A簡介

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

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

嵌入式TCP/IP協議棧uIP

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

TCP/IP協議較為復雜,實現起來非常困難,一般都采用現有的TCP/IP協議棧來實現。本系統就是采用源碼開放的免費嵌入式TCP/IP協議棧uIP來實現TCP/IP協議的。

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

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

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

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

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

5)支持多個主動連接和被動連接并發,支持連接的動態分配和釋放。

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

7)完善的示例程序和協議實現范例。

為了節省資源占用,簡化應用接口,uIP1.0在內部實現上做了特殊處理。

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

2)基于單一全局數組的收發數據緩沖區,不支持內存動態分配,由應用負責處理收發的數據。

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

4)應用程序主動參與部分協議棧功能的實現(如TCP的重發機制,數據包分段和流量控制),由uIP內核設置重發事件,應用程序重新生成數據提交發送,免去了大量內部緩存的占用。基于事件驅動的應用接口使得這些實現較為簡單。

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

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

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

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

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

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

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

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

uIP的設備驅動程序接口

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

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

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

uIP應用程序接口

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

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

本硬件平臺是網絡POS機的一部分,它的工作原理是:由掃描槍采集的數據經串口送入網卡內,然后經網絡發送到遠端主機。

本系統的軟件部分包括網絡設備驅動程序、TCP/IP協議棧實現以及簡單的Socket通信程序。

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

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

uIP協議棧承擔網絡通信功能,一方面與底層鏈路層通信實現數據收發,另一方面為上層應用程序提供了簡單的API接口。uIP基本實現了IP、TCP、ARP、UDP以及ICMP(ping)等協議,它包括uip.c、uip_arch.c、uip_arp.c、uip.h、uipopt.h、uip_arch.h、uip_arp.h等文件。uip.c完成主要TCP/IP功能,主要是IP和TCP協議,UDP是可選模塊;uip_arp.c完成地址解析;uip_arch.c完成校驗;uipopt.h是uIP配置文件,它以宏的形式定義便于修改,用戶可根據自己的需要設置本地的物理地址、IP地址、網關地址、收發緩沖區大小、支持的最大連接數以及ARP表大小等選項。

VRS51L3074有3個16-bit的定時器,可以選擇一個為TCP/IP協議中與事件有關的事件定時。uIP中需要定時的事件有:為uip_periodic( )函數的執行提供基準和ARP表更新。uip_periodic( )函數每0.5秒執行一次,ARP表每10秒更新一次。

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

結束語

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

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 變壓器
    +關注

    關注

    161

    文章

    7680

    瀏覽量

    137912
  • 單片機
    +關注

    關注

    6058

    文章

    44813

    瀏覽量

    644401
  • 嵌入式
    +關注

    關注

    5122

    文章

    19427

    瀏覽量

    312865
收藏 人收藏

    評論

    相關推薦

    一種uIP TCP/IP協議51系列單片機上的實現

    單片機,被應用在各個領域內。因此使用uIP這種免費的TCP/IP協議解決由51內核的單片機構建
    發表于 08-08 09:27

    51單片機uip協議怎么通過網頁訪問單片機?

    51單片機uip協議怎么通過網頁訪問單片機,也就是局域網沒打開一個網頁,通過網頁控制和監控
    發表于 10-28 08:11

    VRS51L3074 pdf datasheet (High

    The VRS51L3074 is a high performance, 8051-based microcontrollercoupled with a fully integrated
    發表于 09-23 11:15 ?18次下載

    uIP TCP/IP協議51系列單片機上的應用

    uIP 協議是一種免費的可實現的極小的TCP/IP協議,可以使用于由8位或16位微處理器構建
    發表于 08-19 08:48 ?53次下載

    基于單片機的LED顯示屏控制系統設計

    本文研究了基于單片機的 LED 顯示屏控制系統。利用VRS51L3074 運算速度快和高速SPI 接口的特點,通過軟件優化和合理的硬件設計,達到了對超長LED 顯示屏的控制。結合多I/O 口的特
    發表于 12-28 13:12 ?98次下載

    基于VRS51L3074和DS12887的電子日歷時鐘設計方

      文中是以Versa 8051系列MCU的典型器件VRS51L3074和時鐘日歷芯片DSl2887為核心制作的可多定點電子日歷時鐘。該系統功能齊
    發表于 12-24 10:03 ?2348次閱讀
    基于<b class='flag-5'>VRS51L3074</b>和DS12887的電子日歷時鐘設計方

    VRS51L3074與串行FRAM在LED顯示屏中的應用

    VRS51L3074是Ramtron公司生產的一款運行速度可達40MIPS的單周期8051微處理器。VRS51L3074的存儲器子系統具有64 KB的Flash、4 352字節的內部S
    發表于 01-09 13:00 ?853次閱讀
    <b class='flag-5'>VRS51L3074</b>與串行FRAM在LED顯示屏中的應用

    多點定鬧電子日歷鐘方案

    論述了多點定鬧電子日歷鐘系統的設計,在VRS51L3074單片機的控制下,使用串行時鐘芯片 DS12887,實現時間和鬧鐘的設置功能。
    發表于 02-08 15:19 ?86次下載
    多點定鬧電子日歷鐘方案

    VRS51L3074_IcpdfCom_61367

    VRS51L3074_IcpdfCom_61367,很好的學習資料,快來下載吧
    發表于 01-18 18:03 ?9次下載

    uip單片機上的移植精講

    uip單片機上的移植精講,內容包括基于單片機的網絡編程概述、uIP協議分析、網絡芯片的驅動等
    發表于 03-01 17:48 ?11次下載

    uIP協議介紹

    uIP 協議是一種免費的可實現的極小的TCP/IP協議,可以使用于由8位或16位微處理器構建
    發表于 07-15 15:27 ?0次下載

    51+單片機TCP-IP+協議ZLIP源碼

    單片機上網技術,是當前的一個熱門技術。單片機上網技術中的一個重要部分是在單片實現 TCP/IP 協議
    發表于 12-17 16:11 ?9次下載

    51單片機網絡通信及ARP協議

    51單片機網絡通信及ARP協議
    發表于 08-31 09:07 ?18次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b>網絡<b class='flag-5'>通信</b>及ARP<b class='flag-5'>協議</b>

    Flex與51單片機進行socket通信的詳細資料說明

    本文檔的主要內容詳細介紹的是Flex與51單片機進行socket通信的詳細資料說明。
    發表于 08-14 17:32 ?1次下載
    Flex與<b class='flag-5'>51</b><b class='flag-5'>單片機</b>進行<b class='flag-5'>socket</b><b class='flag-5'>通信</b>的詳細資料說明

    基于PIC單片機的TCP/IP協議實現

    電子發燒友網站提供《基于PIC單片機的TCP/IP協議實現.ppt》資料免費下載
    發表于 10-20 10:03 ?2次下載
    基于PIC<b class='flag-5'>單片機</b>的TCP/IP<b class='flag-5'>協議</b><b class='flag-5'>棧</b><b class='flag-5'>實現</b>
    主站蜘蛛池模板: 美女全黄网站免费观看 | 国产美女精品久久久久中文 | 欧美黄色一级网站 | 久久99精品福利久久久 | 亚洲性久久久影院 | 又黄又涩的视频 | 国产成人一区二区三中文 | 三级国产在线观看 | 亚洲三级网址 | 天天澡天天干 | 久青草国产手机视频免费观看 | 亚洲日韩图片专区第1页 | 二区久久国产乱子伦免费精品 | 午夜毛片不卡高清免费 | 欧美激情一欧美吧 | 夜夜爱成人免费网站 | 中文字幕va| 丁香花免费观看视频 | 亚洲欧美日韩综合一区 | 欧美高清在线观看视频 | 天天做天天摸 | 色老头视频在线观看 | 免费中国jlzzjlzz在线播放 | 人人爱爱 | 欧美午夜免费观看福利片 | 夜夜操夜夜 | 亚洲国产精品久久久久婷婷软件 | 久久香蕉国产线看观看亚洲片 | 美女国产在线观看免费观看 | 嫩草网 | 天天摸天天碰天天碰 | 日日拍拍 | 老师喂我吃她的奶水脱她胸罩 | 国产香港三级理论在线 | 日韩一级视频免费观看 | 欧美成人精品 | 爽爽爽爽爽爽a成人免费视频 | 黄色网址在线播放 | 美女bbbb视频 | 优优国产在线视频 | 久久激情网 |