利用RCM2200实现以太网与异步串口的通信
摘要 本文研究基于RCM2200嵌入式系统对网络和串口的编程技术。介绍了RCM2200微控制器核心模块以及Dynamic C软件开发环境,讲述了如何利用Dynamic C语言通过RCM2200核心模块实现UDP报文和异步串口数据的互相转换。Dynamic
C是与RCM2200配套使用的软件开发语言,它拥有丰富的库函数以便程序员编程时调用,结果表明,运用该语言能实现基于RCM2200以太网与异步串口之间的成功通信。
关键词 嵌入式系统;RCM2200;UDP报文;串口通信
1 引言
目前,嵌入式技术已经广泛渗入并应用到各领域,涉及到多种传统及现代技术,形成了前所未有的多学科、多领域的交叉与融合。由Z-World公司推出的RCM2200[1]是一款低成本的嵌入式微控制器核心模块,它采用Dynamic C®[2]这一专门为Z-World产品创建的集成的C 编译器、编辑器、链接器、装载器和调试器,便于实现快速开发应用,加快产品投放到市场。
UDP协议[3][4]是比较著名的传输层协议之一,它与TCP协议一样是基于IP协议的,但与TCP不同的是它不需要协议层提供质量保证,因此,在需要实时数据传输的情况下应用比较广泛。并且,因为不提供质量保证,服务器没有必要一直处于等待状态,从而大大减轻了服务器的负担。在某些情况下,还可以根据需要给UDP报文加上一些质量保证控制,有很大的灵活度。
在不远的将来,将设备与网络相连将成为一种趋势。在诸如GPS串口数据网络收发以及某些语音传输、实时监控等多种场合,实现以太网与异步串口数据之间的通信是非常必要的。本文介绍了一种基于RCM2200嵌入式微控制器核心模块利用UDP报文实现网络与串口互通的方法,可以迅速实现将串口与网络相连接。
2 系统原理及功能
RCM2200采用Rabbit半导体公司推出的高性能8位器件-Rabbit2000型微处理器;带RJ-45插口的内置10Base-T端口简化了网络连接,便于开发带以太网接口的监控、通讯设备;配备有4个串行口,方便扩展联接;拥有26根并行的I/O引线以及16根可设置的I/O引线,无须扩展即可完成一般的I/O任务;拥有256K Flash,128K SRAM, 用于代码存储和数据存储;时间、日期、看门狗、定时器等一应俱全;且其采用双列直插式引脚,尺寸仅为59 x 41 x 22 mm。这种结构促进了嵌
入式系统的快速开发,并可实现集成的以太网连接。
RCM2200系统的基本框架结构如图1所示。
图1 RCM2200系统结构
RCM2200采用Dynamic C®语言进行软件开发,与标准C语言相比,Dynamic C的改进和差异在于使得在功能强大的嵌入式系统上进行实时
编程变得非常容易。 语言的扩展包括多任务和优
先多任务的构造,当供电失败时,能够保护写入变量, 能够写入到中断程序中去。标准C函数库,特定板的外围驱动,芯片外围设备,以及其他的性能以源代码的形式包含在Dynamic C中。完全支持汇编语言,在对时间要求较高的应用中,汇编代码可以方便的与C代码混用。
在该开发系统中将RCM2200的以太网接口与当地局域网相连,选择一个串口与计算机的串口相连。由以太网发送UDP报文给RCM2200微控制器核心模块经过处理后通过串口发送给计算机,由计算机串口发送数据给RCM2200微控制器核心模块经过处理后通过其上的网络口发送UDP报文给以太网,从而实现基于RCM2200以太网和串口之间的通信。
3 UDP协议的实现
UDP协议是比较著名的传输层协议之一,它使用IP作为网络层协议,为应用程序发送和接收数据报。但是,它提供无连接服务,是不可靠传输。因此,UDP报文主要用于需要实时数据传输的情况,一次传输少量的数据。在某些对实时性要求很高的场合,利用UDP报文进行数据传输是非常必要的,但往往要采用一些可靠性方案,以防止有漏传、误传的现象发生。
3.1 客户机/服务器程序设计模式
客户机/服务器的程序设计模式在网络程序设计中被大量的应用。这种设计模式将整个系统分为两大部分——服务器部分和客户机部分。客户机向服务器提出请求,服务器对请求作相应的处理将结果返回给客户机。
根据不同的实际情况,客户机/服务器的通信存在对称和非对称两种方式。在对称的方式下,通信的每一方都可能扮演主从角色;在非对称的方式下,一方不可改变的认为是主机,而另一方则是从机。无论是对称的或是非对称的,当服务被提供时必然存在客户进程和服务进程。基于UDP协议的通信既可采用对称方式也可采用非对称方式。
3.2 数据报套接字
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
UDP协议支持数据报套接字。这种套接字可以采用客户/服务器模式,以全双工方式工作,接收发送可以同时进行,但并不保证数据传输的可靠性、有序性和无重复性,需要由程序员负责管理数据报的排序和可靠性。
3.3 使用Dynamic C实现UDP报文的传输
Dynamic C提供了许多支持TCP/IP协议的库函数。其中,DCRTCP.LIB是最主要的函数库。
下面将简要介绍UDP协议下的基本通信流程。
3.3.1 调用本地初始