1 引言
在自动化控制及其他民用设备、工业控制如电力设备系统等领域,众多设备的对外通讯接口仍然是低速串口。因此现有系统的缺点是:无法集中、全面、准确而实时地监控数据。随着以太网在工业、商业领域的大规模使用以及网络自动化强劲势头的到来,用户与供应商迫切需要在任何时间和任何地点都可以实时访问数据和进行控制,做到远程快速故障分析与处理、设备的远程维护,以便提高质量,提高工作效率并降低整体成本。完全换掉这些串口通讯的设备是既不经济也不可行的。针对一些实际需求,采用串口以太网转换器就是解决这些问题的最佳解决方案。本课题串口以太网转换器正是在这一要求下设计出来的产品, 本文就是本课题下的子课题部分。
2 基于ARM7TDMI的SEP3203微处理器简介
ARM7TDMI处理器是ARM7处理器系列成员之一,是目前应用较广的32位高性能嵌入式RISC处理器,SEP3203[1]是东南大学国家专用集成电路系统工程技术研究中心基于ARM7TDMI处理器内核设计的16/32位RISC微处理器芯片。它面向低成本手持设备和其它通用嵌入式设备,为用户提供了丰富的外设、低功耗管理和低成本的外存配置。
3串口以太网转换器中与以太网接口相关的电路结构
为了实现该转换模块的研究,首先要选择一个硬件平台即嵌入式处理器。由于ARM是
基于精简指令系统(RISC)的32位内核,代码效率高,运行速度快,综合性能强,在基于ARM体系结构的嵌入式CPU中,基于ARM7TDMI体系结构的SEP3203嵌入式微处理器拥有较好的技术支持,因此本转换器选择SEP3203作为硬件平台;转换系统必须要有电源,供整个系统用;系统工作时需要有工作时钟,因此本系统需要有时钟电路;由于用户需要的转换器要有串口、USB和以太网口下载等功能,由于本文只针对以太网口,其它两个接口本文不作介绍。以太网口与嵌入式芯片之间要有一个网络模块,现把与以太网口相关电路结构的部分设计显示如图1所示。
4网络接口电路的硬件设计
SEP3203芯片内部没有集成网络模块,但SEP3203芯片设计的接口丰富,可以方便地扩展。考虑使用中可能对网速的要求比较高,因此本系统选用了10M的以太网接口。本系统的网络接口采用REALTEK公司的RTL8019芯片。RTL8019AS 是一种高度集成的以太网芯片,能简单的实现Plug and Play 并兼容NE2000。由于它拥有三种等级的掉电模式,所以它是绿色电脑的网络设备的理想选择。在全双工模式下,如果是连接到一个同样是全双工的交换机或集线器,就可实现同时接收和发送[2]。
RTL8019AS支持16KByte、32KByte、64KByte的BROM,另外还支持FLASH MENORY和页访问方式,最大支持4MByte(16K×256),此外还支持在运行完BROM 后释放内存以供系统其他程序的运行。网络接口模块的系统连接示意图如图2所示。
由图2可知,以太网接口通过系统总线外扩而成。RTL8019AS的地址使用方式有5位、8位、11位三种。使用5位地址就可以访问RTL8019AS所有的寄存器,实现最简单的网络功能。本系统使用8位地址满足了操作系统对远程DMA端口的需求。
网络接口模块和SEP3203微处理器的连接线比较简单,在PCB板上布线比较规则。网络接口芯片RTL8019的实际电路连接图见参考文献[3]。网口选用了内置变压及指示灯的RJ45网络接口,实际电路图如图3[4]所示, 对比SEP3203微处理器的SRAM接口协议,由于总线没有等待信号,所以没有使用IOCHRDY信号。由于SEP3203微处理器总线的最低数据位宽是16位,所以IOCS16B固定置于16位方式。
5软件平台Nucleus
综合考虑各个因素,我们选择了嵌入式实时操作系统Nucleus。Nucleus PLUS是美国著名RTOS厂商(ATI)(Accelerated Technology Inc)公司为实时嵌入式应用而设计的一个抢先式多任务操作系统内核,其95%的代码是用ANSI C写成的,非常便于移植并支持大多数类型的处理器。Nucleus PLUS是一组C函数库,下载到目标板的RAM中或直接烧录到到目标板的ROM中执行。在典型的目标环境中,Nucleus PLUS核心代码一般不超过20K字节大小,内核规模非常小。Nucleus PLUS除提供功能强大的内核操作系统外,还提供种类丰富的功能模块。例如用于通讯系统的局域和广域网络模块,支持图形应用的实时化Windows模块,支持nternet网的WEB产品模块,工控机实时BIOS模块,图形化用户接口,以及应用软件性能分析模块等,用户可以根据自己的应用来选择不同的应用模块。
6 网络接口通信的设计
网络接口的硬件将网络上传送来的数据送入系统内存中,并通知操作系统有网络数据到达。通常,网络接口使用中断机制来完成这一任务,一个中断时处理器将正常的处理挂起,跳转到设备驱动程序的代码段执行。此时,由设备驱动程序管理所有细节。设备驱动软件通知协议栈已经有一个分组到达,并要求进行相应的处理。当设备驱动软件完成这些繁琐的处理工作后,他将从中断返回,处理器继续从中断发生处往下执行。在本协议栈中,设备驱动程序对上层应用屏蔽了接收和发送的细节。用户只需要调用相应的套接字即可以完成数据的接收和发送。比如用户要使用非阻塞方式接收和发送数据,可以使用Select(),在Select 的timeout 参数选择NO_PREEMPT,即可以非阻塞方式接收发送。在本TCP/IP 实现中,协议栈初始化是依靠调用NETI_Init()完成的。NETI_Init()完成两个工作,首先是对网络协议栈的初始化[5], 然后就对系统所使用的网络设备进行初始化。
网络接口通信模块的流程图如图4[1]所示。
流程说明:①程序由Main()函数开始,调用taskmain()。②taskmain()调用sys_ini()对系统初始化,调hardware_ini()对硬件初始化;调用vcre_tsk()创建了6个任务,调用stak_tske()将部分任务放入就绪队列,调用sys_sta()启动系统。③通过系统调度开启任
务demo_main。④函数demo_main()调用ne2000_task()开始测试过程。⑤ne2000_task()的
主要功能是:调用Neti_Init()对网络设备进行初始化;调用Nu_add_Route()将缺省网关、
子网掩码、目标ip添加进路由表;调用Nu_socket()创建一个sockets;建立sever端的地址信息数据结构;调用 Nu_connect()向sever发送建立连接的请求,若sever返回确认则连接成功;调用Nu_send()/Nu_receive()发送/接收数据;传输完毕调用Nu_close_socket关闭socket连接,并调用Nu_sleep()挂起n个周期。
7系统测试
在PC端运行串口调试助手,该软件可从网上免费获得,软件运行后根据实际运行环境进行设置。经测试,模块转发数据正常。
8结论与展望
串口由于其易用性、可靠性及相对于工控设备而言足够高的通信能力而长盛不衰,而串口设备实现远程控制及数据共享也是大势所趋。因此,串口以太网转换器的开发是有现实意义和社会经济价值的。本课题的目的是实现串行接口的仪器接入网络使得仪器的使用网络化。为此本课题介绍了该转换器以太网口的硬件设计和软件编程实现,并且设计了整机。
因为微处理器对于各种电器设备有良好的接入和控制能力,所以我们实现了微处理器的网络接入功能后,就在电器的硬件设备和网络之间建起了一道桥梁,通过它可以实现对各种实时信号仪器仪表家用设施等目标的远程监视。在宏观上,对各种设备统一管理实现人与系统的和谐的交互,这必将大大提高工作效率,改善工作环境提升人们的生产生活水平。
本文作者创新点:①本系统采用ARM作为该系统的核心处理器,替代过去低档CPU,嵌入式实时操作系统可移植到该系统硬件平台。②本转换器提供RS232/RS485口到TCP/IP以太网口协议双向转换传输,变传统的串口通讯为网络通讯,实现串口设备的快速联网。采用透明传输方式,用户不用了解复杂的TCP/IP 协议,甚至不用更改程序即可实现原有串口设备的网络连接。