VMware平台的使用和Vxworks开发环境的建立
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VMware平台的使用和Vxworks开发环境的建立
(航天504所数字信号处理室邢进)
1 前言
在嵌入式开发中使用Vxworks开发平台时,都需要有Host主机和Target目标机才能进行真实的开发平台或测试工作,Vxworks的IDE开发环境中虽然带有Simulator,但是该环境下只能进行简单的运行,并不能代表真实的环境。
在Vxworks开发中的上层应用开发,需要具备和真实设备基本类似的平台来进行调试、开发和测试工作,这对于Vxworks上层应用软件和底层硬件驱动的并行开发有着很重要的意义。
近几年来,由于虚拟计算机技术的发展,在一台主机上既能完成Host的IDE(集成开发环境)开发,又能利用主机所带的操作系统(典型为Windows 2000/XP)的多任务功能虚拟一台完全类似于开发目标机的思路逐渐为广大开发人员所接受。
另外由于多核处理器的发展,今后的调试平台的发展方向也可能是主机运行在一个处理器核上,另外虚拟计算机运行在另外一个处理器核上,充分利用处理器强大的性能有效的提高嵌入式应用软件的开发和测试效率。
本文就将对使用Vmware平台组建一个基于Tornado2.2的开发平台做详细的介绍。
2 Vmware WorkStation介绍
2.1 Vmware功能综述
Vmware Inc是虚拟计算机机领域的著名公司,其产品包括Vmware WorkStaion/Server等,它可以广泛用于测试新的操作系统或者应用程序环境,向用户推介新的操作系统,在教育研讨期间共享已经配置的环境,等等。
VMware Workstation 允许操作系统和应用程序在一台虚拟机内部运行。
虚拟机是独立运行主机操作系统的离散环境。
在 VMware Workstation 中,你可以在一个窗口中加载一台虚拟机,它可以运行自己的操作系统和应用程序。
你可以在运行于桌面上的多台虚拟机之间切换,通过一个网络共享虚拟机(例如一个公司局域网),挂起和恢复虚拟机以及退出虚拟机 — 这一切不会影响你的主机操作和任何操作系统或者它正在运行的应用程序。
Vmware WorkStation是使用文件模拟系统的典型应用,兼容性和稳定性非常好,在不需要虚拟机时,简单的从系统磁盘文件中删除即可,不会对主机操作系统造成任何的影响,也不需要对主机进行重新分区、格式化等危险操作。
另外虚拟的操作系统可以和主机以各种方式互联,包括网桥、NAT、私有网络等方式,可以共享主机网络,并且可以建立和主机共享的文件夹(客户机操作系统必须支持)。
具体到我们的嵌入式开发,使用Vmware WorkStation至少可提供如下的功能:
1. 建立一个完全纯净的操作系统环境,比如MS-DOS系统环境或
Windows2000以及Liunx环境等,方便软件开发和维护工作;
2. 建立一个与真实目标机几乎一致的开发平台,进行上层软件的开发、维
护或测试工作;
3. 在一台主机上即可进行网络的Server/Client开发,方便网络软件的开发、
调试或维护或Web功能的开发。
4. 可以熟悉和自由使用各种流行的操作系统,包括Windows的各种版本、
Linux/Unix或者其他的操作系统。
总之,VMware的用途是非常多的,不仅仅局限于嵌入式产品的开发,大家可以在熟练使用的基础上发现Vmware的更多的优良特性。
3. 使用Vmware WorkStation开发的准备工作和工具软件
在使用Vmware WorkStation时,我们要准备一些很好使用的工具,这些工具能帮助我们更快更好的达到我们的目的,现在就逐一介绍如下,所有这些工具都可以在我的计算机中的FTP目录中下载。
3.1 VMware WorkStation
WorkStation现在的最新版本是6.0,但还没有正式发布。
内网上有 VMware
VMWare WorkStation 5.5.2的版本,这个版本是支持多处理器的,是英文版的。
这里推荐给大家使用的是VMware WorkSation V5.0.0 Build-13214,这个版本是使用的最多的版本,并且提供注册码和汉化软件,界面友好,大家使用起来应该比较容易。
软件的安装过程很简单,点击安装文件,安装时最好安装到FAT32分区的Windows硬盘中,这样的兼容性问题会少些。
某些原装机中可能会有隐含的分区,如果有条件,可以利用分区软件将该隐含分区删除,这样在使用时更安全和稳定,兼容机则不存在这个问题。
到输入注册码的时候运行注册机,得到注册码拷贝后,完成原版的安装。
接着运行汉化软件后启动,VMware软件安装完成。
完成后的启动VMware软件如图所示:
卸载VMware时,除使用VMware自带的卸载程序外,还需要在注册表中手工清除所有的”VMware”的属性,否则再次安装时系统可能会认为你已经安装过VMware软件而拒绝再次安装。
3.2 网络准备
在开发VMware网络中我们只能使用的是网桥的网络互联方式,其他方式都需要DHCP功能,而网桥不需要,这种方式相当于完全真实的在局域网的机器,因此必须开通局域网上的网络通信。
我所的局域网络是采用IP地址和MAC地址绑定的方式来控制的,所以必须在得到本机的MAC地址后,向网络中心申请地址后,才可以利用交换机在Host主机和目标机之间进行数据通信。
如何得到MAC地址,我们将在下文中介绍。
我个人的安装地址如下:主机: IP Addr: 10.134.8.5 ; MAC Addr: 00-19-B9-1F-DC-83
Host
虚拟机 IP Addr: 10.134.8.4 ; MAC Addr: 00-0C-29-D5-DA-34
由于虚拟机的地址和Host主机的地址在一个网段内,因此不需要设置网关和网络掩码。
3.3 虚拟软盘工具准备
为了制作启动盘的方便,我们还利用了一个工具RAMDISKNT1.5,这个工具使用内存仿真了Windows 2000/xp下真实的软驱。
相同的,这个工具也有汉化
注册版本可供使用,在完成安装后,点击sn.reg,将其导入注册表中进行注册,
然后再进行汉化,此时你的计算机上应该出现了软盘驱动器,可以按照真实的软盘的操作动作进行各种操作,这在我们制作BootRom启动盘时有很大的用处。
汉化后的RAMDISKNT1.5 的状态如图所示:
RAMDISKNT1.5 for windows2000/xp是利用内存模拟出一个真实的软驱,在注册完成后即可使用。
安装后将sn.reg导入到注册表中即完成了软件的注册工作。
汉化软件是用同名的可执行程序替换原可执行软件完成的,值得注意的是汉化软件有可能造成软件的兼容性问题。
因此推荐在注册时保留原可执行程序,在遇到兼容性问题时恢复英文版软件即可。
3.4 Vxworks下的AMD 79C97系列网卡的驱动开发包
在VMware中,虚拟机的网络设备是AMD公司的79C97系列的网卡,Tornado2.2系列也有支持该网卡的驱动程序,不过该驱动程序编译过的程序并不能驱动网络设备,AMD公司在其网站上公布了vxworks_end.exe的修补程序,在展开后就是正确的网络驱动程序源代码,将其覆盖到Tornado的相应目录下,这样生成的程序才能够驱动网卡正确的运行。
Vxworks_end.exe程序也可在我的FTP目录下下载得到。
3.5 软盘镜像工具HDcopy
Hdcopy是DOS时代软盘镜像的最流行工具,可以将软盘镜像为.img结尾的文件或从.img文件中恢复软盘的映像,工具非常小巧好用,大小仅41KB左右。
在我的FTP目录中有该文件,该文件名为HD3.exe,直接拷贝运行即可。
这个工具可以配合虚拟软驱使用,可以灵活的恢复各种软盘环境以及制作软盘映像。
4 Vxworks开发目标机的建立
4.1 新建虚拟机
点击新建虚拟机,出现上图的界面,继续点击下一步,开始建立虚拟机。
继续点击下一步,
继续下一步,将选择虚拟机的目录和名称,目录最好放在FAT32分区的硬盘中,名称可以随便取,本文中的名称取得是Example.
下一步,选择网络连接方式,只能使用网桥进行连接,因为其他两种方式均需要操作系统自带DHCP客户端功能,Vxworks虚拟机中不带该功能。
下一步,填入硬盘的大小,需要立即分配,则选中立即分配磁盘空间的复选框。
此例中建立的虚拟机硬盘为100Mb,点击完成,虚拟目标机即建立完成。
点击完成后,即可见完成后的虚拟机的界面如下:
可以看到虚拟机所具备的硬件,并且现在的虚拟机中没有系统,点击一下启动虚拟机。
在虚拟机启动后按F2键,进入BIOS设置中的Boot选项。
在Boot选项中选择使用网络启动后保存设置:
在使用Vmware中,当鼠标在客户的操作系统中点中后,即进入客户操作系统的键盘、鼠标范围,如果要重新回到主机操作系统中,请按下Ctrl+Alt键,即可切换回主机操作系统的键盘和鼠标范围。
重新启动虚拟机,界面上会出现主机的MAC地址,请向网管申请绑定虚拟机。
下面再次关闭虚拟机平台,回到配置界面:双击软驱图标,进入软驱配置:
可以看到Vmware支持物理设备(即我们虚拟的软驱)和软盘映像,Vmware支持的软盘映像文件是.flp文件,这个文件其实是和.img文件是一样的,都是一个1.44M(或2.88M)的文件,也就是软驱的映像,两者文件通用。
在我们使用物理软驱有问题时,可以选择加载软盘映像,Vmware不仅支持软盘映像文件,同时光驱也支持ISO文件,为我们安装系统和软件提供了最大的方便。
我们现在使用dos6.22的原版安装映像来把DOS系统安装到硬盘上来,软盘映像选择好后,启动虚拟机进入BIOS,选择Removable Disk启动:
系统从DOS6.22启动并进入安装:
按回车,安装dos6.22到硬盘(如果硬盘没有分区,需按F3退出安装界面后,执行第一张系统中的fdisk.exe程序分区重启后再安装DOS系统)。
执行到需要换第2张安装盘时,可以按照图示进行换盘操作进入继续安装第2张安装盘。
点击编辑后,得到如下图,将第2张安装盘的映像装入软驱后,按回车继续安装直到安装结束。
DOS安装完毕的画面如下:
此时,重启机器,并选择从Boot->Hard Disk 保存后,重新启动,就得到一个完全纯净的DOS虚拟机,可执行各种DOS应用程序或执行编程。
其他类似操作系统(windows2000/xp、Linux都可以如此安装,只不过是使用光驱镜像ISO文件或者物理光驱完成操作系统的建立和安装,由于是文件安装方式,执行速度很
快)。
4.2 Vxworks开发环境的建立步骤
Vxworks开发环境的建立是建立在DOS虚拟机的基础之上的,有了一个DOS 虚拟机,我们可以通过网络来建立一个与目标机相似的环境来调试我们的上层应用软件,下面我们详细叙述这个过程。
Vmware既支持真实的物理软驱,也支持软驱的映像文件,这为我们的使用带来了很大的灵活,我们既可以用这个模拟的软驱执行各种命令,也可以将模拟软驱通过Hdcopy软件工具制作成映像文件然后加载到Vmware程序中运行。
4.2.1 构造一个基于AMD79C97网卡的BSP
将下载得到的AMD公司的vxworks_end.exe解压到Torando安装目录下的Target目录中进行覆盖,覆盖前请做好原Target的备份工作,便于恢复原开发环境,编译新的网卡驱动,过程如下:
a) 先定位到tornado目录执行 Tornado2.2\ host\x86-win32\bin\torVars.bat;
b) 再定位到tornado2.2\target\src\drv\end目录执行
make CPU=PENTIUM tool=gnu ln97xend.o
c) 定位到tornado2.2\target\lib\pentium\PENTIUM\common目录,并将上一步
生成的文件ln97xend.o复制到此目录下。
备份此目录下的文件libdrv.a;
d) 运行命令arpentium -d libdrv.a ln97xEnd.o,删除libdrv.a中原有的ln97xEnd
模块;
e) 运行命令arpentium -ra iOlicomEnd.o libdrv.a ln97xEnd.o将我们刚刚创建
的新ln97xEnd模块添加进去。
4.2.2 修改Tornado编译配置文件config.c
a) 定位到目录C:\tornado2.2\target\config\pcPentium并打开该目录下
Config.h文件;
b) 查找到定义DEFAULT_BOOT_LINE宏的地方,修改预处理条件CPU ==
PENTIUM分支下的定义如下:
/*注意这是完整的一句,注意不要遗漏\字符,在双引号范围内设置路径必须\\*/ #define DEFAULT_BOOT_LINE \
"lnPci(0,0)your_host_name:d:\\vxWorks h=192.168.80.169 e=192.168.80.254 u=target pw=target tn=target"
宏定义的意义如下:
lnPci(0,0):指定了使用第0个网卡和第0个处理器,lnPci表示使用的是AMD 系列的网卡驱动;
host:指定你的主机的名字,可任意指定;
d:\\vxWorks:指定了VxWorks映象在主机上下载的完整路径;
h=192.168.80.169:是宿主机的IP地址,可以根据实际情况修改;
e=192.168.80.254:是目标机的IP地址,可以根据实际情况修改;
u=target :指定了FTP服务器的用户名,这个FTP就是用来下载VxWorks 映象的;
pw=vxworks:是FTP服务器与用户名target对应的密码;
tn=target:指定目标机的名字,任意指定即可。
我的启动行配置是这样的,供大家参考:
"lnPci(0,0) Xingj:E:\\vxWorks e=10.134.8.4 h=10.134.8.5 u=target pw=target tn=target"
4.2.3 指定网卡驱动程序
首先定位到“Network driver options”这段文字,保证INCLUDE_END和INCLUDE_LN_97X_END这两个宏处于定义状态(define),其他的宏都处于未定义状态(undef);
查找定位宏INCLUDE_PC_CONSOLE,保证其处于定义状态(define);
4.2.4 修改sysLn97xEnd.c文件
定位到Tornado的安装目录tornado2.2\target\config\pcPentium目录下的sysLn97xEnd.c文件,先定位到“memory-mapped IO base”这段文字,这段文字在程序的注释中,找到与注释相对应的该行程序,然后将其前面的参数由pciRsrc[endUnit].bar[1]修改为NONE,保存即可。
4.2.5 编译Bootrom
打开Tornado开发工具,在Build菜单下选择Build Boot ROM,选择BSP为pcPentium,image类型为bootrom,工具为gnu。
点击OK,Bootrom就会编译。
在tornado2.2\target\config\pcPentium下执行:
mkboot a: bootrom,生成Vxworks启动盘。
4.2.6 编译Vxworks映像
编译生成bootrom后,还要创建一个VxWorks映象(image),也就是VxWorks 操作系统本身的代码,步骤为:
a) 创建一个“bootable VxWorks image”的工程,注意BSP 选择pentium;
b) 打开工程,选择Vxworks组件,注意需要包括两个重要的组件:Telnet server
和 Target shell。
前者使我们可以通过Telnet协议登录到VxWorks操作系统中;
后者则可以让我们通过命令行控制VxWorks系统。
另外,需要把所有C++相关的选项都包含进去。
4.2.7 建立调试环境
a) 设置FTP服务器
宿主机上的FTP服务器用于在系统成功引导后,下载VxWorks的运行时映象,最好使用Tornado开发环境自带的FTP服务软件。
FTP需正确设置Vxworks映像路径和用户密码,与config.h中的DEFAULT_BOOT_LINE宏定义中的路径以及用户名密码保持一致。
打开FTP的LOG功能,在logging->Logging Option中选择除WinSock以外的所有选项。
正确设置完成后,可使用虚拟软盘或软盘映像启动Vxworks虚拟机,如设置正确则FTP可显示如下内容:
虚拟机启动后,显示画面如图:
由于在Vxworks映像中包含了Telnet Server的功能,因此在局域网范围
内任何一台计算机都可登陆目标机查看目标机当前状态:在任何一台计
算机命令行模式下执行 Telnet 10.134.8.4 命令,都可以得到如下画面:
此时即可通过远程主机操作和查看目标机,这在调试中十分有用。
b) 配置target server
打开Tornado开发环境,选择“Tools->Target Server->Configure”菜单,在“Description”中任意填写一个名字,这里是“Virtual Machine”;在“Available Back”中选择“wdbrpc”,并在下面的IP地址框中填写目标机的IP地址,这里是“10.134.8.4”(由DEFAULT_BOOT_LINE参数决定);将“Target Server Properties”下拉框更改至“Core File and Symbols”,并在“File Path”一项中选择vxworks 映象的完整路径,这里是“E:\VxWorks”(由DEFAULT_BOOT_LINE参数决定)。
配置完毕后,点击Lanch,启动Target Server,从Torando下拉表中选中目标机,就可以看到各种标志都已经激活,可以投入调试工作了。
可以进行的调式工作包括下载模块到目标机上运行。
使用Run Task模式开启Debugger进行断点调试或单步跟踪,观察程序的动态运行情况等等,和真实的目标机几乎没有差别(除目标机上有特定硬件外)。
5 从硬盘启动Vxworks
有了从网络启动Vxworks映像,那么从硬盘启动也就很好实现了。
在前面的步骤里,我们已经格式化好了硬盘,将MSDOS系统也装入了硬盘,这为我们实现这项功能提供了很大的便利。
a) 在C盘建立vxworks子目录;
b) 将软驱A中做好的bootrom.sys 拷贝到vxworks子目录下;
c) 重新编辑config.sys和autoexec.bat,将Tornado2.2\host\x86-win32\bin\ 也拷贝到vxworks子目录下;
d) 编辑config.sys和autoexec.bat文件如下:
Vxworks映像会占用DOS的常规内存区,需要使用命令移到高端。
config.sys的配置
device= c:\dos\himem.sys
dos=high,umb
autoexec.bat的配置加入一行如下:
c:\vxworks\ c:\vxworks\bootrom.sys
在不需要vxworks启动的时候可将该句屏蔽即可。
这样,在启动后就可以从硬盘引导Vxworks了,如果不需要vxworks启动的话,在启动时按F8,进入DOS后,将autoexec.bat中包含vxload的命令屏蔽即可。
具体使用那种方式启动Vxworks,请根据实际需要而定。
6几点Tips
a) 在软盘映像或虚拟软驱中直接加入Nvram.txt文件,将DEFAULT_BOOT_LINE的定义的内容拷贝在文件中(不加双引号),系统启动就会按照非易失存储器从该文件中取得配置。
如只需要更改诸如用户、密码、IP 地址时,这样的做法可不需要重新烧制BootRom;
b) 模拟的软驱和软盘映像.flp文件可使用Hdcopy工具相互转换备份,Hdcopy的使用非常简单,可将制作好的备份为.flp文件,模拟的软驱在windows 重新注销、启动后内容会遗失,请做好该软盘映像的备份工作;
c) 如果汉化软件有问题的话,请尽量使用原英文版软件。
在虚拟软驱有故障的情况下,使用软盘映像文件替换软驱;
d) Vxworks虚拟机的内存尽量设大一点,程序从Ftp服务器下载后是在内存上执行的,内存一般设置为16M就可以了;
e) 如果Host和目标机在同一网段内,在编辑启动行时,可不设置网关选项。
7 总结
“工欲善其事,必先利其器”。
本文详细叙述了使用VMware软件配置桌面Vxworks系统调试平台的过程和使用。
最后的结果是使用我所内部局域网构建虚拟目标机,使得大部分和底层无关的上层应用程序的调试可以在桌面展开,对于软硬件协同工作十分有利。
从这个典型实例可以看出VMware工具的应用非常广泛,除了充当虚拟的目标机之外,还可以在多操作系统平台的开发、网络应用程序的开发、网络应用程序的测试、操作系统的功能测试等方面有很大的用途,本文起到的只是抛砖引玉的作用。
充分利用虚拟计算机技术可以给我们的软件调试带来极大的方便,希望大家在使用VMware中得到更多的体会和使用技巧,愉快的完成各项繁重的开发任务。