显示标签为“乙太網”的博文。显示所有博文
显示标签为“乙太網”的博文。显示所有博文

2012年10月30日星期二

TCP/IP Offload Engine技術的嵌入式乙太網介面設計




今天給大家介紹一篇來自杭州電子科技大學的一篇論文,原文標題為“基於TOE技術的嵌入式乙太網介面設計”。該文提出了一種新的嵌入式乙太網解決方案,在無需引入作業系統的條件下,實現了嵌入式系統的乙太網接入。

為減輕主機CPUTCP/IP協定棧處理的負擔,提高嵌入式系統的性能,該文提出一種基於TOE(TCP/IP Offload Engine)技術的嵌入式乙太網介面設計,該設計介紹了一種通過硬體來實現協定棧處理的方法,利用具備協議處理能力的WIZnet乙太網解決方案供應商的網路控制晶片W5300,在TCP/IP協議的基礎上實現了嵌入式系統的乙太網接入。

圖片: W5300晶片

TCP/IP是一組廣泛應用的協定,幾乎已經成為網路通信的標準語言。傳統的TCP/IP通信資料的處理,都是由主機CPU通過軟體實現。隨著高速乙太網的發展,網路頻寬的增長速度遠遠高於CPU處理能力的增長速度,這需要佔用大量CPU資源對協議棧進行處理,給CPU帶來了沉重的負擔。對於接入乙太網環境的嵌入式系統,如何利用有限資源,減輕CPU對協議棧處理的負擔,成為一個值得關注的問題。為了解決這個問題,一種稱為TCP/IP減負引擎(TCP/IP Offload EngineTOE)的技術應運而生。該文基於TOE技術,提出了一種新的嵌入式系統乙太網解決方案,給出了詳細的硬體介面設計和軟體框架設計。

該論文分為4大板塊,分別介紹TOE技術、網路控制晶片W5300、嵌入式系統硬體設計、軟體設計等。查看論文內容:http://blog.iwiznet.cn/?p=1629 


更多相關博文可參考:
 


2012年10月17日星期三

教你如何使用網路單片機W7100A實現UDP通信

今天给大家介绍如何用网络单片机W7100A实现UDP通信。iMCU W7100A 是一款单片式以太网控制芯片,内嵌8051单片机、硬件 TCP/IP协议栈,以及10/100 高速以太网络MAC/PHY。

UDP提供不可靠、无连接的数据报文传输,它在没有建立连接时仍然能够处理数据。这样,可能会造成UDP信息的丢失、重叠或者改变。当数据包以高速方式传输时,接收端无法处理所有的数据。在这种情况下,用户必须考虑UDP是否符合自己的应用需求。由于UDP能够广播数据包,所以它通常用在多播系统下。

1. UDP SOCKET

用户可以使用W7100A所支持的8个socket作为UDP通信中的协议。但是,首先必须创建SOCKET。在创建SOCKET时需要用到socket号、使用的协议、使用的端口号以及设定的标志位。因为UDP协议是由Sn_MR_UDP(0×02)寄存器设定的(后面将会介绍)。Socket号则是由用户自己确定,可以选择W7100中0到7这8个socket中的任意一个或者全部8个socket。除此,用户也可以指定UDP协议中要使用的端口号。在打开UDP socket时,通过WIZnet提供的SOCKET()函数,来完成上面提到的各项参数的设定。

1.1 网络初始化

W7100A单片机的网路配置需要用到IP地址、网关、子网掩码以及MAC地址。网络参数的处理如图2.2.1所示。除此以外,还需要设置每一个socket的TX/RX缓存器以及其它寄存器的大小。

                       <图2.1> 设定网络配置

1.2 打开(OPEN)

由于UDP不需要建立连接就可以进行通信,可以通过调用socket()函数轻松创建UDP
socket。如图2.2.2所示为创建UDP socket的例程。

                     <图2.2> UDP socket的创建

1.3 接收(RECEIVE)

图2.2.3显示了数据的接收过程。在接收数据之前,用户可以通过检查Sn_RX_RSR来确定要接收的数据的长度。一旦有数据被接收到,用户便可以利用recvfrom()函数来执行接收过程。

                          <图2.3> 接收数据

1.4 发送(SEND)

在发送UDP数据报文之前,用户必须设置目的地IP地址和端口;一旦设置完成,用户再通过sendto()函数将UDP数据报文送出。

                            <图2.4>发送UDP数据

2. UDP回路测试程序

这一章节将会介绍如何利用第二章中的函数来实现UDP回路测试。UDP回路测试程序是一种编码,它可以将从对端接收到的数据准确无误的发送回去。
下面就是UDP串行回路测试程序的例子:

                     <图3.1> UDP回路测试程序

后面将会介绍UDP回路测试程序的代码示例。首先,设置IP或端口等网络信息,然后打开Sn_SR寄存器。Sn_SR在UDP模式下存在两种状态:一种是SOCK_UDP, 此时UDP socket已经成功打开并且可以进行UDP通信。在此状态下,在接收到UDP数据后,通过recfrom()函数和sento()函数再将数据回送。另一种状态是SOCK_CLOSED,UDP在这种状态下是未被打开的,必须先通过close()函数关闭socket,之后重新调用socket()函数打开socket。


3. UDP回路测试演示

在这一章节,将会用具体的示例代码程序来演示UDP回路测试。首先,下载UDP回路测试程序的应用文件到iMUCW7100EVB开发板,执行该程序确认iMCUW7100EVB是否可以正常进行回路测试。更多的详细信息,请参阅文档‘如何在W7100中建立工程(project)’,‘WizISP程序指南’以及‘W7100A Debugger指南’。

对于UDP回路测试程序,用户可以按照下面的步骤操作:

l 确认测试环境。详细信息,请参阅文档‘iMCUW7100EVB用户指南’。
用UTP线连接PC测试机和iMCUW7100EVB
用串行线连接PC测试机和iMCUW7100EVB
连接5V电源适配器到iMCUW7100EVB,并打开电源

l 确认测试PC机的网络信息:
源IP地址 : 192.168.1.2
网关IP地址: 192.168.1.1
子网掩码: 255.255.255.0

l 运行超级终端机程序和AX1程序


3.1 超级终端机

                 <图4.1> 超级终端机选项

运行超级终端机,如图4.1所示,设置串行通信选项,超级终端机程序将会然后通过串行通信显示iMCU7100EVB开发板的状态。

3.2 AX1程序

                   <图4.2> AX1设置为UDP通信

运行AX1程序,然后将AX1程序设置为UDP通信方式,如上图4.2所示。关于AX1程序设置的更多详细信息请参考AX1用户手册。如果要想使用UDP发送,请选择菜单栏中的UDP => SEND,然后点击OK按钮,AX1程序将会显示客户端PC机的状态。

3.3 UDP回路测试程序演示

在所有的设置完成后,点击UDP发送按钮。AX1将会显示PC机的进程,如图4.3中显示了发送/接收数据的大小,同时如图4.4超级终端机程序将会显示服务器iMCU7100EVB的处理进程。


                    <图4.3>使用UDP发送临时数据



            <图4.4> 超级终端机程序窗口



2012年10月11日星期四

如何在乙太網晶片W5200中實現FTP用戶端




WIZnet 微知納特 :



該文章詳細描述了W5200晶片驅動中使用基本的TCP socket應用程式介面實現FTP用戶端的所有步驟。
IAR 5.41是用來編譯該FTP用戶端應用筆記的軟體。W5200E01-M3是用來運行該FTP用戶端應用的板子。
 

該文檔中提到的所有代碼和檔都可以從以下網址下載:www.wiznet.co.kr/w5200/download

 

1. FTP用戶端

如同每個標準FTP用戶端的實現,任何FTP連接都有兩個通道,一個會話通道和一個資料通道。會話通道是用來交換FTP伺服器和用戶端之間標準的FTP命令。資料通道是用來交換資料(像上傳或下載一個檔)。
需要記住,必須創建兩個到FTP伺服器的TCP請求。一個TCP請求用於會話通道創建,另一個用於資料通道創建。
遵循下麵的程式來建立FTP用戶端。請參閱下面一節的應用實例。
1> 創建一個TCP伺服器監聽一個特定的埠。該伺服器將被用做資料通道(來自FTP伺服器的入口資料連接)。
2> 執行一個TCP客戶機請求,該TCP客戶機請求通過埠21到任何FTP伺服器。這將用作會話通道。
3> 在成功創建連接後,給出需要的登錄認證資訊(使用標準的FTP命令)來連接FTP伺服器。伺服器將回復登錄成功的提示。
注意:考慮到記憶體大小和常用命令,該應用筆記只支援lscdputgetbye。其他命令不支持。
4> 根據FTP標準,如果必須執行任何相關資料的操作,則需要在一個新的資料通道中執行(來自FTP伺服器的入口資料)。因此實現/創建該資料連接,FTP用戶端需要提供詳細的IP位址和socket,該socket將接收來自FTP伺服器的入口資料。為了達到這些要求,FTP協議建議使用命令“PORT”。(該埠命令有6個參數,前4個參數建立IP地址,後兩個參數建立通訊連接埠)
5> 如果FTP伺服器針對發出的埠命令返回一個成功消息,連接已準備好資料通信了。
6> 執行任何資料相關的FTP命令時,FTP伺服器初始化一個入口資料通道到TCP伺服器,該TCP伺服器在W5200中處於監聽模式下。FTP伺服器使用埠命令提供的資訊來初始化該資料連接。
7> 在資料傳輸結束後,FTP伺服器將關閉該資料通道。
8> 為了以後相關資料的活動,通過發出另一個埠命令重新啟用資料通道,再啟用會話通道。

2. 代碼示例

下表是上面過程的應用示例。




 

3. 演示

1> 運行FTP伺服器並創建一個帳號。

                           圖2.FTP伺服器


                             圖3.創建一個帳號

2> 使用原始程式碼設置適當的網路參數
3> 編譯原始程式碼並下載二進位檔案到W5200E01-M3板子裡
4> 打開串口超級終端,準備從W5200E01-M3接收串口消息
在英特網中有許多免費的超級終端軟體。下載一個超級終端並做如下設置:
串列傳輸速率
數據位元
奇偶位
停止位
流控制
115200
8
1
5> 運行W5200E01-M3板子。W5200E01-M3會自動連接到FTP伺服器,FTP伺服器的IP位址已在原始程式碼中預定義。
6> 如果成功連接W5200E01-M3FTP伺服器,超級終端會提示你輸入使用者ID和密碼消。



                                 圖4. 登錄到FTP伺服器
7> 在成功登錄到FTP伺服器後,輸入lsputgetcd bye命令測試FTP用戶端的功能。

A) “ls”命令:



B) “cd”命令測試:




C) “put”命令測試:




D) “get”命令測試:




E) “bye”命令測試: