当前,MCU(微控制器)已经在舰船上得到了广泛应用。主要的应用方式有两种:一种是以MCU为核心,与一些监视、伺服、显示设备配合,实现一定功能的单独应用,例如各种智能仪器仪表、一些数据采集与处理设备;另一种是利用CAN、RS-422/485等将多个MCU系统组成局域网络,实现MCU之间的信息交流和共享,与前一种方式相比,这种局域网络有很大的优势,但是也存在着透明传输的可靠性低、通讯效率低和传输距离短等弊端[1-3]。随着Internet技术的发展,将嵌入式系统接入网络,利用全舰的网络资源实现舰船信息化是一种发展趋势。本文以某型舰船上数据采集与处理系统的开发为例来研究嵌入式Internet技术在舰船上的应用[4-6]。
系统主要由ARM7内核处理器S3C44B0X、以太网控制器CS8900A、网络变压器HR901170A和存储器Flash组成。系统硬件结构如图1所示,系统提供RJ45接口连接以太网,提供一个WM485接口与现场设备串行总线连接,实现数据的网络传输和设备的远程控制。
图1 系统硬件结构图
其中:S3C44B0X负责控制整个系统,实现网络数据和串口数据的交换;CS8900A进行网络数据的接收和发送;HR901170A起信号传输、阻抗匹配、波形修复、杂波抑制以及高电压隔离等作用,以保护系统的安全;Flash扩展系统存储空间;WM485实现RS-485串行总线和TTL电平之间的转换。
系统软件主要包括:操作系统的移植、TCP/IP协议栈的实现程序、以太网控制器CS8900A的驱动程序、数据采集和处理及监控程序。其中, TCP/IP协议栈的实现程序包括:ARP与IP网络层协议的实现程序和ICMP及UDP传输层协议的实现程序;以太网控制器CS8900A的驱动程序包括:初始化设置和收发数据包程序;数据采集和处理程序,包括数据收发格式转换和暂存。
对于μC/OS-Ⅱ内核向S3C44B0X中的移植,根据处理器的特点合理地修改μC/OS-Ⅱ的3个与处理器相关的文件:OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C。主要是将文件中的汇编指令改为ARM7的汇编指令,并根据处理器的特点对文件中寄存器的初值进行适当改写。
TCP/IP协议栈采用lwIP,lwIP是瑞士计算机科学院的AdamDunkels等开发的1套用于嵌入式系统的开放源代码TCP/IP协议栈。lwIP的特性有:支持多网络接口下的IP转发;支持ICMP协议;包括实验性扩展的UDP(用户数据报协议);包括阻塞控制、RTT估算、快速恢复和快速转发的TCP(传输控制协议);提供专门的内部回调接口(raw API)用于提高应用程序性能。
lwIP可以很容易地在μC/OS-Ⅱ的调度下,为系统增加网络通信和网络管理功能。lwIP协议栈在设计时就考虑到了将来的移植问题,把所有与硬件、OS、编译器相关的部分独立出来放在/src/arch目录下。因此lwIP在μC/OS-Ⅱ上的实现就是修改这个目录下的文件,其它文件一般不用修改。在驱动中主要是根据S3C44B0X内的以太网控制特殊功能寄存器编写网络接口的发送包、接收包的函数、初始化以及用于以太网控制器的外部中断服务程序。
TCP/IP协议的4层模型中,链路层部分由CS8900A完成,网络层和传输层由S3C44B0X处理,应用层则根据需要可以在S3C44B0X内完成,也可以由S3C44B0X转给用户或终端设备完成,本系统由用户来完成。
S3C44B0X负责对CS8900A进行初始化配置,完成各种必要的控制并实现数据的网络传输等功能。其中CS8900A的初始化主要包括:设置物理地址(MAC地址)、设置IP地址、设置工作模式、初始化工作端口(10BASE-T)、确定数据的传输方向为全双工、设置数据发送和接收的格式等。本系统中CS8900A工作在I/ O模式下,I/O基地址取默认值0X300,采用中断模式进行接收。CS8900A采用16位数据长度与S3C44B0X进行数据交换。
本系统利用CS8900A和软件实现TCP/IP,当以太网或者串行总线有数据发送到本系统时,系统的软件将对其进行格式转换,数据转换完成后可立即传送,亦可在MCU中保存一段缓冲时间然后发送。
S3C44B0X将数据按照CS8900A发送数据帧格式进行封装,封装完成后通过远程DMA通道将数据包发送到CS8900A的发送缓冲区,然后通过本地DMA将数据送到FIFO,通过设置寄存器CR启动发送,数据经网络变压器滤波后,通过RJ-45送出。
CS8900A通过本地DMA从RJ-45接受数据,CS8900A对接收到的数据包通过MAC比较、CRC校验,由FIFO存到接收缓冲区,收满1帧后以中断或者寄存器标志方式通知S3C44B0X,S3C44B0X通过远程DMA将缓冲区的数据读到自己的RAM,经过WM485送出。
为了实现对现场设备的监控,用VC++6.0在用户终端PC上编写一个监控程序,实时显示现场I/O数据。采用Winsock编程,同数据采集与处理系统建立连接;当有网络数据到达时,响应Receive消息,读取数据并处理;当用户发出控制信号时,调用Send函数发送控制命令或数据给数据采集与处理系统。为提高显示界面的友好性,采用类似虚拟仪器的图形化人机界面设计方法,通过形象地代表现场I/O的控件显示I/O的状态。
本系统涉及到很多任务操作和相互调用,需要进行多任务调度管理。根据μC/OS-Ⅱ各个任务的优先级来创建任务并分给相应的优先级,各个任务建立后处于等待状态,只有一个任务在运行,通过信号调度各任务的执行。程序流程如图2所示。
图2 程序流程图
在系统启动时只有接收数据任务运行,其它的处于等待状态;当接收到数据后,接收数据任务会发一个信号给处理数据任务,这时接收数据任务把对处理器的控制权交由处理数据任务,而处理数据任务通过对数据的分析来确认它是什么命令;当要读取现场数据时,则启动操作任务,而后再到发送数据任务。
目前,该数据采集与处理系统已经在舰船上得到了成功的应用,传输可靠性高、效率高,不受传输距离限制,节省了大量的信号通信电缆,也给施工带来了一定的便利。鉴于众多亟待改装的船舶依然采用了大量的串口设备,嵌入式Internet技术可以成功地将各种现有的串口设备在不改变设备本身结构的情况下,将串口设备快速方便地接入网络,通过Internet就可以将串口设备的控制和数据采集延伸到Internet上的各个终端,方便地进行数据采集和仪器控制,数据传输可以跨越网关,从而实现仪器的远程控制、远程数据采集等功能,不论在军船上还是民船上都有很好的实用价值。
[1] STEVENS W R.TCP/IP详解,卷1:协议[M].范建华,等译.北京:机械工业出版社,2000.
[2] WRIGHT G R,STEVENS W R.TCP/IP详解,卷2:实现[M].北京:机械工业出版社,2000.
[3] FOUZAN B A,FEGAN S C著.TCP/IP协议族[M].谢希仁译.北京:清华大学出版社,2001.
[4] 曹燕.基于CSoC芯片的嵌入式以太网接口设计[J].电子技术,2003,4.
[5] 王春明.嵌入式系统与以太网互连接口设计[J].南京理工大学学报,2002:145-148.
[6] 陈学泉,关字东.嵌入式TCP/IP协议单片机技术在网络通信中的应用[J].电子技术应用,2002(8):48-49.