1、引言
以太网技术的广泛普及,因特网在工业、商业、传媒家庭、教育业等方面的广泛运用,使得基于以太网的系统得到了飞速发展,配置参数(黑名单、启动参数、运行参数等)及修改一直是嵌入式系统中的难题,传统的配置方法是将参数直接固化在程序中,修改时通过串口进行,在实际应用中很不方便。对于要经常改变参数的嵌入式系统,通过串口进行参数修改后再重新烧录程序,在仪器很多的情况下,技术人员的维护工作非常困难。
近来发展起来的方法是利用嵌入式Web Server和TCP/IP协议,技术人员可以通过CGI网页对嵌入式系统的参数进行浏览和修改,这种方法虽然有着良好的人机界面,使用起来也非常方便,但嵌入式Web Server 需要处理器有较强的数据处理能力,一般的MCU并不支持[1]。
在大量实践的基础上,本文详细阐述了嵌入式系统采用UDP协议来对参数进行配置修改的技术,较好的解决了嵌入式系统中参数修改问题。
2、系统原理
嵌入式系统一般由PC管理机和嵌入式终端组成。PC管理机主要对数据进行读写和管理。终端负责数据的采样并把数据传给PC机。系统结构如图1所示,终端和主机通过以太网相连,每个终端都有自己的机号和IP地址。因此,PC机不仅要对这些设备进行管理,还要进行数据通信。当终端收到PC机的命令和数据后,把数据存放在EEPROM的存储器里,然后更新系统参数。本文主要阐述系统的数据通信部分的具体实现,包括上位机和下位机的实现过程。
3、应用协议
3.1 UDP用户数据报协议
UDP是一个简单的面向数据报的传输层协议,应用程序进程的每个输出操作产生一个UDP数据报,并组装成待发送的IP数据报。UDP提供基本、低延时的传输。UDP数据报格式如图2所示[2][3]。
3.2应用数据帧封装格式
应用数据是以帧的格式封装在UDP数据里面的,它的帧格式是:帧开头(1字节)+数据长度(1字节)+机号(2字节)+命令(1字节)+数据+效验(1字节)+帧结尾(1字节)。帧以0x02开头,数据长度表示机号、命令和数据总的长度字节,效验是对前面数据和效验,帧结尾是0x03。
4、程序实现
4.1上位机程序
上位机采用VC6.0进行程序设计,网络通信部分主要由套接字Socket完成,在UDP应用编程中,一般调用Socket的RecvFrom() 和SendTo()两个主要函数即可完成数据通信,其工作流程如图3所示。
下面代码是解析下位机所返回信息。