基于VxWorks嵌人式操作系统的C/S模式网络编程

发布者:brian808090最新更新时间:2012-05-17 来源: 现代电子技术 关键字:VxWorks  嵌人式操作系统  网络编程 手机看文章 扫描二维码
随时随地手机看文章

  1 嵌入式操作系统VxWorks简介

  VxWorks操作系统是美国WindRiver 公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,使其在嵌入式实时操作系统领域占据一席之地。他以良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。

  2 VxWorks的特点

  2.1 可靠性

  稳定、可靠是VxWorks的一个突出优点,因而他得到了越来越多的用户的认可。

  2.2 实时性

  实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件做出响应的能力。实时性的强弱是以完成规定功能和做出响应时间的长短来衡量的。

  VxWorks有很强的实时性,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,他们造成的延迟很短。VxWorks 提供的多任务机制中对任务的控制采用了优先级抢占(Preemptive Priority Scheduling)和轮转调度(Round-Robin Scheduling)机制,也充分保证了可靠的实时性,使同样的硬件配置能满足更强的实时性要求,为应用的开发留下更大的余地。

  2.3 可裁减性

  VxWorks由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。VxWorks内核最小为8kB,即便加上其他必要模块,所占用的空间也很小,且不失其实时、多任务的系统特征。由于他的高度灵活性,用户可以很容易地对这一操作系统进行定制或做适当开发,来满足自己的实际应用需要。

  3 C/S模式网络编程

  网络是VxWorks系统之间以及与其他系统联系的主要途径。在VxWorks网络结构的最底层,通常使用以太网作为传输媒介;而在传输媒介的上一层,则使用TCP/IP和UDP/IP协议。

  VxWorks网络编程中最常见的是C/S模式,在该模式下,服务器端有一个任务(或多个任务)在指定的端口等待客户来连接,服务程序等待客户的连接信息,一旦连接上之后,就可以按照设计的数据交换方法和格式进行数据的传输;而客户端则在需要的时候发出向服务端的连接请求。客户端与服务器端的关系如图1 所示。

  3.1 C/S模式网络编程原理

  网络通信的基石是套接字,一个套接字是通信的一端。VxWorks为用户提供了2种套接字,即流套接字和数据报套接字。流式套接字定义了一种可靠的面向连接的服务,实现了无差错无重复的顺序数据传输。数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。

  五连接的服务一般都是面向事务处理的,一个请求一个应答就完成了客户端与服务端之间的信息交互。无连接的套接字C/S模式程序的流程如图2所示。

 

  面向连接的服务比无连接的服务处理起来要复杂。

  套接字工作过程如下:服务器首先启动,通过调用socket()建立一个套接口,然后调用bind()将该套接口和本地网络地址联系在一起,再调用listen()使套接口做好侦听的准备,并规定他的请求队列的长度,之后就调用accept()来接收连接。客户在建立套接口后就可调用connect()和服务器建立连接。连接一旦建立,客户机和服务器之间就可以通过调用recv()/recvfrom()和send ()/sendto()来发送和接收数据。最后,待数据传送结束后,双方调用close()关闭套接口。[page]

  3.2 编程实例

  下面给出一个面向连接的点对点实时通信的工程应用的实例。该实例应用于作者所在的"网络测试分析仪"项目中。他由两部分组成,服务器在VxWorks操作系统下运行,客户机在Windows下运行。

  3.2.1 服务端的程序设计

  服务端的程序设计在结构上可以使用两种基本模式:循环模式和并发模式。

  循环模式 服务端进程在总体上是一个循环,一次处理一个请求。在有很多客户端请求时,请求放人队列,依次等待处理。如果某个请求的处理时间过长,就会导致队列满而不能接受新的请求。

  并发模式 服务端进程可以同时处理多个请求,结构上一般采用父进程接受请求,然后调用fork产生子进程,由于进程处理请求。该模式的优点是可以同时处理多个请求,客户端等待时间短。

  由于是面向连接的点对点通信,所以实例中采用了循环模式。

  (1)建立自己的套接口

  sHost=socket(AF_INET,SOCK_STREAM,0)

  该函数建立指定通信域、数据类型和协议下的套接口,通信域为AF_INET(惟一支持的格式),数据类型SOCK-STREAM表示建立流式套接口,第3个参数为0,即协议缺省。

  (2)绑定本地地址

  bind(sHost,(struct sockaddr * )&serverAddr,sizeof(serverAddr))

  该函数将服务器地址与sHost绑定在一起,其中,serverAddr是sockaddr_in结构,其成员描述了本地端口号和本地主机地址,经过bind()将服务器进程在网上标识出来。

  (3)开始侦听

  listen(sHost,2)

  该函数表示连接请求队列长度为2,即允许有2个请求,若多于2个请求,则出现错误,给出错误代码WSAECONNREFUSED。

  (4)等待接收连接

  snew=accept(sHost,(struct sockaddr*)&clientAddr,sizeof(clientAddr)))

  该函数阻塞等待请求队列中的请求,一旦有连接请求来,该函数就建立一个和sHost有相同属性的新的套接口。clientAddr也是一个sockaddr_in结构,连接建立时填入请求连接的客户端的地址。

  (5)接收、发送数据

  recv(snew,recvbuffer,buflen,0)
  send(snew,sendbuffer,buflen,0)

  recv()和send()分别负责接收和发送数据,recv()从snew(建立连接的套接口)接收数据,放人recvbuffer中,send() 则将sendbuffer中数据发送给snew,第4个参数,表示该函数调用方式,通常用于诊断程序或路由选择程序,可选择MSG-DONTROUTE和 MSG-OOB,MSG-WAITALL,MSG_DONTWAIT,0表示缺省。

  (6)关闭套接口

  close(sHost)
  close(snew)

  3.2.2 客户端程序设计

  所谓客户端程序,指用来向服务端发出服务请求的程序。客户端需要知道服务端的地址、服务所提供的端口号以及服务所使用的传输层协议:TCP还是UDP。

  该实例基于面向连接的TCP协议。

  (1)调用WSAStartup()函数初始化WindowsSockets DLL

  Status = WSAStartup (VersionReqd,lpmyWSAData)

  (2)创建一个通信域为Internet、SOCK_STREAM类型、使用TCP协议的套接字

  sClient =socket (AF_INET, SOCK_STREAM,IPPROTO_TCP)

  (3)设置与套接字sClient相关的属性选项

  int sockopt=1
  setsockopt (sClient,IPPROTO_TCP,SO_KEEPALIVE,(char *)&sockopt,sizeof(int))

  setsockopt()函数用于任意类型、任意状态套接口的设置选项值。在不同协议层上存在选项,但往往是在最高的"套接口"层次上,设置选项影响套接口的操作,诸如操作的阻塞与否、包的选径方式、带外数据的传送等。该实例中打开了SO_KEEPALIVE选项,使得套接字sClient实现在TCP 连接情况下允许使用"保持活动"包。

  (4)在套接字sClient上向服务器建立一个连接

  connect (sClient,(struct sockaddr *)&serverAddr,sizeof(serverAddr))

  该函数让系统知道写到sClient的数据将发往何地,而且只有该地址发来的数据才被sClient接收。其中,serverAddr是sockaddr_in结构,其成员描述了服务器的地址族,提供的端口号以及服务器地址,如下,

  serverAddr.Sin_family=AF_INET
  serverAddr.sin_addr.s_addr=inet_addr(ServerAddress)
  serverAddr.sin_port=htons(Port)

  其中:ServerAddress和Port通过参数传人。

  (5)接收、发送数据

  recv (sClient,recvbuffer,buflen,0)
  send (sClient,sendbuffer,buflen,0)

  (6)关闭套接口

  Close (sClient)

  4 结 语

  VxWorks操作系统是目前在国内外风行的嵌入式强实时操作系统,而网络编程又是嵌入式实时系统软件的设计核心之一。本文作者介绍了基于TCP的面向连接的C/S模式的编程方法。该方法已经在NA3100网络测试仪中得到了良好而有效的应用。

关键字:VxWorks  嵌人式操作系统  网络编程 引用地址: 基于VxWorks嵌人式操作系统的C/S模式网络编程

上一篇:Linux系统下搭建C/C++开发的IDE环境
下一篇:Windows CE.Net下的矩阵键盘开发设计

推荐阅读最新更新时间:2024-05-02 22:03

VxWorks中怎么从Flash BOOT
作者Email: jinyuhe@163.com 摘要: 本文主要介绍VxWorks系统在MPC860系列处理器的开发中怎么实现去掉BOOT Flash,直接从Flash引导VxWorks的BootRom。 关键词:BOOT Flash,Flash,BootRom 引言 美国WindRiver公司的实时嵌入式系统VxWorks和美国Motorola公司MPC860系列处理器已经广泛的应用在通信行业的通信产品中,在用VxWorks系统进行开发时,会生成两个文件,一个是BootRom文件,此文件类似Windows中的BIOS,是引导文件,完成内存初始化,内核初始化,基本硬件的初始化并最终引导VxWorks系统启动,另外一个是
[应用]
风河推出新版VxWorks 6.7实时操作系统
设备软件优化厂商风河系统公司(Wind River)日前宣布,即日起推出显著增强的VxWorks 6.7,让设备制造商充分发挥最新的多核处理器的能力,解决其关键性业务中的问题。 VxWorks 6.7提供给系统设计人员最佳的多核设计配置,包括非对称多处理(Asymmetirc Multiprocessing, AMP)和对称多处理 (Symmetic Multiprocessing),在推出更高性能的下一代设备时,产品的电力消耗可以保持不变甚至更低。VxWorks 6.7为了帮助设备制造商降低设备物料成本、提高系统部件集成度、增加现有部件重复利用率以及降低运行费用而进行了专门设计,同时以丰富的功能为高质量的设备缩短上
[嵌入式]
风河VxWorks支持Sprint 提升微蜂窝无线移动通信品质
新闻摘要 • Ubee AirWALK公司最新版企业级微蜂窝技术采用VxWorks实时操作系统。 • Ubee-AirWALK公司AIRAVE Pro Connect 微蜂窝(Femtocell)技术是Sprint公司现用室内覆盖解决方案(In-Building Solutions)的组成部分。 • Ubee–AirWalk公司选择VxWorks的原因是其在硬实时性、网络栈丰富性,安全性及对特定处理器提供支持的独特优势。 全球领先的嵌入式和移动软件提供商风河®公司近日宣布,Ubee-AirWALK公司以VxWorks®实时操作系统为基础,建构其CDMA网络最新企业级微蜂窝(Femtocell)解决方案。作为Sprint旗下AIRA
[网络通信]
基于VxWorks的无人直升机控制系统设计
摘 要: 组建了一种基于嵌入式实时操作系统VxWorks平台的无人直升机控制系统,实现远距离无人直升机飞行状态信息传输,接收地面基站命令后完成自主定点飞行任务。主要利用基于优先级的消息队列方法和嵌入式操作系统VxWorks的信号量与看门狗定时功能实现多任务间调度,获得飞行状态数据向地面基站传输与自主定点飞行的同步。通过实验飞行,该系统的正确性与可靠性得到了验证。 关键词: 无人直升机,VxWorks,任务,消息队列 1 前言 自主飞行无人直升机的研究是现今多学科交叉研究的热点与难点。无人直升机在炮兵射击训练、战场监视、输电线路巡视,森林火灾状况观测等军用与民用方面都有着广泛的作用。自从1917年英国研制出世界上第一架
[工业控制]
基于<font color='red'>VxWorks</font>的无人直升机控制系统设计
基于VxWorks的BSP概念与开发
摘 要:本文以VxWorks操作系统为例阐述了BSP的概念和系统启动流程,并描述了BSP的开发过程。 关键词:BSP;VxWorks;镜像;boot Rom 概述 VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它采用微内核的结构,具有支持多种处理器,丰富的网络协议,良好的兼容性和裁减性等特点,同时具有程序动态链接和下载的功能。 BSP(Board Support Packet——板级支持包)是介于底层硬件和上层软件之间的底层软件开发包,它主要功能为屏蔽硬件,提供操作系统的驱动及硬件驱动,具体功能包括: ·单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支
[嵌入式]
VxWorks网络协议栈的MUX接口
    摘要: 嵌入式系统网络协议栈的灵活性在应用上是一个重要指标。介绍嵌入式实操作系统VxWorks网络协议栈的MUX(Mutiplexer)接口及其使用方法。     关键词: VxWorks 网络协议栈 MUX VxWorks是美国Wind River System公司(风河公司)推出的一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通信、军事演习、弹道制导、飞机导航等。VxWorks操作系统包括进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分。VxWorks只占
[网络通信]
基于VxWorks的视频采集系统的设计与实现
1 引言 多媒体通信技术的发展为信息的获取和传输提供了丰富的手段,视频数据是其中不可缺少的重要组成部分,而视频数据的获取离不开视频采集系统。目前,视频采集系统的应用极为广泛,许多产品和设施,例如远程监控、可视电话、会议电视等等,都需要采集视频信息。而且,随着PC机的普及,人们可以直接利用PC机进行视频采集,采集到的视频数据经过处理后保存在本地或者发送到远方。由于视频的采集、处理和传输都在一台PC机上完成,因此可以大大降低系统的复杂度和价格。 我们设计的视频采集系统是基于Intel x86平台和实时操作系统VxWorks,由视频采集卡和驱动程序两部分组成,如图1所示。视频采集卡完成视频数据采集和格式转换,驱动程序在系
[应用]
基于VxWorks的油井数据采集远程终端的设计
    引 言   目前,采油厂多以抽油机采油生产为主要任务,抽油机的分布点多面广,工作在条件恶劣的环境中,容易损坏和遭外力破坏,需要经常巡测,人员工作强度大。目前油井工作状态参数监控由于缺乏远程手段,对油井的生产状况均处于事后处理状态,油井出现异常或被盗破坏时不能及时处理,造成大量不明损失。基于CD-MA通迅信道的远程终端(Remote Terminal Unit,RTU)充分利用现有的计算机网络,通过对现场的监测和数据采集、传输,可以满足油井远程监控的需求。该远程终端可以对油井运行时的负荷、位移、油管回压、温度、冲次、工作电流、电压等参数进行实时全自动在线抄收;当现场有异常情况发生时,监控中心能自动发出相关报警信息,调度室可根
[单片机]
基于<font color='red'>VxWorks</font>的油井数据采集远程终端的设计
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved