VxWorks应用开发8910实验指导_第1页
VxWorks应用开发8910实验指导_第2页
VxWorks应用开发8910实验指导_第3页
VxWorks应用开发8910实验指导_第4页
VxWorks应用开发8910实验指导_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 VxWorks应用开发实验指导三TSINGHUA实验1.编写基于socket的通信程序实验2.生成一个支持dosFs的VxWorks映像实验3设计基于TCP的通信程序实验4.一个以网卡驱动程序分析TSINGHUA实验/.编写基于socket的通信程序实验目的:熟悉网络通信原理和实现方法学习使用socket编程实验步骤:实验基础回顾案例分析自行设计一个使用socket通信的程序TSINGHUAVxWorks网络架构TSINGHUASocketTSINGHUASocket #TSINGHUA 用于识别最终的目的地IP地址用于识别主机主机上有很多应用Ports(16-bit识别符)1-65,535

2、TSINGHUARFC1700规定常用端口号从0到1023,1024到49151是已注册的端口号。常见服务协议的端口telnet(23)ftp(21)SMTP(25)http(80)套接字Integer-Sockets向TCP/IP提供接口连接用户程序和协议栈Sockets也为其他多种协议提供通用接口TSINGHUA由协议和本地/远端地址/端口识别一个应用可以指向多个socketsSockets可以被多个应用操作五元组TOC o 1-5 h zSIPDIPSSDSProtocolNO. # TSINGHUA #TSINGHUAVxWorkssocketsVxWorks实现了与BSD4.4TCP

3、/IP兼容的sockets编程接口VxWorks目前支持3种套接字数据报套接字:支持双向的数据流,但不保证数据传送的可靠性、有序性和无重复(SOCK_DGRAM)流套接字:提供双向的、有序的、无重复并且无记录边界的数据服务(SOCK_STREAM)裸层套接字:直接构建在IP协议上的(SOCK_RAW)TSINGHUAVxWorks套接字描述符与文件操作一样,每个套接字在创建时都生成一个套接字描述符该套接字描述符是在文件描述符表中的索引值该套接字描述符在描述符表中的表项并不指向文件表,而是指向一个与该套接字有关的数据结构TSINGHUA套接字中的客户棚服务器模型TSINGHUA套接字中的客户棚服

4、务器模型 #TSINGHUA #使用客户机/服务器模型进行编程时,服务器端有一个任务在指定的端口等待客户来连接,一旦连接上之后,就可以按设计的数据交换方法和格式进行数据传送客户端在需要的时刻向服务器发出连接请求TSINGHUA客户/服务器模型TSINGHUACONNECTTSINGHUACONNECT # #TSINGHUA应用创建流程描述 TSINGHUACONNECTTSINGHUACONNECT #TSINGHUA应用创建流程描述 #TSINGHUA创建SOCKETIntsocket(domain,type,protocol)创建一个socketSocket可以是面向连接的(TCP=SO

5、CK_STREAM),面向无连接的(UDP=SOCK_DATAGRAM),和原始数据(SOCK_RAW)返回一个socket描述符(文件描述符),便于以后使用socket例子:sd=socket(AF_INET,SOCK_STREAM,0)9AF_INETinternetdomain9SOCK_STREAM规定SOCK_STREAM使用TCP90规定协议类型,一般为0STATUSconnect(ints,structsockaddr*name,intnamelen)在一个指定的socket上建立一个连接S:指向一个已经打开的socket描述符Name:是一个地址结构,指向服务器端的名字9u_c

6、harsa_len整个地址结构的大小9u_charsa_family地址族(AF_INET)9charsa_data14指向服务器端的实际地址TSINGHUAsendIntsend(ints,char*buf,intbuflen,intflags)用于处于连接状态的socket,将一个消息发送到另一个socketS:-个已连接的套接字描述符Buf:待发送数据的缓冲区Buflen:缓冲区中数据的长度Flags:调用执行方式-如果发送时没有可用的缓存,send就被阻塞TSINGHUAsendtoTSINGHUAsendto # TSINGHUA应用创建流程描述 #Intsendto(ints,ca

7、ddr_tbuf,intbuflen,intflags,structsockaddr*to,inttolen)用于不需要处于socket处于连接状态的socket,将一个消息发送到另一socketS:个已连接的套接字的描述符Buf:待发送数据的缓冲区Buflen:缓冲区中数据的长度Flags:调用执行的方式To:指向目的套接字的地址Tolen:to所指向的地址的长度TSINGHUArecvIntrecv(ints,char*buf,intbuflen,intflags)从一个已经连接的socket处接收数据S:从s所指向的socket接收数据Buf:接收到的数据所存放的缓冲区Buflen:数据

8、缓冲区的长度Flags:调用执行的方式返回值为实际接收到的数据的长度如果没有消息到来,recv就被阻塞 #TSINGHUA应用创建流程描述 #tsinghuarecvfromIntrecvfrom(ints,char*buf,intbuflen,intflags,structsockaddr*from,int*pFromLen)从一socket接收数据,不管该socket是否是面向连接S:从s所指向的socket接收数据Buf:接收到的数据所存放的缓冲区Buflen:数据缓冲区的长度Flags:调用执行的方式From:发送方地址pFormLen:发送方地址的长度返回值为实际接收到的数据长度TS

9、INGHUAbindSTATUSbind(ints,structsockaddr*name,intnamelen)将一个名字绑定到一个socket上,为一个未命名的socket分配一个名字,该名字中包含本地的地址S:套接字描述符Name:要绑定给套接字的名字Namelen:名字的长度TSINGHUATSINGHUA #TSINGHUAlisten STATUSlisten(ints,intbacklog)让socket对连接进行侦听S:套接字描述符Backlog:可以排队等待的最大连接数Listen只能用于SOCK_STREAM或SOCK_SEQPACKET类型的socket上TSINGHUA

10、acceptIntaccept(ints,structsockaddr*addr,int*addrlen)在指定的socket上接受一个连接S:套接字描述符。该socket是由socket调用创建,由bind调用绑定到一个地址上,再由listen调用的socketAddr:用于存放调用返回的地址信息Addrlen:保存addr的精确长度一起分析一个使用socket的程序请你设计一个使用socket的程序要求:必须使用socket建议使用C/S结构A必须有输出显示通信过程TSINGHUA自己动手丰衣足食 # TSINGHUAlisten #实验2生成一个支持osFs的VxWorks映像实验目的:

11、A熟悉VxWorks的文件系统学会在系统映像中加入文件系统编译生成映像实验步骤:恢复记忆编写代码编译生成支持dosFs的imageTSINGHUA文件系统接口TSINGHUA本地文件系统TSINGHUA本地文件系统 #TSINGHUAlisten #VxWorks包括多种使用块设备(磁盘)的本地文系统VxWorks的I/O结构使VxWorks可以同时有多种文件系统:MS-DOS兼容文件系统:dosFs9功能强大RT-11兼容文件系统:rtllFs9无分层文件组织结构,文件连续原始磁盘文件系统:rawFs9整个磁盘作为一个文件SCSI序列文件系统:tapeFs9磁带的一卷作为一个文件CD_ROM

12、文件系统:cdromFs9ISO9660TSINGHUATSINGHUA # #TSINGHUA创建举例 TSINGHUATSINGHUA TSINGHUA创建举例 #Image插入点TSINGHUAbootConfig.cusrRoot()编写代码编译生成支持dosFs的image光说不练,不是英雄好汉TSINGHUA实验3.设计基于TCP的通信程序实验目的完成一个简单的TCP通信系统检验通信的结果学会VxWorks网络通信程序设计认识客户/服务器编程和协议栈编程接口实验步骤:基于实验1设计一个程序9要求基于TCP9设计使用C/S结构9显示通信的过程和结果设计一个程序9要求基于rawSock

13、et9设计使用C/S结构9显示数据包的全部内容9比较TCP程序收发数据结构实例分析A注意rawsocket的使用自己动手丰衣足食TSINGHUA实验/.一个以网卡驱动程序分析本实验可以在下一章完成后做实验目的:剖析中断机制、中断处理中断服务例程的实现掌握VxWorks中断的处理和使用认识和使用中断和任务间的通信实验步骤:实验基础回顾分析驱动程序加载网卡实验 TSINGHUA创建举例 #TSINGHUAMUX、协议层和END的调用接口stackShutdownRtn()stackRcvRtn()stackError()stackTxRestartRtn()muxBind()muxUnbind()

14、muxDevLoad()muxDevUnload()muxRecieve()muxError()muxSend()muxTxRestartRtn()muxMCastAddrDel()muxMCastAddrGet()muxPollSend()muxMCastAddrAdd()muxPollReceive()muxIoctl()协议MUXendLoad()endUnload()endSend()endTxRestartRtn()endMCastAddrDel()endMCastAddrGet()endPollSend()endMCastAddrAdd()endPollReceive()endIo

15、ctl()endStart()endStop()ENDTSINGHUAMUX、协议层禾END的调用接口stackShutdownRtn()stackRcvRtn()stackError()stackTxRestartRtn()muxBind()muxUnbind()muxDevLoad()muxDevUnload()muxRecieve()muxError()muxSend()muxTxRestartRtn()muxMCastAddrDel()muxMCastAddrGet()muxPollSend()muxMCastAddrAdd()muxPollReceive()muxIoctl()end

16、Load()endUnload()endSend()endTxRestartRtn()endMCastAddrDel()endMCastAddrGet()endPollSend()endMCastAddrAdd()endPollReceive()endIoctl()endStart()endStop()协议MUXEND # TSINGHUA创建举例 #驱动程序的开发接口设计初始化中断服务程序设计TSINGHUAEND函数实现引导例程:引导整个驱动程序,初始化驱动程序和设备,并将驱动程序和设备设置到工作状态;中断服务例程:对发至CPU的网络事件通过中断处理,如数据发送、数据收,这些事件对应了相应

17、的中断服务例程;设备系统级函数:在一个回调函数的数据结构中定义,高层的协议通过MUX层定义的函数来调用这些回调函数。这些函数实现的功能如下:释放驱动程序的资源;启动和停止驱动程序;将网络数据包发送到设备上;访问驱动程序的控制函数;增加、删除以及获得组播地址;轮循方式发送和接收数据包;管理网络地址和网络缓存中的数据。增强功能的函数:支持特殊设备的特定功能TSINGHUA网络任务初始化过程3)TSINGHUA网络任务初始化过程3) # TSINGHUA网络任务初始化过程1) 首先,执行MUX层的引导程序。利用VxWorks的根任务tUsrRoot初始化网络任务的工作队列。然后,VxWorks产生一

18、个tNetTask任务来处理网络任务工作队列中的第一个任务:网络设备的建立。tNetTask任务调用muxDevLoad()来装载网络接口驱动程序。在驱动中已经定义了网络驱动设备的xxendLoad()接口函数,muxDevLoad()调用xxendLoad()。xxendLoad()执行设备初始化以及END_OBJ结构体的初始化。MUX通过在END_OBJ上加一个指针,指向能完成将数据包向MUX上层发送的功能函数。然后MUX把返回的END_OBJ加到END_OBJ结构链表中。这个链表包括目前系统中所有可用的网络设备。当从muxDevLoad()返回后,网络设备就准备好可以使用了。TSINGH

19、UA网络任务初始化过程2)然后,调用特定网络设备的初始化函数xxxxlnit(),来初始化本网络设备的网络接口。xxxxlnit()函数是一个与硬件相关的函数,需要我们根据硬件所采用的芯片,初始化接收发送的缓存链表,还有例如:MAC地址表、MAC层寄存器、DMA寄存器、物理层和中断寄存器等接口的初始化。接着执彳丁MUX层的启动函数muxDevStart()。当通过muxDevLoad()装载网络接口设备时,就会调用muxDevStart()来启动该设备。muxDevStart()将调用END层的endStart(),从而进行中断处理程序的注册并使能中断激活这个设备。最后通过调用ipAttach()函数连接IP协

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论