视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
嵌入式系统实验报告三
2025-09-25 21:41:37 责编:小OO
文档
实验三

实验要求:

安装Tornado ULIP仿真网卡驱动,启动2个vxSim目标系统,其中一个vxSim为TCP Client,另一个为TCP Server。TCP Server与Client通过socket API进行数据的收发。另外要求在VxWorks中集成target shell组件及ping相关组件,能够在两个vxsim上互相ping通,验证网络环境。

最基本要求是能够完成数据收发。具体通信内容及方式不限,可以自由发挥,简单的可以是消息收发,复杂的可以是协议通信。需要将target shell中ping通的截图放在实验报告中。

实验目的:

熟悉Tornado ULIP仿真网卡驱动的安装和使用;熟悉VxWorks bootable工程的创建和VxWorks映像的生成;熟悉VxWorks网络编程。

一、实验原理

TCP的双机通信是基于socket套接字建立连接的。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。在本次实验中要用到的就是流式Socket。两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。Socket数据结构中包含这五种信息。

二、设计说明

本实验是一个需要使用到客户端/服务器通信模式的问题。主要的设计流程

为,底层的网卡驱动安装好后,调用标准的Socket套接字通过TCP/IP 协议进行通信。服务器端等待服务。一旦有客户端的通信请求,如果通信协议符合,则建立连接,进行通信。服务器一方使用TCP套接字与客户端通信。在服务的主循环中,任务tcpServerWorkTask首先读取来自客户端的请求,并想控制台输出客户信息,如果需要,将向客户端发送应答信息。客户端通过控制台提示输入,建立请求报文,然后发送到服务器,如果需要应答,则等待来自服务器端的回应。

具体的通信流程如下图:

实验具体步骤:

1.安装ULIP适配器

在控制面板里选择“添加删除硬件”->“添加/排除设备故障”->“添加新设

备”-> “从列表选择硬件”->“网卡”->”从磁盘安装”,接着选择tornado\\host\\x86-win32\\bin\下的netULIP.inf,然后确定并关闭窗口;装好之后,在ipconfig /all的输出中可看到多了一个网卡windriver ulip;

2.

3.配置ULIP适配器

在IP栏输入192.168.255.254(可以是x.x.x.254),子网掩码设为

255.255.255.0,点高级,在wins页选择禁用TCP/IP上的NETBIOS,然后确定

关闭,然后可用ping 192.168.255.254验证适配器是否工作正常;

   

4.启动Routing and Remote Access这个服务,并将该服务设为自动启动;

5. 修改tornado\arget\\config\\simpc\\config.h中的 #if TRUE 为#if FALSE。

6.新建一个Bootable的工程,BSP选为simpc,然后编译,如果你想检验一下网络功能,可在workspace的vxworks页的network components->networking protocols->network applications->ping client点右键include ping client,重新build;

7.Launch simulator,选择custom-built simulator,浏览选中刚才编译出来的vxworks.exe,processor no.设为0(full simulator可支持16个simulator,并且能够互相通信,它们的processor no.分别是0-15),确定;

8.Launch target server,关闭Launch simulator后会提示你launch target server,点Details,选中Full simulator,修改上面的命令行参数,将C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/tsfs改为系统中存在的目录,点OK启动target server,然后你可以双击窗口右下方的target server图标查看启动情况;也可以通过Tornado菜单(Tools->target server->configure)进行target server的配置并启动它;

9.如果Target server启动成功,你点launch shell启动一个shell,输入 “ping "host的ip",3”,回车,ping通了就说明网络仿真已经成功;

10.将所需文件添加到工程,然后build工程。为每一台目标机配置一个target server,然后启动它们。为了实现双向通信,必须将build生成的tcpServer.o和tcpClient.o都分别下载到两台目标机。在两台目标机的命令行下将tcpServer.o和tcpClient.o load到内存,命令如下:-> ld < tcpServer.o和-> ld < tcpClient.o。

11. 在每一台目标机下启动服务器端的任务,命令如下:-> sp tcpServer 查看当前的任务,便可以发现每一台目标机上都启动了tcpServer这个任务,表示都处于监听状态。可以双向通信了,两台目标机ip分别为192.168.225.1和192.168.225.2。

三、运行结果图片

(1) VxSim0 为TCP Client,先执行ping函数,ping 服务器的ip地址,成功ping通,接着运行了函数client(“192.168.255.2”, “my name is Dongwenjing, my number is 2011111785”),192.168.255.2为server的IP地址。Client顺利与Server连接后输入要发送的字符串,确定后成功发送,并收到了server的回复。

(2) VxSim1 为TCP Server,同样ping客户端的ip地址,成功。执行server函数,可以看到client发来的消息。

四、程序调试纪录

   在程序调试的过程中花费时间较多的是在前期准备上,主要是ULIP仿真网卡的安装和配置上,可能是由于自己在安装和配置过程中的马虎和步骤遗漏,使得在命令行中ping并没有ping通,后来查找原因又实验了一次,总算在命令行中ping通。后来在同时启动两个VxSim的过程中也遇到了问题,经过向师兄们请教,解决了这个问题。下载本文

显示全文
专题