收藏 分享(赏)

VmWare+VxWorks高阶教程.pdf

上传人:HR专家 文档编号:6299386 上传时间:2019-04-05 格式:PDF 页数:26 大小:1.27MB
下载 相关 举报
VmWare+VxWorks高阶教程.pdf_第1页
第1页 / 共26页
VmWare+VxWorks高阶教程.pdf_第2页
第2页 / 共26页
VmWare+VxWorks高阶教程.pdf_第3页
第3页 / 共26页
VmWare+VxWorks高阶教程.pdf_第4页
第4页 / 共26页
VmWare+VxWorks高阶教程.pdf_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、VmWare下跑VxWorks 高阶教程 tearing 定位到 C:tornado2.2targetsrcdrvend 目录,运行: make CPU=PENTIUM tool=gnu ln97xEnd.o 定位到 C:tornado2.2targetlibpentiumPENTIUMcommon 目录,并将上一步生成的文件ln97xEnd.o 复制到此目录下。备份此目录下的文件 libdrv.a; 运行命令 arpentium -d libdrv.a ln97xEnd.o,删除 libdrv.a 中原有的 ln97xEnd 模块; 运行命令,将我们刚刚创建的新 ln97xEnd 模块添加进

2、去。 arpentium -ra iOlicomEnd.o libdrv.a ln97xEnd.o 3.2 修改BSP 配置文件config.h 首先,我们复制一份纯净未做修改的 C:Tornado2.2targetconfig下的 pcPentium 文件夹,改名为 AMD(名称随便你起) ,最好不要带空格或什么特殊符号 我们要修改编译 bootrom、VxWorks 的配置头文件 Config.h 中定义的一些参数,使编译出来的系统引导程序 bootrom 和 VxWorks 的映象符合我们的要求; 同时还要修改 sysLn97xEnd.c 这个文件,以使系统的网络功能正常运行。 1) 定

3、位到目录 C:tornado2.2targetconfigAMD 并打开该目录下 Config.h 文件 ; 2) 查找到定义 DEFAULT_BOOT_LINE 宏的地方,修改预处理条件 CPU = = PENTIUM 分支下的定义如下: “ ata=0,0(0,0)Tifa:/ata0a/vxWorks h=192.168.1.3 e=192.168.1.250 u=lnpci pw=97 tn=vmware o=lnPci “ ata=0,0(0,0) 指定了使用第 0 个 ata 控制器和第 0 个驱动; Tifa 指定你的主机的名字,随便写拉; /ata0a/vxWorks 指定了

4、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 名字

5、我随便起的,和 AMD 网卡的引导设备名 lnPci 没有任何关系! 不过 o=lnPci 就不是随便写的了哦,且 P 一定要大写(即网卡设备名)这个参数和 vxWorks启动时的 WDB 配置有关,在后面会有说明。 3) 指定网卡驱动程序 定位到“Network driver options” 这段文字 保证 INCLUDE_END 和 INCLUDE_LN_97X_END 这两个宏处于定义状态(define) ,其他的宏都处于未定义状态(undef) ,即: 4) 包含 ATA 硬盘驱动 首先定位到/* driver and file system options */ 字段,将 INCL

6、UDE_ATA 定义上,如下 再定位到/* Warm boot (reboot) devices and parameters */ 字段, 将 #define SYS_WARM_TYPE 后的 SYS_WARM_FD 改为 SYS_WARM_ATA,如下图所示 如果还保持为 SYS_WARM_FD,那么虚拟机在引导或 reboot 时虚拟机会报警, 如下所示 5) 配置 WINDML 查找/* Include PCI support for drivers %PATH% objcopypentium -O binary -gap-fill=0 bootrom bootrom.sys 保存为

7、make.bat 后,放在 BSP 目录AMD 下,并双击之,即可生成 bootrom.sys 按照 2.4 节同样的方法,把 bootrom.sys 拷贝到你的虚拟硬盘 C 盘下,再此重启虚拟机 经典的蓝天白云界面就出现了。第一次启动提示下图 open failed,此刻随便敲击键盘,中断bootrom 引导,按下 c,然后一路回车,下次就不会再提示这个了,实际上这个是 nvram.txt在作祟,bootrom 会尝试从非易失性存储器中查找 nvram.txt 文件来分析引导行,如果没有,则按照 config.h 中的定义来引导。 然后输入 后启动,提示找不到/ata0a/VxWorks 。

8、当然了,我们还没有编译 vxWorks拷贝到 C 盘。继续第四章节 4、VxWorks 配置FTP 服务器 4.1 基于BSP 创建VxWorks Tornado2.2-File-New Project,选择 Create a bootable VxWorks image BSP 选择 AMD 4.2 配置FTP 组件 组件配置上 FTP server。这里的 server 相当于 vxWorks 作为服务器,让 windows 的 ftp工具访问该服务器的内容。Tornado 开发环境还配有一个 FTP 服务器,后面会提到。 配置好后,编译该 vxWorks,然后把该文件(在你的 vxWor

9、ks 工程目录的 default 文件夹下)按之前同样的方法拷贝到虚拟机的 C:盘下 。虚拟机启动后选择 Start with VxWorks55就可以真正把 vxworks 加载了。如图所示 如果引导行的 o=lnPci 没有设置,则出现如下错误,WDB 通信就不能工作了 如果引导行的 o=lnPci 的名字写错了,比如写成 lnPCI,就会提示如下错误 5、FTP访问虚拟硬盘 5.1 安装WS_FTPPro 有破解教程,不多说了。 5.2 建立连接访问虚拟硬盘 第一次打开该工具,会有建立向导 输入站点名称 选择连接类型为 FTP 输入服务器地址,亦即配了 FTP 服务器组件的 vxWork

10、s 的 IP 地址,即目标机地址啦 输入登录 vxWorks 的 FTP 服务器的用户名,密码。 VxWorks 的 FTP 服务器组件可能是默认使用了引导行里的用户名、密码。即这对信息即可用来让网络设备引导的 bootrom 登录Tornado 开发环境的 FTP 服务器来下载 vxWorks,也可以让其它的 FTP 工具登录进运行中的vxWorks FTP 服务器。说的拗口,见谅 选择高级 选择启动,在远程站点文件夹那输入/ata0a ,启动传送模式选择二进制。确定后,再点击完成,即可开始连接 vxWorks 的 FTP 服务器。如图 连接成功后,可以看到虚拟机硬盘下的文件了,这下传输文件

11、就方便多了 为 DOS 下的将 bootrom 加载的 DOS 程序 nvram.txt bootrom 使用的引导行信息保存在这个文本文件里 vxWorks 从虚拟硬盘加载的 vxWorks 镜像 当然,访问 VxWorks 的 FTP 服务器还可以用其他软件,比如 FlashFXP 等。或者用Windows 的 CMD 控制台用命令来访问,如下图,不过命令行还是麻烦,不如 GUI 来的方便啊! 6、WindML 编译与鼠标配置 6.1 编译VESAbios的图形库 选择 Tornado 2.2 开发环境的工具条中 WindML 配置按钮、图中红圈标注的地方 打开对话框,选择 pentiu

12、m_VESABIOS_RGB565_640X480 项目: 点击配置 Configure 打开对话框 Build 标签类, 例子不编也可以,debug 也可以不勾,初学者建议都勾上 Devices 标签类: 鼠标选择 PS/2 名称为/pointer/ 0 键盘选择 PC/A 名称为/pcConsole/ 1 要改用 1 哦! ! 0是显示器用了 注意,这里的名字是指定 UGL 依照这个名字去打开设备,如果 VxWorks设备列表里没有/pcConsole/1 和/pointer/0 那么就无法接受外部输入了; 至于这两个设备,则是由 VxWorks 配置组件来创建,后面会讲。相信很多朋友开始

13、都搞不清楚这个名字和 vx 组件配置里的名字是个什么关系 其他两个标签默认,然后保存该配置文件,如图。保存后,点击 build 开始编译,看你的机器能力啦,我的本本 20 分钟-.- 编译完后会有 Done 提示。在C:Tornado2.2targetlibpentiumPENTIUMcommon 下会生成 libwndml.a 文件。 6.2 VxWorks PS/2 鼠标配置 首先进入第 4 章建立的 VxWorks 工程配置窗口,配置 WindML PS/2 鼠标 这里的名称参数配置,意思是 VxWorks 启动时驱动以该名称来创建鼠标、键盘设备。这下大家就清楚了这个名字和 WindML

14、 配置里的名字是要对应起来的原因了吧。至于 PS2键盘,这里名字无所谓,原因在是我们前面配置了 PC_CONSOLE 驱动,后面有详细的解释。 配置 PS2 鼠标组件还依赖于 PS2 键盘,所以会有依赖组件同时添加进来。点击 OK 后,WindML 组件就加上了 PS/2 鼠标和 PS/2 键盘。 虽说 PS/2 键盘也包含进来了,但 PS/2 键盘用的并不是 i8042 驱动哦 ,而用的是PC_CONSOLE 驱动,鼠标则用的 i8042 驱动。以前这样配置下来,vxWorks 启动后,就会死机,这个困扰大家很久了,不过总算解决了!再次感谢 FiNALS 兄提出的解决方案。 下面首先解释一下

15、组件配置的知识,对我们查找问题出在哪有一点点帮助吧。这个肯定困扰过很多初学者,常常搞不清以下的文件关系,反正我开始是糊里糊涂。 C:Tornado2.2targetconfigBSPpacketconfig.h C:Tornado2.2targetconfigcompssrcconfigAll.h | C:Tornado2.2targetprojBSPvxImageprjComps.h | 这些文件的关系 C:Tornado2.2targetprojBSPvxImageprjParams.h | C:Tornado2.2targetprojBSPvxImage prjConfig.c / 在

16、4.1 中的基于 AMD 的 BSP 创建的 VxWorks 会根据 BSP 目录下的 makefile 来分析工程源文件的依赖关系,编译规则(如 CPU 宏,头文件搜索路径),汇编规则等等; 同时会根据 BSP 目录下的 config.h 文件分析包含的组件,随后会生成 prjConfig.c、prjComps.h 和 prjParams.h 文件。 例如在 3.2 中的 config.h 中我们做了#define INCLUDE_WINDML 的宏定义 那么经过 Tornado 工程创建程序的分析后,在自动生成的 prjConfig.c 中会有以下的效果 (1 )C:Tornado2.2t

17、argetconfigcompssrc configAll.h 文件适用于所有 BSP 的组件参数配置文件,一般不要修改该文件。各自的 BSP特殊定制应该去修改你的 BSP目录下的 config.h文件,这样各个定制的 BSP 之间才没有交叉影响。不然你改了 configAll.h 后,会对所有 BSP都产生影响。 (2 )C:Tornado2.2targetconfig BSPpacketconfig.h 则是为各个 BSP 所特别定制的,修改 config.h 只影响本 BSP 的配置。假设你已经配置好了一个 BSP 包,并且在其基础上创建了一个 VxWorks 镜像工程,那么此时你再去修

18、改 config.h,是不会对 VxWorks 工程产生效果的!比如开始 config.h 中不定义#undef INCLUDE_WINDML,紧随其后创建了基于“没有定义 INCLUDE_WINDML” BSP 包的 vxworks 工程,那么这时你再去修改 config.h,把INCLUDE_WINDML 定义#define 上,重新编译 vxWorks 后, 实际上 VxWorks 还是没有包含WindML 组件 !那么下载运行 ugldemo.c 编译的程序(链接了 6.1 编译的图形库)后,是会有如下错误提示的: 原因亦即 PC-BIOS 图形设备的内存还是没有映射上,即在 sysL

19、ib.c 中,以下这段是没有被定义的,也就不会把 sysWinML.c 编译进去 也就不会执行 sysWindMLHwInit 了,如下 解决办法是两个: 要么 config.h 中#define INCLUDE_WINDML 后,重新基于此 BSP 重新创建一个工程就可以了,这样重新编译 VxWorks 后,重新启动新编译的 VxWorks,再下载链了图形库的ugldemo,肯定可以成功运行。 要么在上层应用进一步定制(亦即使用 VxWorks 工程组件配置管理工具,如下图加上WindML graphic Support 组件即可),所做的修改体现在 prjComps.h 、prjParam

20、s.h 中 解决方法 2,通过上层的组件配置管理工具来实现 (3 )C:Tornado2.2targetproj BSPvxImageprjComps.h 是在使用 vxWorks 工程组件配置管理工具进行组件重组后,自动由 Tornado 修改生成的,即 prjComps.h 自动生成 (4 ) C:Tornado2.2targetprojBSPvxImageprjParams.h 和 prjComps.h 类似,只是该文件还包含了组件的相关参数。比如创建 PS/2 键盘时使用什么名字来创建这个设备。 (5 )C:Tornado2.2targetproj BSPvxImage prjConf

21、ig.c 用户根任务 usrRoot 就在这里被调用,比较上层的初始化,比如定义 WINDML组件后,就会在 usrRoot内部调用 usrWindMlInit初始化创建键盘鼠标。而 sysLib.c 中调用 sysWindMLHwInit 初始化图形卡设备,属于底层一些的。 最后总结一下这些文件的编译调用顺序: 所以,当工程创建初期时,prjParams.h 的配置和 configAll.h、 config.h 两者的配置组合是一致的!此时,再对 config.h 修改则对 VxWorks 工程是无效的,而通过上层修改后,那么 prjParams.h 的配置和 configAll.h、con

22、fig.h 两者的配置组合就变得不一样了! 最后,configAll.h 这个文件在 C:Tornado2.2targetconfigall 有一个,在C:Tornado2.2targetconfigcompssrc 也有一个,那上面说的到底是哪个呢?看看 vxWorks的编译选项里的头文件搜索路径,你就知道了!呵呵,是不是很清楚呢? 而 C:Tornado2.2targetconfigall 下的 configAll.h,那是 bootrom 级别的配置以后再去研究了 呵呵 回到 PS/2 鼠标上,前面的分析很重要哦! 假设前面第 3、4 章的工作你都按照我的做好了,那么此时我们就来分析鼠标

23、键盘是在哪被创建的。由于 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

24、 驱动创建的/pcConsole/1来处理键盘的输入,shell 下输入 devs 可查看到/pcConsole/1 。 而对于鼠标,我们之前也在上层组件配置管理器里INCLUDE_WINDML_PS2_POINTER 了,只要定义了,就会调用 i8042MseDevCreate 那么困扰我们的 PS2 鼠标一配置上,VxWorks 就会死机的问题,我们定位到了是在哪个函数里出了问题。就在 i8042MseDevCreate 里,这个函数在哪呢?usrWindMl.c 首部如下: 就在 i8042KbdMse.c 里。i8042KbdMse.c 在哪呢?看下图就知道了 对,就在 C:Torna

25、do2.2targetsrcdrvseriali8042KbdMse.c 下面就给出隐藏 BOSS FiNALS 兄的解决方案! 修改完毕后保存,重新编译你的 VxWorks。我们修改引导,从网络设备 lnPci 来加载VxWorks,验证是否 PS/2 鼠标可以用了 - 6.3 运行ugldemo 验证鼠标 打开 Tornado 的 FTP 服务器 开始- 所有程序-Tornado2.2-FTP Server 选择 Security-User/rights 输入与引导行对应的 lnpci 名称 输入与引导行对应的密码,之前设的是 97 将 C:Tornado2.2targetprojAMDv

26、x55default 路径填入 Home Directory。选择 Done 后,即可启动虚拟机,下载我们配好了 PS2 鼠标的 VxWorks。 为了从先前的 ATA 引导改为从网络引导,需要对引导行做如下更改: 按 启动后,然后通过 tgtsvr 链接目标机,这个我就不多说了 下载链接了图形库的 ugldemo 程序, shell 下输入 ugldemo。试试吧,应该可以用 PS/2鼠标了,Shell 下输入 iosFdShow,看到如下信息证明的确是成功了! /pcConsole/1 为 PS2 键盘,驱动为 pcConsole 驱动 2 /pointer/0 为 PS2 鼠标,驱动为

27、i8042 驱动 10 经典的 WinBall 程序,从上下两张图中光标的位置,我们也可以证实,鼠标的确是可以用啦 本教程就写到这里了,希望大家多提宝贵意见!再次感谢 FiNALS 的大力支持 tearing & FiNALs 7、附注 AMD 本文档起的 BSP 包名字,因为虚拟机网卡用的 AMD 的,就起了这个名字 ATA AT Attachment 广为使用的 IDE 和 EIDE 设备的相关标准,本文档指硬盘 BSP Board Support Packet 板级支持包 实现硬件的抽象 由代码、文档、规范组成 Bootrom VxWorks 加载、存储、调试的桥梁 lnPci 虚拟机中网卡的设备名,由 AMD 公司制造 PC Console PC 控制台驱动,用于图形输出和键盘输入 UGL Universal Graphic Library 统一图形库 肤浅理解,和 WindML 一个东西吧 VESA Video Electronics Standard Association 虚拟机用的图形芯片 bios WindML Wind Media Library 风河媒体库 为上层提供统一的图形接口 FiNALS cevx 论坛资深会员 -

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

当前位置:首页 > 实用文档 > 简明教程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报