BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #6392同步于 2009/11/5
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

[原创]老鸟吐槽系列之[1]:Tornado开发环境下使用Vxsim进行网络

hobby
2009/11/5镜像同步4 回复
一、 背景 由于是初学VxWorks,现在没有相应的开发板,于是乎采用VxWorks环境自带的仿真器进行仿真。对于基于单机环境Demo程序,如任务间通信,可以顺利进行;而对于网络仿真或者是串口仿真,就不是那么顺利了。今天偶就碰到了这个问题。由于偶用的VxWorks是一个D版软件,公司虽然有可以用的Tornado2.0开发工具,但是由于这个程序比较大(有几百M吧),必须用移动硬盘采能拷过来,而本人目前还没买移动硬盘,所以嘛,就只好先用这个D版在win32环境中模拟一把。 编写了一个简单程序(创建Downloadable工程),简单的测试目标机有几个Socket端口在侦听状态。Code->Compile->link通过完毕,执行download SockDemo.out出错提示: errors-while-downloading :/Tornado2.0Forx86/target/proj/KernelTest/SIMNTgnu/KernelTest.out: _socket _hostGetByName _connect _inet_addr 我的第一感觉就是SIMNNTgnu模拟的Vxworks.exe有没包括网络支持包。怎么解决呢,难道我还要重新创建一个vxworks.exe映像不成?用百度搜了一把,终于有点收获。 要利用Tornado开发环境建立网络仿真只要按照以下步骤操作即可: 二、 操作步骤 2.1 软件环境: Tornado 2.2(.1) 和 VxWorks 5.5(.1) 说明:具体哪个版本支持本文所说的网络仿真不明,上面指出的版本信息是测试使用的版本,其他版本未进行测试,这个版本下测试通过。 2.2 必需条件: Tornado中的simulator必须是full simulator(可在Tornado 点 Help->About->Details查看,在安装Tornado的时候也能查看)。full simulator具有integrated simulator所有的功能,而且还能进行网络仿真,至于安装的是哪一个simulator是由License决定的。 2.3 步骤: 2.3.1 安装ULIP适配器 在控制面板里选择"添加删除硬件"->"添加/排除设备故障"->"添加新设备"-> "从列表选择硬件"->"网卡"->"从磁盘安装",接着选择tornado/host/x86-win32/bin下的netULIP.inf,然后确定并关闭窗口。 安装完成之后,在ipconfig /all的输出中可看到多了一个网卡windriver ulip。 说明:网卡是必须要安装的。 2.3.2 配置ULIP适配器 选择刚刚安装好的网卡的属性,设置IP:在IP栏输入192.168.255.254(可以是x.x.x.254),子网掩码设为255.255.255.0,点高级,在wins页选择禁用TCP/IP上的NETBIOS,然后确定关闭。 设置完成后可用ping 192.168.255.254验证适配器是否工作正常。 说明:之所以将这个IP的最后一个数字设置成254,是因为vxsim的IP是从x.x.x.1开始递增的,这里将Windows宿主机中该网卡的IP设置成254应该是出于避免冲突的考虑。 2.3.3 开启服务 在控制面板=>计算机管理=>服务中,启动Routing and Remote Access这个服务,并将该服务设为自动启动。 2.3.4 修改Tornado的config文件 文件位置:Tornado2.2\target\config\simpc\config.h, #if FALSE /* 将原先的TRUE改成FALSE */ #undef INCLUDE_NETWORK #undef INCLUDE_NET_INIT #undef WDB_COMM_TYPE #define WDB_COMM_TYPE WDB_COMM_PIPE #undef WDB_TTY_TEST #else /* !TRUE */ #define INCLUDE_END #undef INCLUDE_WDB_SYS /* system mode not supported on full simulator */ #undef WDB_MODE #define WDB_MODE WDB_MODE_TASK /* do not allow switch to system mode */ #endif /* TRUE */ 补充说明:这项修改必须在第五步新建工程之前完成,因为新建Bootable类型的工程时,如果选择Vxsim作为目标机(即BSP选择simpc),Tornado会根据config.h文件的内容链接生成相应的BSP。切记一定要在建立工程之前做,否则无效!!! 2.3.5 新建工程 新建一个bootable的工程,BSP选为simpc,然后编译。 进一步的验证实验:如果你想检验一下网络功能,可在workspace的vxworks页的network components->networking protocols->network applications->ping client点右键include ping client,重新build。 说明:如果你比较自信,ping验证可以不做。但是还是推荐走一次流程。因为网络程序的调试中,收发两方不通是最常见的问题,如果发生这样的情况,为了确保应用软件的接口是通畅的,还是需要做这个验证的事情的。 一定要先修改config文件再新建工程,要不然网络仿真仍然无法使用。对于在修改config.h文件之前建立的工程,删了重新建立吧,不然还是没法使用网络仿真!!(亲自实践过,这是必须的!!!) 2.3.6 启动目标仿真机(Vxsim) Launch simulator,选择custom-built simulator,浏览选中刚才编译出来的vxworks.exe,processor no.设为0(full simulator可支持16个simulator,并且能够互相通信,它们的processor no.分别是0-15),确定。 说明:如果想在一台计算机上就做网络仿真,即用两个simulator做网络通信的两方时,注意启动simulator时将process no选为不同的值,并按照需求为两个simulator配置不同的IP地址。 2.3.7 启动Target Server 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的配置并启动它。 2.3.8 检验网络仿真是否可用 如果Target server启动成功,你点launch shell启动一个shell,输入"ping "host的ip",5",回车,ping通了就说明网络仿真已经成功。 2.3.9 simulator与其它主机的通信: 假设host0(你的主机,simulator运行于此机上)IP为10.12.9.113,host1的IP为10.12.9.129,如果host1想与simulator通讯,只需在host1的路由表中增加一项:route add 192.168.255.1 10.12.9.113 metric 1,然后可以分别在host1上ping 192.168.255.1和simulator上ping 10.12.9.129进行验证。 三、 后记: 建立网络仿真的环境的过程,需要重建BSP,重新生成Vxworks.exe。(看来开头说的没错)。至于怎么重建BSP不是一句话能说清楚的, 建议看一下这个方面的书,偶以前也没搞过,自己摸索吧。呵呵。。 word格式的附件在1楼
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
hobby机器人#1 · 2009/11/5
占沙发,传附件 附件是word格式的文档,便于保存 附件(47.5KB) -- 从嘈杂的生活中捕捉宁静的感受 用简单的信仰坚强自己的心灵
meteor机器人#2 · 2009/11/5
顶hobby大牛!
hobby机器人#3 · 2009/11/5
不大牛,是老鸟…… 【 在 meteor (Meteor) 的大作中提到: 】 : 顶hobby大牛!
sxhiger机器人#4 · 2013/6/12
介绍的太简单了,很多仿真过程中的问题没有说明,另外本人亲自试了一下,问题百出。所以上面介绍的还是有很大问题。特别是simulator与其它主机的通信,的过程没有说明。