用户名: 密码: 免费注册 免费试用 简体中文 | ENGLISH
中国·芯片交易在线  
www.ic112.com
IC72论坛
广告服务
网页制作
用户帮助
首页 供应信息 求购信息 库存查询 新闻中心 展会资讯 IC厂商 技术资料 自由区域
当前位置:首页>> 技术资料 >> 正文
基于Rabbit 2000以太网通信技术及其实现
时间:2005/6/11 15:41:00  作者:  来源:ic72  浏览人数:888
 
 
摘 要 论述了基于8位MPU Rabbit 2000 的嵌入式系统与以太网间的通信技术,利用MPU内部的TCP/IP协议栈和 Dynamic C,实现嵌入式Webserver的构建和网络通信方案;实现了CGI通信程序的设计、Java Applet在系统界面浏览中的应用;并给出有关软件实现的代码框架结构。利用该系统功能实现了工业生产的远程访问和监控,LED屏幕的网络控制显示等。该设计对嵌入式系统的以太网接入具有重要的参考价值。

  关键词 Dynamic C,Rabbit 2000,TCP/IP协议栈 
 
    1 引 言

  嵌入式技术已经广泛应用于多学科、多领域,涉及到多种传统及现代技术。利用8位微控制器通过ISP接入互联网的嵌入式系统正逐步取代以PC为中心的应用,将成为未来工业生产控制的主流。此应用系统将会广泛应用于智能化工业控制中的远程访问和监控系统、LED网络控制显示屏系统、智能家居系统等各个方面,拥有极为广阔的前景。

  由Z-World 公司推出的Rabbit 2000是一种低成本的嵌入式微控制器,它采用Dynamic C的集成开发环境,实现快速开发。利用其内嵌的TCP/IP协议栈,实现了网络通信的系统设计。

  该系统以嵌入式 Webserver技术为基础,结合Rabbit 2000的网络通信功能,利用现有的以太网技术(如HTTP、CGI等),将采集到的现场数据通过网页的形式,提供给远程用户使用。

  该系统的设计难点之一在于如何利用Rabbit MPU有限的资源信息,使用其内嵌的TCP/IP协议栈,进行HTTP、TCP、UDP、IP等协议的处理,使之可以变成可在互联网上传输的IP数据包以及可在内置Web页上浏览的数据。难点之二在于实现通过网页进行远程访问的能力,解决这个问题要通过对Rabbit MPU进行TCP/IP编程,将其配置成一个简单的Web服务器,就可以以网页服务的形式将现场数据传递给远程用户。

  该设计是用上位工控机与Rabbit 2000通过集线器相连接,并经由网关连接到以太网上。

 

  浏览器与Web服务器的交互是通过CGI程序来完成的。CGI(Common Gateway Interface)是一段运行在Web服务器上的程序,可以是可执行文件,也可以是脚本文件。CGI程序可以动态地产生HTML网页,因此可将实时采集到的数据通过网页发回给客户机。CGI通常是客户机与服务器中其它程序进行信息传递与沟通的桥梁。

  实时监控用到了Java Applet 的概念。在服务器程序中生成内嵌Java Applet 的动态网页,由这些Java Applet 负责读取采集到的现场节点的数据文件。这样,在监控的客户机端,包括Java 虚拟机(JVM) 的浏览器将自动解释服务器网页嵌入的Java 程序,远程读取现场节点的实时数据并加以显示。

    2 系统原理及功能

  Rabbit 2000 MPU是Rabbit半导体公司推出的高性能8位微处理器;带RJ-45插口的内置10Base-T端口简化了网络连接,便于开发带以太网接口的监控、通信设备;配备有4个串行口,方便扩展连接;拥有26根并行的I/O引线以及16根可设置的I/O引线,无须扩展即可完成一般的I/O任务;拥有512K Flash,128K SRAM,用于代码和数据存储;采用双列直插式引脚,尺寸仅为59mm×41mm×22 mm。这种结构促进了嵌入式系统的快速开发,并可实现集成的以太网连接。

  而Dynamic C是专门为Z-World 产品创建的软件平台,它使得在功能强大的嵌入式系统上进行实时编程易于实现。这一平台拥有多种优点,包括多任务和优先多任务的强大的语言扩展能力;带单步编译、链接和目标下装的快速编译;对浮点运算和先验函数的快速支持;RS-232和RS-485串行通信以及模拟和数字I/O驱动;全功能的源代码,完全支持汇编语言,汇编代码可以方便的与C代码混用。

  客户机/服务器的程序设计模式在网络程序中被大量的应用,本系统也采用这种设计方法。这种设计模式将整个系统分为两大部分——服务器部分和客户机部分。客户机向服务器提出请求,服务器对请求做相应的处理,将结果返回给客户机。

  根据不同的实际情况,客户机/服务器的通信存在对称和非对称的两种方式。在对称的方式下,通信的每一方都可能扮演主从角色;在非对称的方式下,一方不可改变的认为是主机,而另一方则是从机。无论是对称的或是非对称的,当服务被提供时必然存在客户进程和服务进程。基于UDP协议的通信既可采用对称方式也可采用非对称方式。
    3 网络协议栈的实现

  通常TCP/IP协议是一个四层协议系统,包括数据链路层、网络层(含IP协议)、传输层(含TCP协议)和应用层,每一层负责不同的功能。基于TCP/IP协议可以实现多种功能应用,如:HTTP(超文本传输控制协议)、TELNET(远程登录)、FTP(文件传输协议)、UDP(用户数据报协议)等。本系统主要涉及HTTP,UDP,也就是WebServer在应用层的主要构成协议。

    3.1 TCP/IP协议栈的实现

  IP包含编址方案,并提供寻址功能;TCP则是在不同主机的对等进程之间提供可靠的进程通信。在TCP两端口所连接的实体中,一端为应用程序进程或者用户,另一端则为底层协议,如IP协议。TCP在建立连接的过程中采用三向握手机制,以保证数据的可靠性。

  以下是用Dynamic C实现TCP/IP协议通信的程序主体框架。程序中起始宏定义为默认IP配置信息;“memmap”语句可以使程序在芯片中运行时,如同在扩展代码窗口下被编译;“use”语句使编译器按照库文件配置编译代码。

  # define TCPCONFIG 1
  # memmap xmem
  # use dcrtcplib
  main() {
   sock_ init();
   for( ) {
   tcp_ tick(NULL) }
   }

  sock_ init()和tcp_ tick() 都是TCP/IP函数库的基本函数,前者为初始化TCP/IP协议栈函数,使协议栈开始处理入栈数据报;后者主要有两个用途:1支持后台处理的最新信息;2测试TCP套接字的状态。

    3.2 HTTP的实现 

  HTTP服务器可使HTML(超文本链接标示语言)页面,如Web页和其它文件为客户端所使用。在Dynamic C中,HTTP由httplib来负责实现。HTTP服务器实现的主体框架如下:

  # define TCPCONFIG 1
  # memmap xmem
  # use “dcrtcplib”
  # use “httplib”
  main() {
   sock_ init();
   http_ init();
   tcp_ reserveport(80);
   while (1) {
   http_ handler(); }
  }

  在以上基础上,用户可以根据自己的需要在程序框架上添加构成WebServer 的所有其它动态或静态元素(无论是否符合HTML标准)。

    3.3 UDP协议的实现

  UDP协议是传输层协议之一,使用IP作为网络层协议,为应用程序发送和接收数据报。但它提供无链接服务,是不可靠传输。因此UDP报文主要用于需要实时数据传输的情况,一次传输少量数据。在某些对实时性要求较高的场合,利用UDP报文进行传输是必要的,但需采用一些可靠性方案,防止漏传、误传现象的发生。

  数据报套接字(socket)是通信的基础,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包括网络通信必须的五种信息:链接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

 

  UDP协议支持数据报套接字。这种套接字可以采用客户/服务器模式,以全双工方式工作,接收、发送可同时进行,但并不保证数据传输的可靠性、有序性和无重复性。

  使用Dynamic C实现UDP报文的传输,通信程序的基本框架为:
  # define TCPCONFIG 1
  # memmap xmem
  # use dcrtcplib
  main() {
   sock_init();
   udp_open();
   udp_recv();
   udp_send();
   tcp_tick();
   sock_close() 
  }

  在以上UDP协议下的基本通信流程中,udp_ open为打开数据报套接字函数, udp_ recv函数的作用是接收远地主机发送的数据报,udp_ send函数可发送数据报给远地主机,最后是关闭套接字sock_ close 。

    4 CGI子程序

  客户机上的主页和服务器之间的通讯主要是由CGI程序实现。在客户端主页上填好的Form(表格)中的数据(例如用户账号和密码信息),或Applet程序需要传输的数据,或是其它类型的请求,都可以提交给CGI程序处理。

  CGI接口是由HTTP服务器提供的。用户浏览器可以访问HTTP服务器,申请调用某个CGI程序,接收用户的输入,进行计算或其它处理,然后把结果返回给用户浏览器。

  在HTTP服务器程序中编写用户的自定义函数,用来处理从用户端浏览器发送过来的CGI请求。在Dynamic C 中通过结构HTTPSPEC_ FUNCTION将用户自定义函数和每一个CGI请求联系起来,这样,当一个CGI请求被触发并且送到HTTP服务器上时,服务器程序就将寻找相应的函数进行计算或处理,并返回结果。
 
 

  本系统中基本上所有的网页都可通过用户自定义函数调用Dynamic C中的cgi_ sendstring函数来动态生成的。一个可行的整体思路是,先用Microsoft Frontpage静态生成用户信息认证界面,用#ximport将该HTML文件下装到Rabbit 2000的内存中,并且设置为系统的首页。当HTTP服务器运行时,远程用户连接到该服务器上,认证页面就将作为首页下载到客户端浏览器。如果用户输入的认证信息是错误的,系统将动态生成“账号或密码错误”的页面,并返回认证页面;反之,如果是合法用户,系统将动态生成一个包含所有超级链接的页面(这个功能可由一个负责表格提交的CGI程序来实现)。

    5 Java Applet的概念及编程

  JavaApplet是一种嵌入在WWW页面上的小程序,可以作为网页的组成部分被下载,并能运行在实现Java虚拟机(JVM)的Web浏览器中。与Java应用程序不同,Java Applet没有主程序,在安全机制方面也有诸多限制。

  通常情况下,设计小程序是为了给主页增加交互性,使页面更加生动活泼。典型的Java Applet程序有如动画、实时更新Internet服务器信息回取等功能。

  在Java中每个Applet都是由Applet的子类来实现的。开发人员自定义的Applet通过重载Applet的几个主要成员函数完成小应用程序的初始化、绘制和运行。这些函数是init()、paint()、start()和destroy()等。

  一个Applet的生命周期与Web页面有关。当首次加载含Applet的页面时,浏览器调用init()方法,完成Applet的初始化。然后调用paint()和start()方法绘制和启动程序。当用户离开页面时,浏览器调用stop()方法停止小程序的运行。若用户关闭浏览器将使Applet停止运行,浏览器调用destroy()方法终止,使小应用程序有机会释放启存在期间锁定的资源。只要用户不关闭浏览器,重新加载页面,浏览器就只调用start()方法和paint()方法重新绘制并运行小程序。

  由于Java Applet程序具有循环函数,一般在编程时都要用到多线程,对每一个Applet开一个线程。例如:
  
    public class ailist extends java.applet.Applet implements Runnable{……}
  
    表示该Applet ailist来自基类java.applet.Applet,并应用Runnable支持多线程。

    6 小 结
  
    Rabbit 2000 是为了促进嵌入式系统的快速开发和实现集成的以太网链接而设计的。集成的以太网端口允许用户通过使用经济的网络软件进行瞬间的本地链接或全球范围的链接,具有极为广阔的应用前景。本文给出了应用Rabbit 2000 MPU架构WebServer的主要原理和设计方法,相信对有关的实际工作会有些帮助。

 
【相关文章】
·基于Rabbit 2000以太网通信技术及其实现
·基于μPD78045F单片机的软件UART
·中间直流总线架构使用最新MOSFET技术
·21 世纪的先进电路组装技术
·可编程阵列逻辑(PAL)技术
 
 
新闻搜索
 
新闻热点
基于红外超声光电编码器的室内移动小车定位系
非移动市场需求飙升,ARM预计2010年出货量超50亿片
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
Zetex迷你晶体管功率达1.25W
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9