基于DSP网络中的TCP/IP协议研究
发布时间:2006-10-14 4:13:33   收集提供:gaoqian
  1 引言

  对于以数字信号处理器(DSP)为核心的局域网络,在深入了解网络接口控制器(NIC)的工作原理基础上,可以自己制订一套通信协议,通过对网卡直接编程,实现局域网内任意站点之间的通信而完全抛开网络操作系统。但是,如何抛开接口控制卡实现DSP网络与PC机之间的直接通信,从而使以DSP为核心的处理系统与Internet无缝对接呢?TCP/IP协议是Internet的基础,也是PC机网卡网络操作系统的核心,本文通过对TCP/IP协议的具体分析,解决了以数字信号处理器(DSP)为核心的局域网络DSP端的IP地址问题,实现了DSP与PC机之间的UDP协议通信,从而将DSP处理系统带进一个新的数字化网络时代。

2 研究方法与步骤

  TCP/IP协议是成熟的,关键是如何应用到以DSP为核心的网络系统中并解决什么问题。基本的研究方法是:PC机端基于TCP/IP协议的网络操作系统,可以使用Visual C++、运用应用编程接口(API)编写网络通信程序,DSP端则对网卡直接操作,直接对PC机发来的数据包解包分析,理论资料与实践结果相互验证、相互补充,从而DSP端也能按照TCP/IP协议正确打包和发送,最后实现DSP机的IP寻址及PC机与DSP机网络层和传输层上的通信。主要分三步进行研究:

  (1)研究TCP/IP协议结构,熟悉数据包按照协议进行封装和分用的过程以及各种具体协议的首部格式。

  (2)在DSP端和PC机之间实现IP数据报的传送,应用ARP(地址解析协议)给DSP机赋予IP地址,应用ICMP(INTERNET控制报文协议)验证IP地址,这是链路层和网络层的问题。

  (3)在DSP端和PC机之间实现UDP协议通信,这是传输层的问题。

3 DSP端网络接口的IP地址

  互联网上的每一个网络接口都有一个IP地址,而在DSP端,网络接口只有一个物理地址,如何赋予它一个IP地址并且通知PC机,从而PC机可以根据IP地址给DSP发送报文呢?这就需要用到TCP/IP协议族中的地址解析协议(ARP),它为32位的IP地址和数据链路层使用的任何类型地址提供映射。实际的过程是这样的:

  (1)首先给DSP网络中的每一个工作点分配一个虚拟的IP地址;

  (2)PC机以广播方式给DSP网络中的每一个工作点发送一份ARP请求,ARP请求数据帧中包含目的主机的IP地址;

  (3)DSP收到这份广播报文后,识别出这是发送端在询问它的IP地址,于是发送一个ARP应答,这个ARP应答包含该网络接口的IP地址和物理地址,于是,这样就实现了IP地址和物理地址的一一对应,也就是,PC机知道了DSP网络中的每一个工作点的物理地址对应的IP地址。

4 DSP与PC机的UDP通信实现

  首先用一台DSP机进行试验,实现PC机与DSP机端到端的通信,分两步进行:(1)PC机发送,DSP机接收;(2)DSP机发送,PC机接收。

  PC机端操作平台基于Windows,使用Windows层操作,对于用户来说不需要清楚数据是如何传输的;DSP端对网卡直接操作,关键问题是要清楚TCP/IP协议下数据包的格式,这样才能正确地分解出PC机发过来的消息,也才能正确地打包数据发给PC机。

  在PC机上,制作了一个对话框,对话框能够实现查询自己所在主机的IP地址,并且用户可以指定一个范围为1024~4999的目的端口用作发送数据所到达的接收进程,同时指定一个在5000~65535的源端口号用于接收数据,在DSP端,则可以直接读出数据包每一个字节的16进制数,然后对照IP和UDP首部格式分析每一个字段的含义,并分解出消息,从而也为DSP端使用UDP协议正确打包IP数据报提供依据。具体工作流程及源程序有兴趣的读者可以与笔者联系。在试验中笔者用DSP机发送了三个消息:Hello!Welcome!Good morning!PC机都正确收到并显示出来。

5 结论

  在信息时代的今天,Internet技术将不会仅仅局限于人与人(或团体)之间信息的交流。例如E-mail、WEB浏览等,或者仅仅停留在企业与企业及与个人在商务方面的信息交换上,例如电子商务e-business等,Internet技术将会深入到人们日常生活和工作的电子设备中,而且势不可挡。各国信息界同仁都在关注并研究电子设备与Internet的连接问题,DSP网络中的TCP/IP协议研究解决了以DSP为核心的处理系统与Internet的连接问题,为DSP设备的应用开辟了更为广阔的前景。

摘:仪器仪表学报第3期增刊
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50