VmWare+VxWorks高阶教程
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 模块添加进去。 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) 定位到目录 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 “ ¸ÃÎĵµÓÉ Foxit Reader ±à¼- °æȨûÓÐ ·-°æ²»¾¿ ½ö¹©ÆÀ¹À¡£ ata=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) 指定网卡驱动程序 定位到“Network driver options”这段文字 保证 INCLUDE_END 和 INCLUDE_LN_97X_END 这两个宏处于定义状态(define),其 他的宏都处于未定义状态(undef),即: 4) 包含 ATA 硬盘驱动 首先定位到/* driver and file system options */字段,将 INCLUDE_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 保存为 make.bat 后,放在 BSP 目录AMD下,并双击之,即可生成 bootrom.sys 按照 2.4 节同样的方法,把 bootrom.sys 拷贝到你的虚拟硬盘 C 盘下,再此重启虚拟机 经典的蓝天白云界面就出现了。第一次启动提示下图 open failed,此刻随便敲击键盘,中断 bootrom 引导,按下 c,然后一路回车,下次就不会再提示这个了,实际上这个是 nvram.txt 在作祟,bootrom 会尝试从非易失性存储器中查找 nvram.txt 文件来分析引导行,如果没有, 则按照 config.h 中的定义来引导。 然后输入后启动,提示找不到/ata0a/VxWorks 。当然了,我们还没有编译 vxWorks 拷贝到 C 盘。继续第四章节 4、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,然后把该文件(在你的 vxWorks 工程目录的 default 文件 夹下)按之前同样的方法拷贝到虚拟机的 C:盘下。虚拟机启动后选择 Start with VxWorks55 就可以真正把 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 工具登录进运行中的 vxWorks FTP 服务器。说的拗口,见谅 选择高级 选择启动,在远程站点文件夹那输入/ata0a,启动传送模式选择二进制。确定后,再点 击完成,即可开始连接 vxWorks 的 FTP 服务器。如图 连接成功后,可以看到虚拟机硬盘下的文件了,这下传输文件就方便多了 vxload.com 为 DOS 下的将 bootrom 加载的 DOS 程序 nvram.txt bootrom 使用的引导行信息保存在这个文本文件里 vxWorks 从虚拟硬盘加载的 vxWorks 镜像 当然,访问 VxWorks 的 FTP 服务器还可以用其他软件,比如 FlashFXP 等。或者用 Windows 的 CMD 控制台用命令来访问,如下图,不过命令行还是麻烦,不如 GUI 来的方 便啊! 6、6、WindML编译与鼠标配置 编译与鼠标配置 6.1 编译VESAbios的图形库 选择 Tornado 2.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.2 VxWorks PS/2 鼠标配置 首先进入第 4 章建立的 VxWorks 工程配置窗口,配置 WindML PS/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.h C:Tornado2.2targetconfigcompssrcconfigAll.h | C:Tornado2.2targetprojBSPvxImageprjComps.h | ?这些文件的关系 C:Tornado2.2targetprojBSPvxImageprjParams.h | C:Tornado2.2targetprojBSPvxImage prjConfig.c / 在 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:To