一、准备条件:
(1)正确安装Tornado
正所谓万事开头难,安装Tornado并不是简单的事情,而且不同的版本安装方法也不尽相同,但我相信这绝对难不倒你,网上资料一箩筐,大不了就是多试几次吗。这里悄悄透露一下,老倪那儿有本《嵌入式VxWorks系统开发与应用》,书中第五章有详尽的安装方法,我就不在这里赘述了。
(2)VxSim
VxSim是VxWorks提供的在实验与测试环境下仿真VxWorks目标机的程序,无需硬件的支持。在某些方面,VxSim和运行在目标机硬件上的真实VxWorks环境相同,用户连接应用、rebuild VxWorks映像,就好象在真实的使用标准BSP(板级支持包,可以认为是对硬件平台的抽象,它为操作系统提供硬件操作接口,在后面的章节中会详细介绍)的VxWorks交叉开发环境一样。
在没有硬件开发板的条件下,这难道不是我们梦寐以求的工具吗?接下来我们要做的正是利用Tornado建立起这样一个模拟环境,并输出我们的打印消息。
(3)bootable VxWorks image和downloadable application modules
Tornado中可以创建可启动的VxWorks镜像和可下载的应用模块这两种类型的工程,那么这两种工程有什么区别呢? 让我们看看Tornado为我们提供的示意图:
前者表明该工程是基于某个BSP生成的镜像,它包含了必须的VxWorks的内核、组件以及BSP,并且应用程序可以静态包含在工程中,也可以静态链接已编译好的应用工程模块。
后者顾名思义,应用模块可以以静态链接的方式编译至VxWorks镜像工程中,还可以在VxWorks运行之后,通过网络将将应用模块(.out格式)下载到目标板,并与VxWorks镜像进行链接。在单独对某个模块进行调试时,我们常常会用到这种动态链接的方法。
二、学习步骤:
(1)打开Tornado2.0(本节以Tornado2.0 ppc为例),创建VxWorks image的工作平台。
(2)选择 A BSP(板级支持包)在下拉菜单中选择simpc。
(3)打开文件usrAppInit.c(它的函数usrAppInit是应用的入口点),添加Hello World打印语句,保存文件。
(4)右键点击工程,选择Dependencies(确定工程文件之间的依赖关系),弹出对话框后,选择OK。
(5)右键点击工程,选择ReBuild All。
(6)右键点击工程,选择Start,在弹出的对话框后选择OK。
(7)如果正确安装Tornado并配置正确的话,此时桌面右下角会出现 的图标(如果出现问题,会出现 的图标),点击它可以看到Target Server是否正常工作。
(8)此时查看新弹出的对话框(VxWorks Simulator),^_^ ,可以看到输出的Hello World了吧。
至此,我们已经迈出了具有里程碑意义的第一步,现在完全可以把标准C上的内容通通移植上来运行一番看看效果,那然后呢?嗯…你是不是也感到有些不满足了呢?是不是感觉到这些都算不上是一个真正的vxWorks程序呢?那么请接着看下一节,将会告诉你如何启动一个VxWorks的任务。
注:
环境: Tornado 2.2 和 vxworks 5.4 win2k中文专业版
必需条件: Tornado中的simulator必须是full simulator,full simulator具有integrated simulator(可在Tornado 点 Help->About->Details查看,在安装Tornado的时候也能查看)所有的功能,而且还能进行网络仿真,至于安装的是哪一个simulator是由License决定的。
步骤: 1、安装ULIP适配器 在控制面板里选择“添加删除硬件”->“添加/排除设备故障”->“添加新设备”-> “从列表选择硬件”->“网卡”->”从磁盘安装”,接着选择tornado/host/x86-win32/bin/下的netULIP.inf,然后确定并关闭窗口;装好之后,在ipconfig /all的输出中可看到多了一个网卡windriver ulip;
2、配置ULIP适配器 在IP栏输入192.168.255.254(可以是x.x.x.254),子网掩码设为255.255.255.0,点高级,在wins页选择禁用TCP/IP上的NETBIOS,然后确定关闭,然后可用ping 192.168.255.254验证适配器是否工作正常;
3、启动Routing and Remote Access这个服务,并将该服务设为自动启动;
4、修改tornado/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 allowtch to system mode */ #endif /* TRUE */;
5、新建一个Bootable的工程,BSP选为simpc,然后编译,如果你想检验一下网络功能,可在workspace的vxworks页的network components->networking protocols->network applications->ping client点右键include ping client,重新build;
6、Launch simulator,选择custom-built simulator,浏览选中刚才编译出来的vxworks.exe,processor no.设为0(full simulator可支持16个simulator,并且能够互相通信,它们的processor no.分别是0-15),确定;
7、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的配置并启动它;
8、如果Target server启动成功,你点launch shell启动一个shell,输入 “ping "host的ip",5”,回车,ping通了就说明网络仿真已经成功;
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进行验证 |