VmWareVxWorks高阶教程.pdf

上传人:wj 文档编号:3439458 上传时间:2023-05-05 格式:PDF 页数:26 大小:1.29MB
下载 相关 举报
VmWareVxWorks高阶教程.pdf_第1页
第1页 / 共26页
VmWareVxWorks高阶教程.pdf_第2页
第2页 / 共26页
VmWareVxWorks高阶教程.pdf_第3页
第3页 / 共26页
VmWareVxWorks高阶教程.pdf_第4页
第4页 / 共26页
VmWareVxWorks高阶教程.pdf_第5页
第5页 / 共26页
VmWareVxWorks高阶教程.pdf_第6页
第6页 / 共26页
VmWareVxWorks高阶教程.pdf_第7页
第7页 / 共26页
VmWareVxWorks高阶教程.pdf_第8页
第8页 / 共26页
VmWareVxWorks高阶教程.pdf_第9页
第9页 / 共26页
VmWareVxWorks高阶教程.pdf_第10页
第10页 / 共26页
VmWareVxWorks高阶教程.pdf_第11页
第11页 / 共26页
VmWareVxWorks高阶教程.pdf_第12页
第12页 / 共26页
VmWareVxWorks高阶教程.pdf_第13页
第13页 / 共26页
VmWareVxWorks高阶教程.pdf_第14页
第14页 / 共26页
VmWareVxWorks高阶教程.pdf_第15页
第15页 / 共26页
VmWareVxWorks高阶教程.pdf_第16页
第16页 / 共26页
VmWareVxWorks高阶教程.pdf_第17页
第17页 / 共26页
VmWareVxWorks高阶教程.pdf_第18页
第18页 / 共26页
VmWareVxWorks高阶教程.pdf_第19页
第19页 / 共26页
VmWareVxWorks高阶教程.pdf_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

VmWareVxWorks高阶教程.pdf

《VmWareVxWorks高阶教程.pdf》由会员分享,可在线阅读,更多相关《VmWareVxWorks高阶教程.pdf(26页珍藏版)》请在冰点文库上搜索。

VmWareVxWorks高阶教程.pdf

VmWare下跑VxWorks高阶教程tearing&FiNALs首先要感谢论坛的FiNALs兄!

是他在QQ上给我的讲解,使我对vxWorks的各方面有了更进一步的了解。

他又帮我解决了虚拟机vmWare下跑WindML时鼠标一配就死机的问题。

总算、vmWare下的vxWorks环境又进一步真实化了。

目前我知道的不完美的地方还有:

USB貌似只能用U盘串口直连通信还存在只能收一次数据的问题(当时发的一篇帖子,未提到这个BUG)现总结一篇VmWare下跑vxWorks高阶教程,考虑通读性,所以从头起步,写的很细1从ATA硬盘加载bootrom引导vxWorks2通过FTP工具访问虚拟硬盘内容3WindML下配置上PS/2鼠标和PCConsole键盘4简单介绍BSP配置中涉及的文件关系1、先期准备1、先期准备1.1开发环境?

Tornado2.2(或升级到2.2.1)forPentiumCD1(开发环境和基本组件等)&CD2(BSP包)?

WindML3.0(或升级到3.03)?

AMDLn97XEnd网卡驱动补丁包(只需要ln97xEnd.c和ln97xEnd.h提供下载)?

VMware-workstation-5.5.3-34685对初学者建议使用刚安装好的环境,保证pcPentiumBSP包和WindML源码的纯净!

1.2工具MSDOS6.22镜像wsFtp2006(7)FTP工具虚拟软驱RamDiskNT1.52、虚拟机配置2、虚拟机配置2.1安装虚拟软驱(供虚拟硬盘做DOS,和初期拷贝文件使用)保证红圈配置正确后,点击START运行,随后重启电脑,虚拟软驱A应该就出现了2.2新建虚拟机File-New-VirtualMachine-Custom-New-Workstation5-other(other)-指定虚拟机名和保存位置-选单处理器-内存128MB对应VxWorks足以-使用桥接网络-IO适配器选BusLogic-创建虚拟硬盘-类型选择IDE(Recommended)-磁盘空间设置0.25GB(256MB)足以,并勾上立刻分配磁盘空间-最终完成虚拟机配置2.3虚拟硬盘安装DOS双击Floppy,配置软驱,使用软驱镜像,指定dos6.22的img文件后,点Create按钮启动虚拟机后,进入如下界面选择NONE后,进入软驱A:

盘符,运行A:

fdisk创建DOS主分区,一路回车,最后一个回车会使虚拟机重启,再次选择NONEA:

fomatC:

格式化创建的主分区A:

sysC:

成功后提示SystemTransferred这样C盘就安装了最简单的DOS,顺便把以下几个文件从A盘拷贝到C盘A:

copyHIMEM.SYSC:

A:

copyEDIT.COMC:

点击虚拟机停止按钮退出虚拟机,把软驱配置再改回连接物理软驱,如下图所示新建一个config.sys文件,内容如下menumenuitem=Boot_VX,StartwithVxWorks55menuitem=Boot_DOS,StartwithMsDos622menudefault=Boot_VX,3menucolor=7,0Boot_VXdevice=c:

himem.sys/testmem:

offdos=high,umbshell=c:

c:

bootrom.sysBoot_DOSdevice=c:

himem.sys/testmem:

offdos=high,umbCOMMONfiles=40buffers=30remdos=high,umb保存为config.sys文件,然后再准备这个文件:

C:

Tornado2.2hostx86-把把和和config.sys拷贝到软驱A:

盘,如下图注意:

虚拟机在使用物理软驱时,如果软驱A打开了,那么虚拟机会报警,停掉虚拟机,把软驱A的窗口关闭,再重新启动虚拟机即可启动虚拟机,因为此时软驱A无系统,所以会提示无效的系统盘,如图所示所以重启虚拟机,按F2,改BIOS,改首启动为HardDrive启动(按数字0旁边的减号键可以把RemovableDevices设下去,这样HardDriver就上来了)保存后退出BIOS重启后就会进入我们刚刚在C盘做的简单的DOS然后把A盘的两个文件拷贝到C盘C:

copyA:

C:

C:

copyA:

config.sysC:

注意,因为把config.sys拷贝进了C盘。

所以重启再次运行虚拟机后,就出现如下界面了选第一个引导vxWorks,不过目前还没做好,要在第四章选第二个进DOS,待会还会用到的3、3、ATA引导的引导的bootrom制作制作3.1替换驱动库中原有AMD网卡驱动首先把下载的补丁中的两个文件进行拷贝ln97xEnd.c拷贝到C:

Tornado2.2targetsrcdrvend下,覆盖原有的ln97xEnd.h拷贝到C:

Tornado2.2targethdrvend下,覆盖原有的打开一个windows控制台cmd窗口,运行批处理程序:

C:

tornado2.2hostx86-win32bintorVars.bat;定位到C:

tornado2.2targetsrcdrvend目录,运行:

makeCPU=PENTIUMtool=gnuln97xEnd.o定位到C:

tornado2.2targetlibpentiumPENTIUMcommon目录,并将上一步生成的文件ln97xEnd.o复制到此目录下。

备份此目录下的文件libdrv.a;运行命令arpentium-dlibdrv.aln97xEnd.o,删除libdrv.a中原有的ln97xEnd模块;运行命令,将我们刚刚创建的新ln97xEnd模块添加进去。

arpentium-raiOlicomEnd.olibdrv.aln97xEnd.o3.2修改BSP配置文件config.h首先,我们复制一份纯净未做修改的C:

Tornado2.2targetconfig下的pcPentium文件夹,改名为AMD(名称随便你起),最好不要带空格或什么特殊符号我们要修改编译bootrom、VxWorks的配置头文件Config.h中定义的一些参数,使编译出来的系统引导程序bootrom和VxWorks的映象符合我们的要求;同时还要修改sysLn97xEnd.c这个文件,以使系统的网络功能正常运行。

1)定位到目录C:

tornado2.2targetconfigAMD并打开该目录下Config.h文件;2)查找到定义DEFAULT_BOOT_LINE宏的地方,修改预处理条件CPU=PENTIUM分支下的定义如下:

ata=0,0(0,0)Tifa:

/ata0a/vxWorksh=192.168.1.3e=192.168.1.250u=lnpcipw=97tn=vmwareo=lnPciata=0,0(0,0)指定了使用第0个ata控制器和第0个驱动;Tifa指定你的主机的名字,随便写拉;/ata0a/vxWorks指定了VxWorks映象下载的完整路径,因为我们是从硬盘下载;h=192.168.1.3是宿主机的IP地址,查看你的网上邻居的本地连接,根据它填写;e=192.168.1.250目标机的IP地址,可以根据实际情况修改,但要和主机在同一网段;u=lnpci指定登录FTP服务器的用户名,此FTP是用来下载VxWorks映象的;pw=97是FTP服务器与用户名lnpci对应的密码;tn=target指定目标机的名字,任意指定即可,这里写的vmware。

o=lnPci这个一定要加上,不然WDB会出错的,后面会解释注意这里u=lnpci名字我随便起的,和AMD网卡的引导设备名lnPci没有任何关系!

不过o=lnPci就不是随便写的了哦,且P一定要大写(即网卡设备名)这个参数和vxWorks启动时的WDB配置有关,在后面会有说明。

3)指定网卡驱动程序定位到“Networkdriveroptions”这段文字保证INCLUDE_END和INCLUDE_LN_97X_END这两个宏处于定义状态(define),其他的宏都处于未定义状态(undef),即:

4)包含ATA硬盘驱动首先定位到/*driverandfilesystemoptions*/字段,将INCLUDE_ATA定义上,如下再定位到/*Warmboot(reboot)devicesandparameters*/字段,将#defineSYS_WARM_TYPE后的SYS_WARM_FD改为SYS_WARM_ATA,如下图所示如果还保持为SYS_WARM_FD,那么虚拟机在引导或reboot时虚拟机会报警,如下所示5)配置WINDML查找/*IncludePCIsupportfordrivers&librariesthatrequireit.*/字段在字段之上,定义#defineINCLUDE_WINDML6)包含PC_CONSOLE缺省情况下,VxWorks系统是不接受外部输入设备(如键盘)的输入,也不向外部输出设备(如显示器)输出数据。

为了便于调试,我们必须改变它的这种缺省状态,包含对PC控制台的支持。

查找定位宏INCLUDE_PC_CONSOLE,保证其处于定义状态(define)即可,即:

3.3修改BSP配置文件romInit.s添加红线标注的行,如果这里不添加,编译的bootrom引导vxWorks后,在运行ugl程序时,会提示如下错误3.4修改sysLn97xEnd.c打开C:

tornado2.2targetconfigAMD目录下的sysLn97xEnd.c文件,然后将参数由pciRsrcendUnit.bar1修改为NONE,保存即可,如下图:

3.5编译Bootrom打开Tornado开发工具,在Build菜单下选择BuildBootROM,选择BSP为AMD,image类型为bootrom,工具为gnu,如图。

点击OK,Bootrom就会编译。

编译成功后,会在AMD目录下生产bootrom文件。

新建一个make.bat文件,编辑内容如下echooffremCommandlinebuildenvironmentssetWIND_HOST_TYPE=x86-win32setWIND_BASE=C:

Tornado2.2setPATH=%WIND_BASE%host%WIND_HOST_TYPE%bin;%PATH%objcopypentium-Obinary-gap-fill=0bootrombootrom.sys保存为make.bat后,放在BSP目录AMD下,并双击之,即可生成bootrom.sys按照2.4节同样的方法,把bootrom.sys拷贝到你的虚拟硬盘C盘下,再此重启虚拟机经典的蓝天白云界面就出现了。

第一次启动提示下图openfailed,此刻随便敲击键盘,中断bootrom引导,按下c,然后一路回车,下次就不会再提示这个了,实际上这个是nvram.txt在作祟,bootrom会尝试从非易失性存储器中查找nvram.txt文件来分析引导行,如果没有,则按照config.h中的定义来引导。

然后输入后启动,提示找不到/ata0a/VxWorks。

当然了,我们还没有编译vxWorks拷贝到C盘。

继续第四章节4、4、VxWorks配置配置FTP服务器服务器4.1基于BSP创建VxWorksTornado2.2-File-NewProject,选择CreateabootableVxWorksimageBSP选择AMD4.2配置FTP组件组件配置上FTPserver。

这里的server相当于vxWorks作为服务器,让windows的ftp工具访问该服务器的内容。

Tornado开发环境还配有一个FTP服务器,后面会提到。

配置好后,编译该vxWorks,然后把该文件(在你的vxWorks工程目录的default文件夹下)按之前同样的方法拷贝到虚拟机的C:

盘下。

虚拟机启动后选择StartwithVxWorks55就可以真正把vxworks加载了。

如图所示?

如果引导行的o=lnPci没有设置,则出现如下错误,WDB通信就不能工作了?

如果引导行的o=lnPci的名字写错了,比如写成lnPCI,就会提示如下错误5、5、FTP访问虚拟硬盘访问虚拟硬盘5.1安装WS_FTPPro有破解教程,不多说了。

5.2建立连接访问虚拟硬盘第一次打开该工具,会有建立向导输入站点名称选择连接类型为FTP输入服务器地址,亦即配了FTP服务器组件的vxWorks的IP地址,即目标机地址啦输入登录vxWorks的FTP服务器的用户名,密码。

VxWorks的FTP服务器组件可能是默认使用了引导行里的用户名、密码。

即这对信息即可用来让网络设备引导的bootrom登录Tornado开发环境的FTP服务器来下载vxWorks,也可以让其它的FTP工具登录进运行中的vxWorksFTP服务器。

说的拗口,见谅选择高级选择启动,在远程站点文件夹那输入/ata0a,启动传送模式选择二进制。

确定后,再点击完成,即可开始连接vxWorks的FTP服务器。

如图连接成功后,可以看到虚拟机硬盘下的文件了,这下传输文件就方便多了为DOS下的将bootrom加载的DOS程序nvram.txtbootrom使用的引导行信息保存在这个文本文件里vxWorks从虚拟硬盘加载的vxWorks镜像当然,访问VxWorks的FTP服务器还可以用其他软件,比如FlashFXP等。

或者用Windows的CMD控制台用命令来访问,如下图,不过命令行还是麻烦,不如GUI来的方便啊!

6、6、WindML编译与鼠标配置编译与鼠标配置6.1编译VESAbios的图形库选择Tornado2.2开发环境的工具条中WindML配置按钮、图中红圈标注的地方打开对话框,选择pentium_VESABIOS_RGB565_640X480项目:

点击配置Configure打开对话框Build标签类,例子不编也可以,debug也可以不勾,初学者建议都勾上Devices标签类:

鼠标选择PS/2名称为/pointer/0键盘选择PC/A名称为/pcConsole/1要改用1哦!

0是显示器用了注意,这里的名字是指定UGL依照这个名字去打开设备,如果VxWorks设备列表里没有/pcConsole/1和/pointer/0那么就无法接受外部输入了;至于这两个设备,则是由VxWorks配置组件来创建,后面会讲。

相信很多朋友开始都搞不清楚这个名字和vx组件配置里的名字是个什么关系其他两个标签默认,然后保存该配置文件,如图。

保存后,点击build开始编译,看你的机器能力啦,我的本本20分钟-.-编译完后会有Done提示。

在C:

Tornado2.2targetlibpentiumPENTIUMcommon下会生成libwndml.a文件。

6.2VxWorksPS/2鼠标配置首先进入第4章建立的VxWorks工程配置窗口,配置WindMLPS/2鼠标这里的名称参数配置,意思是VxWorks启动时驱动以该名称来创建鼠标、键盘设备。

这下大家就清楚了这个名字和WindML配置里的名字是要对应起来的原因了吧。

至于PS2键盘,这里名字无所谓,原因在是我们前面配置了PC_CONSOLE驱动,后面有详细的解释。

配置PS2鼠标组件还依赖于PS2键盘,所以会有依赖组件同时添加进来。

点击OK后,WindML组件就加上了PS/2鼠标和PS/2键盘。

虽说PS/2键盘也包含进来了,但PS/2键盘用的并不是i8042驱动哦,而用的是PC_CONSOLE驱动,鼠标则用的i8042驱动。

以前这样配置下来,vxWorks启动后,就会死机,这个困扰大家很久了,不过总算解决了!

再次感谢FiNALS兄提出的解决方案。

下面首先解释一下组件配置的知识,对我们查找问题出在哪有一点点帮助吧。

这个肯定困扰过很多初学者,常常搞不清以下的文件关系,反正我开始是糊里糊涂。

C:

Tornado2.2targetconfigBSPpacketconfig.hC:

Tornado2.2targetconfigcompssrcconfigAll.h|C:

Tornado2.2targetprojBSPvxImageprjComps.h|?

这些文件的关系C:

Tornado2.2targetprojBSPvxImageprjParams.h|C:

Tornado2.2targetprojBSPvxImageprjConfig.c/在4.1中的基于AMD的BSP创建的VxWorks会根据BSP目录下的makefile来分析工程源文件的依赖关系,编译规则(如CPU宏,头文件搜索路径),汇编规则等等;同时会根据BSP目录下的config.h文件分析包含的组件,随后会生成prjConfig.c、prjComps.h和prjParams.h文件。

例如在3.2中的config.h中我们做了#defineINCLUDE_WINDML的宏定义那么经过Tornado工程创建程序的分析后,在自动生成的prjConfig.c中会有以下的效果

(1)C:

Tornado2.2targetconfigcompssrcconfigAll.h文件适用于所有BSP的组件参数配置文件,一般不要修改该文件。

各自的BSP特殊定制应该去修改你的BSP目录下的config.h文件,这样各个定制的BSP之间才没有交叉影响。

不然你改了configAll.h后,会对所有BSP都产生影响。

(2)C:

Tornado2.2targetconfigBSPpacketconfig.h则是为各个BSP所特别定制的,修改config.h只影响本BSP的配置。

假设你已经配置好了一个BSP包,并且在其基础上创建了一个VxWorks镜像工程,那么此时你再去修改config.h,是不会对VxWorks工程产生效果的!

比如开始config.h中不定义#undefINCLUDE_WINDML,紧随其后创建了基于“没有定义INCLUDE_WINDML”BSP包的vxworks工程,那么这时你再去修改config.h,把INCLUDE_WINDML定义#define上,重新编译vxWorks后,实际上VxWorks还是没有包含WindML组件!

那么下载运行ugldemo.c编译的程序(链接了6.1编译的图形库)后,是会有如下错误提示的:

原因亦即PC-BIOS图形设备的内存还是没有映射上,即在sysLib.c中,以下这段是没有被定义的,也就不会把sysWinML.c编译进去也就不会执行sysWindMLHwInit了,如下解决办法是两个:

要么config.h中#defineINCLUDE_WINDML后,重新基于此BSP重新创建一个工程就可以了,这样重新编译VxWorks后,重新启动新编译的VxWorks,再下载链了图形库的ugldemo,肯定可以成功运行。

要么在上层应用进一步定制(亦即使用VxWorks工程组件配置管理工具,如下图加上WindMLgraphicSupport组件即可),所做的修改体现在prjComps.h、prjParams.h中解决方法2,通过上层的组件配置管理工具来实现(3)C:

Tornado2.2targetprojBSPvxImageprjComps.h是在使用vxWorks工程组件配置管理工具进行组件重组后,自动由Tornado修改生成的,即prjComps.h自动生成(4)C:

Tornado2.2targetprojBSPvxImageprjParams.h和prjComps.h类似,只是该文件还包含了组件的相关参数。

比如创建PS/2键盘时使用什么名字来创建这个设备。

(5)C:

Tornado2.2targetprojBSPvxImageprjConfig.c用户根任务usrRoot就在这里被调用,比较上层的初始化,比如定义WINDML组件后,就会在usrRoot内部调用usrWindMlInit初始化创建键盘鼠标。

而sysLib.c中调用sysWindMLHwInit初始化图形卡设备,属于底层一些的。

最后总结一下这些文件的编译调用顺序:

所以,当工程创建初期时,prjParams.h的配置和configAll.h、config.h两者的配置组合是一致的!

此时,再对config.h修改则对VxWorks工程是无效的,而通过上层修改后,那么prjParams.h的配置和configAll.h、config.h两者的配置组合就变得不一样了!

最后,configAll.h这个文件在C:

Tornado2.2targetconfigall有一个,在C:

Tornado2.2targetconfigcompssrc也有一个,那上面说的到底是哪个呢?

看看vxWorks的编译选项里的头文件搜索路径,你就知道了!

呵呵,是不是很清楚呢?

而C:

Tornado2.2targetconfigall下的configAll.h,那是bootrom级别的配置以后再去研究了呵呵回到PS/2鼠标上,前面的分析很重要哦!

假设前面第3、4章的工作你都按照我的做好了,那么此时我们就来分析鼠标键盘是在哪被创建的。

由于BSP的config.h中#define了INCLUDE_WINDML,VxWorks工程目录下的prjConfig.c就会usrWindMlInit();(前面也有图示说明了,这里不多说了)该函数在C:

Tornado2.2targetconfigcompssrcusrWindML.c里分析源码就知道,我们之前在上层组件配置管理里INCLUDE_WINDML_PS2_KEYBOARD了,但是我们也定义了INCLUDE_PC_CONSOLE,所以PS2键盘不会调用i8042KbdDevCreate,而是用PC_CONSOLE驱动创建的/pcConsole/1来处理键盘的输入,shell下输入devs可查看到/pcConsole/1。

而对于鼠标,我们之前也在上层组件配置管理器里INCLUDE_WINDML_PS2_POINTER了,只要定义了,就会调用i

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2