当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]PC104计算机网络通讯系统设计与研究

摘要:本文介绍了基于DOS操作系统下嵌入式PC104计算机的UDP网络通讯的实现基理,重点提出了如何解决不可靠的、非面向连接的UDP通讯丢帧问题。给出了实际某火控系统中UDP网络通讯的硬件设计和部分软件代码、相关流程图。
关键词:DOS;嵌入式PC104计算机;TCP;UDP;SOCKET;丢帧

1.引言

  随着互联网技术的飞速发展以及系统工程中对嵌入式计算机的体积、功耗、硬件开销等方面要求的加强,嵌入式计算机不仅仅要实现单一的串行数据的传输,还要实现网络通讯。特别是DOS操作系统以其内核小、操作简单、技术成熟等优点使其在嵌入式操作系统领域占有重要的地位。但是,DOS操作系统没有Windows操作系统中Winsock这样的API,使得网络通讯的开发工作量及难度相对较大,下面介绍某火控系统中基于DOS操作系统的UDP网络通讯软、硬件系统设计,并在保证UDP通讯快速交付、传输等优点的同时,又针对UDP网络通讯系统的不可靠性做了必要防护设计,很好的克服了UDP网络通讯中的丢帧、误码这一实际工程难题。

2.网络通讯系统的硬件组成

      

型号为SCM/SDXa的 PC104采用增强型的80486处理器做CPU,板上包含了所有的PC/AT兼容的DMA控制器、中断控制器及定时器,ROM-BIOS,32M字节的DRAM及键盘、喇叭接口;在板的外部接口包括两个串行口、并口、IDE接口、软盘接口、CRT接口、平板显示接口、重要的是与NE2000兼容的RTL8019网络接口。该款PC104做为硬件PCB电路设计的主要核心部件。ST16C554的四串口卡实现串行通讯,isp1032E门电路作为各个分系统的同步基准信号源,8255A并口电路来控制响应外部按键。系统编译软件采用的是Borland C++。

3.非面向连接的UDP数据报套接字网络通讯

在UDP网络应用中,首先要调用Socket建立套接字,然后用bind绑定本地地址、与端口。与面向连接的TCP流式套接字不同的是它不需要侦听和建立连接,此时通过调用Recvfrom()和sendto()函数就可以进行数据读写了,客户端与此相同。

 


图2  UDP数据报套接字调用过程图

4.DOS下的UDP网络通讯设计

4.1网卡驱动

    型号为SCM/SDXa 的PC104内嵌的网卡为RTL8019网络接口芯片,首先要运行RSET8019.exe来设置网卡参数。主要设置网卡的中断号为中断15,基地址为320H(根据不同款的PC104,进行不同的设置)。然后需要运行NE2000.COM来安装网卡的底层信息包驱动。需要设置网卡的软中断为0x62.软中断可以在60H到70H之间的任何数。 运行格式如下NE2000 0x62 15 0x320; 最后需要在autoexec.bat里设置:ne2000  0x62 15 0x320。

4.2 UDP网络通讯工程模型建立

需要在Borland C++下建立工程文件,工程文件中要加入DSOCK.LIB和dsock.h。DSOCK.LIB是DOS 模式下的Dsock库的支持文件,它是把网络通讯底层驱动文件和应用层C编译文件连接的桥梁。dsock.h是支持Dsock的C语言的头文件。还要在工程文件夹下根据不同工程要求修改DSOCK.CFG文件。

  DSOCK.CFG文件修改如下:

ip=192.21.209.61

netmask=255.255.255.0

4.3 UDP网络通讯特点及防丢帧设计与研究

UDP协议的网络通讯是非面向连接的、不可靠的,但是UDP协议在某些方面有其特殊的优点:发送数据之前不需要建立连接,减少了开销和发送数据之前的时延;不使用拥塞控制,也不保证可靠交付,主机不需要维持具有许多参数的、复杂的连接状态表;用户数据报只有8个字节的首部开销,要比TCP的20个字节的首部要短;由于UDP没有拥塞控制,网络出现的拥塞不会使主机的发送速率降低。

为了克服UDP通讯的不可靠性可以通过软件做类似像TCP“握手”一样的通讯过程,但是这样便大大折扣了UDP通讯的优点,增加了开销和延时。为了即保证UDP的交付、通讯的快速性又要避免UDP通讯的不可靠性,在控制软件中做了以下设计。

1.    在传输的每一帧中,我们规定报头信息状态字包含了报头单元序号,即与本地端口号唯一对应的报头单元序号。例如:在信源(information origin)规定了报头单元序号为0x7d对应的端口号为1600,网络连通后,信宿(information end-result)判断接收的数据报头单元序号是否为0x7d,是则表示接收来自端口号为1600的数据。否则可能是因网络数据发生碰撞、拥塞而产生的误码、误帧错误。

2.    在传输的每一帧中,我们规定报头信息状态字包含了信息单元序号,即与每一帧唯一对应的信息单元序号。例如:在第一个时间周期内发送的一帧的信息单元序号为00,而在下一个时间周期内发送的一帧的信息单元序号则做加一处理为01,依次类推直到255完成一个循环。这样实现了信源单元序号从0-255的连续循环发送,信宿可以通过检查信息单元序号的连续性、完整性来判断接收到的数据是否有丢帧现象。

3.    对数据帧做校验和运算,所谓的校验和就是信源对除去信息单元序号、报头单元序号、信息长度、报文标志等报头信息外的具体数据字节段做逻辑异或处理。校验和运算结果做帧尾送至信宿,信宿接收后对也做解校验和的运算,如果与信源的一致就表明这帧为有效的网络信道传输数据,否则丢弃。

4.    设置时间戳信息,信源的每一帧中包含了发送该帧时刻的四个字节时间戳信息,精度为1ms。信宿把本周期内接收到的时间戳再打包回送到信源,信源将时间戳与上一周期帧数据发送时刻的时间戳做信息比较,如果一致则说明没有丢帧现象。

5.    设计了丢帧、误码错误判断累加信息,即针对上述四种情况而产生的错误信息次数做累加统计。并且在显示器上实时的显示,这样可以很直观的显示出每次网络通讯过程中具体的错误信息次数,以便更好的改进UDP网络通讯的不足。

通过以上设计满足1%的误码率测试要求。

4.4 UDP网络通讯系统的工程应用

在某工程中,我们采用了10MB/S带宽的以太网,通讯分系统和上级火控系统通过网络传输,通讯分系统和伺服分系统、电视分系统通过串行通讯进行连接。isp1032E门阵列时统电路产生不同频率的时统信号,以达到各个分系统之间同步的目的。UDP通讯主要函数及流程图如下:

BOOL Dsock_Open()函数实现的功能是打开一个Dsock socket 库。

BOOL Dsock_LoadConfigFile(char *szFile) 函数是加载网络设置的配置文件,即我们上边所提到的dsock.cfg文件。

SOCKET SocketCreate(int nType)函数创建一个socket类。nType的类型可以为TCP_SOCKET或UDP_SOCKET.

BOOL SocketBind(SOCKET s,DWORD dwAddr,WORD wPort)函数是实现绑定本地IP地址和本地端口。dwAddr为本地IP地址,wPort为本地端口号。

int SocketDataReady(SOCKET s)函数实现查询通过建立的套接字s返回的数据。该函数的返回值为socket 接收到数据的个数。

int SocketRecvFrom(SOCKET s,DWORD *pdwAddr,WORD *pwPort,BYTE *pby,int nlen)函数为通过UDP Socket 接收到的数据。

int SocketSendTo(SOCKET s,DWORD dwAddr,WORD wPort,BYTE *pby,int nlen) 函数为通过UDP Socket 发送的数据。

 

图3 UDP通讯主要实现流程图

5.结语

   本文介绍了基于DOS下PC104计算机UDP网络通讯系统的软、硬件设计原理和过程,文中提到的一些理论和方法,在某实际工程项目中得到了很好的验证,并达到实际丢帧碰撞技术指标。本通讯系统的防止丢帧设计设计思想可以推广到其它嵌入式UDP通讯设备。本文作者创新点:设计如何在DOS操作系统下更好的解决UDP通讯的优点与不可靠性这一矛盾问题。

参考文献:

[1] 谢希仁 . 计算机网络[M] 北京:电子工业出版社 2003。

[2] 蒋东兴 . Windows Sockets网络程序设计大全[M]. 北京:清华大学出版社 1999。

[3] 胡道元  INTRANET 网络技术及应用[M]  北京:清华大学出版社1998年5月第1版。

[4] [美] Ander S.Tanenbaum 著,Computer Neterworks,[M] 北京:清华大学出版社 1999 。

[5] [美] William A. T.  Mary A. P.   Keith A.B 著, Internet 使用大全[M],北京:清华大学出版社,1995。

[6] 周明天 、汪文勇,TCP/IP网络原理与技术[M],北京:清华大学出版社,1993。

[7] 邓全良.  Winsock网络程序设计[M]. 北京:中国铁道出版社,2002。

[8] 高超.VxWorks下网卡驱动程序的开发[J].微计算机信息,2004.(9):10,11.

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

大家好,我是鲏。认识我的朋友都知道,我是一个实践派,相比研究枯燥的理论知识,我更喜欢做自己想做的项目,用技术来实现自己的想法的感觉真的很棒。所以从大学期间一直到现在,除了工作中的项目外,我依然保持着自己做项目的习惯,有坚...

关键字: 系统设计 技术选型 需求分析

(全球TMT2022年8月30日讯)近日,在2022英特尔中国数据中心合作伙伴技术峰会上,英特尔与浪潮信息等产业生态伙伴联合发布了《绿色数据中心创新实践 -- 冷板液冷系统设计参考》白皮书,分享冷板液冷技术关键部件的最...

关键字: 系统设计 英特尔 数据中心 生态系统

北京2022年8月30日 /美通社/ -- 近日,在2022英特尔中国数据中心合作伙伴技术峰会上,英特尔与浪潮信息等产业生态伙伴联合发布了《绿色数据中心创新实践 -- 冷板液冷系统设计参考》白皮书,分享冷板液冷技术关键部...

关键字: 系统设计 英特尔 数据中心 电量

摘要:近年来,受人类活动的影响,各大水域的水质污染问题越来越严重,大部分水资源受到严重污染,水质处理问题亟需解决。分析水体污染情况对改进水质有着重要意义,目前水质监测主要采用人工或无人船的方式。人工监测方式工作量大,影响...

关键字: 水质监测 无人机 系统设计

摘要:根据饶平县高堂水闸重建工程建设实际需求,对高堂水闸运行管理进行实时在线式监控与监测,通过闸门控制、视频监控、水情测报、安全监测和网络通信等系统的设计,为高堂水闸的水工建筑物安全、防洪调度和自动化管理提供技术支持,以...

关键字: 管理信息系统 水利工程 系统设计

湖州2022年7月26日 /美通社/ -- 近日,浙江省科技创新大会在浙江省人民大会堂隆重举行。大会正式颁布2021年度浙江省科学技术进步奖,隆重表彰为浙江科技创新事业和经济社会发展做出突出贡献的科技工作者及团队。...

关键字: 电梯 检测技术 系统设计 零部件

摘要:简要介绍了柴油发电机组和重油发电机组的构成和主要特点,以某发电厂重柴油发电机组系统设计为例,重点分析了重油发电机组燃油系统、润滑油系统、循环冷却水系统、压缩空气系统的设计要点,以提高柴油、重油发电机组的运行效率和运...

关键字: 重油发电机组 特性 系统设计

摘要:针对一种小型消费级水下机器人,分析了其系统总体设计及各关键子系统(推进系统、通信系统、控制系统及其他系统等)设计的要点和方法,举例介绍了一种五推进器小型消费级水下机器人。经验证,该设计方法可以用于同类型水下机器人的...

关键字: 推进器 系统设计 五推进器

在我国5G 技术火爆之后,工信部就正式为我国的三大运营商下发了5G网络的商用牌照。在这之后三大运营商就开始不遗余力的建设5G网络,全国人民也进入了5G网络热潮当中。

关键字: 5G 网络通讯 运营商

提供全面高效的电源管理建模,适用于汽车和工业应用领域 加州山景城2022年5月24日 /美通社/ -- 新思科技(纳斯达克股票代码:SNPS)和Analog Devices, Inc. 近日宣布达成合作,通过...

关键字: ADI 电源系统 系统设计 新思科技

嵌入式软件

15715 篇文章

关注

发布文章

编辑精选

技术子站

关闭