博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
vxworks
阅读量:2220 次
发布时间:2019-05-08

本文共 24372 字,大约阅读时间需要 81 分钟。

、概述 
VxWorks操作系统的集成环境叫Tornado。Tornado集成环境提供了高效明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。Tornado环境采用主机-目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器(Target Server)与目标机上的目标代理(Target Agent)的通信完成对应用程序的调试、分析。它主要由以下几部分组成: 
VxWorks高性能的实时操作系统; 
* 应用编译工具; 
* 交互开发工具; 
下面对Tornado集成环境的各组件功能分别介绍: 
* Tornado开发环境 
Tornado是集成了编辑器、编译器、调试器于一体的高度集成的窗口环境,同样也可以从Shell窗口下发命令和浏览。 
* WindConfig:Tornado系统配置 
通过WindConfig可选择需要的组件组成VxWorks实时环境,并生成板级支持包BSP的配置。 
通过修改config.h可以实现WindConfig的所有功能,并且,可以实现WindConfig不能实现的功能。 
* WindSh:Tornado外壳 
WindSh是一个驻留在主机内的C语言解释器,通过它可运行下载到目标机上的所有函数,包括VxWorks和应用函数。Tornado外壳还能解释常规的工具命令语言TCL。 
WindSh不仅可以解释几乎所有的C语言表达式,而且可以实现所有的调试功能。它主要有以下调试功能:下载软件模块;删除软件模块;产生任务;删除任务;设置断点;删除断点;运行、单步、继续执行程序;查看内存、寄存器、变量;修改内 
 存、寄存器、变量;查看任务列表、内存使用情况、CPU利用率;查看特定的对象(任务、信号量、消息队列、内存分区、类);复位目标机。 
* 浏览器 
Tornado浏览器可查看内存分配情况、任务列表、CPU利用率、系统目标(如任务、消息队列、信号量等)。这些信息可周期性地进行更新。 
* CrossWind:源码级调试器 
源码级调试器CrossWind提供了图形和命令行方式来调试,可进行指定任务或系统级断点设置、单步执行、异常处理。 
有些功能如修改内存、寄存器、变量的值通过菜单操作是无法实现的,需要在WindSh中执行原语操作实现。 
* 驻留主机的目标服务器 
目标服务器管理主机与目标机的通信,所有与目标机的交互工具都通过目标服务器,它也管理主机上的目标机符号表,提供目标模块的加载和卸载。 
* Tornado注册器 
所有目标服务器注册其提供的服务在注册器中。注册器映射用户定义的目标名到目标服务器网络地址。 
* VxWorks 
Tornado集成了VxWorks操作系统。 
* 目标代理程序 
目标代理程序是一个驻留在目标机中的联系Tornado工具和目标机系统的组件。一般来说,目标代理程序往往是不可见的。 
3、MPC750/MCPN750上bootrom的制作 
MPC750/MCPN750上的 bootrom用于初始化MPC750/MCPN750的硬件,通过网口加载 VxWorks 的内核映象。因为MPC750/MCPN750的bootrom已经制作,如果没有特殊需要,不需重新制作bootrom。 
制作MPC750/MCPN750上 bootrom的步骤: 
* 在Tornado集成环境下,使用菜单命令Project | Make MCP750/MCPN750 | Comman Targets | clean删除以前生成的bootrom文件,使用菜单命令Project | Make MCP750/MCPN750 | Comman Targets | bootrom.hex生成bootrom文件。生成的bootrom文件在相应的BSP目录中(MCP750为c:/tornado/target/config/mcp750,MCPN750为c:/tornado/target/config/mcpn750) 
* 使用elftobin < bootRom > mcp750.bin 生成mcp750.bin 文件 
* 启动TFTP服务器tftpd32.exe,设置下载文件(mcp750.bin)的目录 
* 用PPCBug启动目标系统 
* 运行并配置超级终端。配置:9600bps波特率、8位数据位、1位停止位、无校验位、无流量控制。 
* 在超级终端中,使用niot命令修改客户(目标机)IP地址和服务器(主机)IP地址 
* 使用niop命令设置加载的文件名(mcp750.bin) 
* 使用pflash 4000:FFF00 ff000100命令写FLASH B。  
4、启动软盘制作 
目标机启动软盘用于启动目标机,通过网口使用Ftp协议从主机下载VxWorks映象。在X86平台上,一般使用启动软盘来启动目标机。 
.1 .启动盘的制作 
在实时应用系统的开发调测阶段,往往采用以PC机作为目标机来调测程序。主机PC和目标机PC之间可采取串口或是网口进行联结。由于大多数目标已配有网卡,网络联结成为最简单快速的连接方式。串口联结虽通信速率不高,也有它自己的优点,系统级任务调试(如中断服务程序ISR)需使通信方式工作在Polled 模式,网口联结就不支持,因此可以裁剪掉系统中网络部分,以使VxWorks系统更小,满足目标板的内存约束。下面分别对这两种通信方式下目标机VxWorks系统启动盘的制作作一简要介绍(以PC机为目标系统)。 
串口通信时目标机VxWorks系统启动盘的制作步骤: 
1.修改通用配置文件//Tornado/target/config/pc486/config.h. 
在config.h文件中加入以下宏定义: 
#define INCLUDE_WDB 
#define INCLUDE_WDB_TTY_TEST 
#undef WDB_COMM_TYPE 
#define WDB_COMM_TYPE WDB_COMM_SERIAL /*定义通信方式为串口联结*/ 
#define WDB_TTY_CHANNEL 1 /*通道号*/ 
#define WDB_TTY_BAUD 9600 /*串口速率,可设置至38400*/ 
#define WDB_TTY_DEV_NAME "tyCo/1" 
#define CONSOLE_TTY 0 
#define DEFAULT_BOOT_LINE / 
"fd=0,0(0,0)hostname:/fd0/vxWorks h=主机ip e=目标机ip u=主机上的登录用户名"  
2. 在Tornado集成环境中执行菜单命令Project | Make PC486 | Common Targets | clean删除以前生成的文件,执行菜单命令Project | Make PC486 |  Boot Rom Targets   | bootrom_uncmp编译链接生成bootrom_uncmp ;再选择VxWorks Target,编译生成vxworks。 
3.拷贝//Tornado/target/config/pc486/bootrom_uncmp至//Tornado/host/bin下; 
4.重命名文件bootrom_uncmp为bootrom; 
15.准备一张已格式化的空盘[已过滤词语]软驱; 
6.在目录//Tornado/host/bin下执行命令 mkboot a: bootrom; 
7.拷贝//Tornado/target/config/pc486/VxWorks至软盘; 
8.将系统制作盘[已过滤词语]目标机软驱,加电启动目标机即载入VxWorkst系统。 
网口通信时目标机VxWorks系统启动盘的制作步骤: 
1.配置目标机网卡,设置其中断号和输入输出范围(I/O地址); 
2.修改通用配置文件//Tornado/target/config/pc486/config.h. 
针对不同的网卡,其名称不同,如NE2000及其兼容网卡为ENE,3COM以太网卡为ELT,Intel网卡为EEX。 
在config.h文件中修改相应网卡类型(如网卡为3COM网卡)的定义部分: 
#define IO_ADRS_ELT 网卡I/O地址 
#define INT_LVL_ELT 网卡中断号 
并且修改#define DEFAULT_BOOT_LINE的定义: 
#define DEFAULT_BOOT_LINE / 
"elt(0,0)主机标识名:C://tornado//target//config//pc486//vxWorks h=主机IP e=目标机IP u=登录用户名 pw=口令 tn=目标机名"  
DEFAULT_BOOT_LINE宏定义,使缺省配置符合自己的调试环境 
#define DEFAULT_BOOT_LINE / 
"ene(0,0)host:c:/tornado/target/config/pc486/vxWorks h=129.9.75.39 e=129.9.49.7 u=x86 pw=x86 tn=x86" 
ene(0,0) /* 启动设备为网卡 */ 
host /* 主机标识,可以任意填写,不影响启动过程 */ 
c:/tornado/target/config/pc486/vxWorks  /* 需要从主机加载的映象文件 */ 
h=129.9.75.39  /* 主机的IP地址 */ 
e=129.9.49.7 /* 目标机的IP地址 */ 
u=x86  /* 用户名,主机的Ftp服务器必须有相应的同名用户 */ 
pw=x86 /* 密码,必须与主机的Ftp服务器相应的同名用户的密码相同*/ 
tn=x86  /*目标名,可以任意设置,不影响启动过程*/ 
3.主机信息的确定(可无) 
主机操作系统Win95安装目录下有一文件hosts.sam,向其中加入: 
主机IP 主机名 
目标机IP 目标机名 
4.在Tornado集成环境中点取Project菜单,选取Make PC486,选择Common Target,先进行clean操作;再选择Boot Rom Target,进行bootrom_uncmp操作;再选择VxWorks Target,进行vxworks操作。 
5.拷贝//Tornado/target/config/pc486/bootrom_uncmp至//Tornado/host/bin下; 
6.重命名文件bootrom_uncmp为bootrom; 
7.准备一张已格式化的空盘[已过滤词语]软驱; 
8.在目录//Tornado/host/bin下执行命令 mkboot a: bootrom ; 
9.启动Tornado组件FTP Server,在WFTPD窗口中选择菜单Security中的User/right...,在其弹出窗口中选择New User...,根据提示信息输入登录用户名和口令,并且要指定下载文件vxWorks所在根目录;还必选取主菜单Logging中Log options,使Enable Logging、Gets 、Logins 、Commands 、Warnings能。 
10.将系统制作盘[已过滤词语]目标机软驱,加电启动目标机即通过FTP方式从主机下载VxWorkst系统。 
 2)主机Tornado环境配置 
串口联结时主机Tornado开发环境的目标服务器配置操作如下: 
1.在Tornado集成环境中点取Tools菜单,选取Target Server,选择config...; 
2.在Configure Target Servers窗口中先给目标服务器命名; 
3.在配置目标服务器窗口中的"Change Property"窗口中选择Back End,在"Available Back"窗口中选择wdbserial,再在"Serial Port"窗口中选择主机与目标机连接所占用的串口号(COM1,COM2),再在"Speed(bps)"窗口中选择主机与目标机间串口速率。 
4. 在配置目标服务器窗口中的"Change Property"窗口中选择Core File and Symbols, 
选择File为BSP目标文件所在目录(本例为PC486目录)的VxWorks.st,并选取为All Symbols. 
5.在配置目标服务器窗口中的"Change Property"窗口中的其它各项可根据需要选择。 
网口联结时主机Tornado开发环境的目标服务器配置操作如下: 
1.在Tornado集成环境中点取Tools菜单,选取Target Server,选择config...; 
2.在Configure Target Servers窗口中先给目标服务器命名; 
3.在配置目标服务器窗口中的"Change Property"窗口中选择Back End,在"Available Back"窗口中选择wdbrpc,在"Target IP/Address"窗口中输入目标机IP。 
4. 在配置目标服务器窗口中的"Change Property"窗口中选择Core File and Symbols, 
选择File为BSP目标文件所在目录(本例为PC486目录)的VxWorks,并选取为All Symbols. 
5.在配置目标服务器窗口中的"Change Property"窗口中的其它各项可根据需要选择。 
以上的串口和网口联结配置完成后,可按以下步骤和目标机建立连接: 
1.点击Launch按钮,连接主机和目标机,全部出现successed后即可进入应用程序调试。 
2.点击图形按钮中下拉框,选择和主机相连的目标机。 
3.选择Debugger菜单项中Download...,下载应用程序到目标板。 
4. 选择Debugger菜单项中Run...,调测应用程序中某一任务或功能函数。 
VxWorks系统目标机启动盘的制作步骤: 
焈 配置目标机网卡,设置其中断号和输入输出范围(I/O地址); 
焈 修改配置文件C:/Tornado/target/config/pc486/config.h。 
不同的网卡,其名称不同,如NE2000及其兼容网卡为ENE,3COM以太网卡为ELT,Intel网卡为EEX。根据目标机的网卡类型、中断号、I/O地址修改config.h文件中的相应宏定义。以下以NE2000网卡(中断号为10,I/O地址为0X300)为例说明配置过程。 
#define IO_ADRS_ENE 0x300 /*网卡I/O地址*/ 
#define INT_LVL_ENE 0x0a /*网卡中断号*/ 
* 因为用软盘启动目标机无法保存修改的信息,修改config.h文件中的DEFAULT_BOOT_LINE宏定义,使缺省配置符合自己的调试环境 
#define DEFAULT_BOOT_LINE / 
"ene(0,0)host:c:/tornado/target/config/pc486/vxWorks h=129.9.75.39 e=129.9.49.7 u=x86 pw=x86 tn=x86" 
ene(0,0) /* 启动设备为网卡 */ 
host /* 主机标识,可以任意填写,不影响启动过程 */ 
c:/tornado/target/config/pc486/vxWorks  /* 需要从主机加载的映象文件 */ 
h=129.9.75.39  /* 主机的IP地址 */ 
 e=129.9.49.7 /* 目标机的IP地址 */ 
 u=x86  /* 用户名,主机的Ftp服务器必须有相应的同名用户 */ 
 pw=x86 /* 密码,必须与主机的Ftp服务器相应的同名用户的密码相同*/ 
tn=x86  /*目标名,可以任意设置,不影响启动过程*/ 
焈 在Tornado集成环境中执行菜单命令Project | Make PC486 | Common Targets | clean删除以前生成的文件,执行菜单命令Project | Make PC486 |  Boot Rom Targets                | bootrom_uncmp编译链接生成bootrom_uncmp。 
* 拷贝c:/Tornado/target/config/pc486/bootrom_uncmp至c:/Tornado/host/bin下; 
* 重命名文件bootrom_uncmp为bootrom; 
* 准备一张已格式化的空盘[已过滤词语]软驱; 
* 在目录c:/Tornado/host/bin下执行命令 mkboot    a:     bootrom ; 
* 启动盘制作完成  
阅读全文 | 评论(0) | 人气(70) |  (0) |  (0) | 复制地址 | 收藏 VxWorks使用说明书(1) 显示摘要2006-03-03 类别:默认1、概述 
VxWorks操作系统的集成环境叫Tornado。Tornado集成环境提供了高效明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。Tornado环境采用主机-目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器(Target Server)与目标机上的目标代理(Target Agent)的......
1、概述 
VxWorks操作系统的集成环境叫Tornado。Tornado集成环境提供了高效明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。Tornado环境采用主机-目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器(Target Server)与目标机上的目标代理(Target Agent)的通信完成对应用程序的调试、分析。它主要由以下几部分组成: 
VxWorks高性能的实时操作系统; 
* 应用编译工具; 
* 交互开发工具; 
下面对Tornado集成环境的各组件功能分别介绍: 
* Tornado开发环境 
Tornado是集成了编辑器、编译器、调试器于一体的高度集成的窗口环境,同样也可以从Shell窗口下发命令和浏览。 
* WindConfig:Tornado系统配置 
通过WindConfig可选择需要的组件组成VxWorks实时环境,并生成板级支持包BSP的配置。 
通过修改config.h可以实现WindConfig的所有功能,并且,可以实现WindConfig不能实现的功能。 
* WindSh:Tornado外壳 
WindSh是一个驻留在主机内的C语言解释器,通过它可运行下载到目标机上的所有函数,包括VxWorks和应用函数。Tornado外壳还能解释常规的工具命令语言TCL。 
WindSh不仅可以解释几乎所有的C语言表达式,而且可以实现所有的调试功能。它主要有以下调试功能:下载软件模块;删除软件模块;产生任务;删除任务;设置断点;删除断点;运行、单步、继续执行程序;查看内存、寄存器、变量;修改内 
 存、寄存器、变量;查看任务列表、内存使用情况、CPU利用率;查看特定的对象(任务、信号量、消息队列、内存分区、类);复位目标机。 
* 浏览器 
Tornado浏览器可查看内存分配情况、任务列表、CPU利用率、系统目标(如任务、消息队列、信号量等)。这些信息可周期性地进行更新。 
* CrossWind:源码级调试器 
源码级调试器CrossWind提供了图形和命令行方式来调试,可进行指定任务或系统级断点设置、单步执行、异常处理。 
有些功能如修改内存、寄存器、变量的值通过菜单操作是无法实现的,需要在WindSh中执行原语操作实现。 
* 驻留主机的目标服务器 
目标服务器管理主机与目标机的通信,所有与目标机的交互工具都通过目标服务器,它也管理主机上的目标机符号表,提供目标模块的加载和卸载。 
* Tornado注册器 
所有目标服务器注册其提供的服务在注册器中。注册器映射用户定义的目标名到目标服务器网络地址。 
* VxWorks 
Tornado集成了VxWorks操作系统。 
* 目标代理程序 
目标代理程序是一个驻留在目标机中的联系Tornado工具和目标机系统的组件。一般来说,目标代理程序往往是不可见的。 
3、MPC750/MCPN750上bootrom的制作 
MPC750/MCPN750上的 bootrom用于初始化MPC750/MCPN750的硬件,通过网口加载 VxWorks 的内核映象。因为MPC750/MCPN750的bootrom已经制作,如果没有特殊需要,不需重新制作bootrom。 
制作MPC750/MCPN750上 bootrom的步骤: 
* 在Tornado集成环境下,使用菜单命令Project | Make MCP750/MCPN750 | Comman Targets | clean删除以前生成的bootrom文件,使用菜单命令Project | Make MCP750/MCPN750 | Comman Targets | bootrom.hex生成bootrom文件。生成的bootrom文件在相应的BSP目录中(MCP750为c:/tornado/target/config/mcp750,MCPN750为c:/tornado/target/config/mcpn750) 
* 使用elftobin < bootRom > mcp750.bin 生成mcp750.bin 文件 
* 启动TFTP服务器tftpd32.exe,设置下载文件(mcp750.bin)的目录 
* 用PPCBug启动目标系统 
* 运行并配置超级终端。配置:9600bps波特率、8位数据位、1位停止位、无校验位、无流量控制。 
* 在超级终端中,使用niot命令修改客户(目标机)IP地址和服务器(主机)IP地址 
* 使用niop命令设置加载的文件名(mcp750.bin) 
* 使用pflash 4000:FFF00 ff000100命令写FLASH B。  
5、使用步骤 
使用Tornado集成环境一般需要经过以下步骤: 
焈 运行TCP/IP端口管理器Portmapper(portmap.exe) 
焈 运行注册器Tornado Registry(wtxregd.exe)。如果使用的是试用版,注意是否注册成功,是否修改了日期 
焈 运行并配置Ftp Server(wtfpd32.exe)。点击菜单命令Security | Users | rights弹出配置窗口,点击New User,在New User弹出窗口加入需要加入的用户名(注意:要与目标机bootrom或启动软盘设置一致),在改变密码弹出窗口设置该用户的密码(注意:要与目标机bootrom或启动软盘设置一致),在Home Directory中设置相应的目录,MCP750为c:/tornado/target/config/mcp750,MCPN750为c:/tornado/target /config/mcpn750,X86为c:/tornado/target/config/pc486 ,配置结束。 
焈 目标板上电或复位 
焈 在控制台(MCP750/MCPN750为超级终端,X86为目标机显示器)上可以看到启动信息。如果需要修改,在等待用户配置时,按c键,进行相应修改。(注意:配置信息要与主机配置、Ftp服务器配置一致),修改结束后,按@键重新启动目标机。 
焈 运行Tornado(tornado.exe) 
焈 执行菜单命令Tools | Target Server | Configure,弹出目标服务器设置对话框,点击New产生一个新的配置。设置De******ion域(可以任意设置);设置Target Server域(可以任意设置);在Change Property域选取Back End项(该项设置主机与目标机如何连接,缺省为网口连接,如果使用串口连接,需要修改configall.h文件,重新编译链接VxWorks映象),如果使用网口调试,选择wdbrpc,在目标IP名或地址域中给出目标机的IP名或地址(建议给出IP名,因为这样会快得多),如果给出的是IP名,需要在HOSTS文件中给出IP名与IP地址的对应关系,如果用串口调试,选择wdbserial,选择相应的串口和波特率(注意:此处的串口是指主机的串口不是目标机的串口);在Change Property域选取Core File and Symbols项,选中File项输入相应的文件(MCP750c:/tornado/target/config/mcp750/vxWorks,MCPN750为c:/tornado/target  /config/mcpn750/vxWorks,在X86平台上为c:/tornado/target/config/pc486/vxWorks),点击Launch,运行目标服务器。 
焈 执行菜单命令File | New 创建一个新的文件,并打开编辑器Editor(该编辑器功能不是很强大,可以使用其它编辑器如Source Insight)。 
焈 单独编译生成的源文件,生成目标文件(.o),编译连接过程的详细介绍请见后面。 
焈 选取相应的目标服务器。 
焈 执行菜单命令Tools | Debugger运行调试器。 
焈 执行菜单命令Debug | Download下载要调试的目标文件(.o) 
焈 在Editor窗口设置断点。 
焈 执行菜单命令Debug | Run弹出对话框,要求输入调试入口函数,输入要调试的函数。 
焈 进行源码级调试 
焈 执行菜单命令Tools | Shell运行Shell。可以在Shell窗口查看/修改全局变量、内存,查看任务列表、各模块使用内存的情况、对象(如任务、队列、信号量、定时器、内存分区)等信息。 
焈 执行菜单命令Tools | Browser运行Browser。在Browser中可以查看任务列表、各模块使用内存的情况、对象(如任务、队列、信号量、定时器、内存分区)等信息。 
6、编译链接 
VxWorks的开发调试环境可以把VxWorks内核和应用分开,分别加载。 VxWorks内核在目标机启动过程中通过ftp协议加载到目标机中运行,应用模块在调试中动态下载,目标代理把下载的应用模块动态链接到系统中,应用模块的调试是通过在用户执行运行命令时提供入口函数实现的。这样做的好处是需要调试哪个模块就下载那个模块调试,不需下载其它模块,前期调试一般使用这种编译方式。  
VxWorks的开发调试环境也提供把应用模块与系统内核链接在一起,通过ftp协议加载执行。这需要经过两个步骤:把应用模块的入口代码加到usrConfig.c文件中的usrRoot函数的尾部;把应用模块编译链接到VxWorks内核中,这种编译链接方式一般用于后期调试。 
下面分类对编译链接进行介绍 
6.1 单个应用模块的编译 
单个应用模块的编译可以通过使用菜单命令Project | Make Current Source File进行编译,要编译的源文件必须已经用Editor打开并且为当前窗口。如果要编译的源文件所在目录没有makefile文件,系统会提示创建一个新的makefile文件,确定。在弹出的创建缺省makefile窗口的CPU域选择相应的项(MCP750/MCPN750选择PPC604,X86选择I80486),在ADDED_FLAGS域输入-g,确定。系统对源文件进行编译,生成目标文件(.o)。生成的目标文件在Debugger环境中动态加载,与内核动态链接到一起。 
6.2 系统内核vxWorks的编译链接 
系统内核vxWorks是调试中使用最多的内核映象。它被通过Ftp协议从主机加载到目标机中。它的作用通常是进行软硬件初始化,等待加载应用模块,进行程序调试。 
在Project菜单下,选择相应硬件平台的生成vxWorks的命令,进行编译链接。在编译链接之前先使用clean命令删除以前生成的文件。 
6.3 应用模块与系统内核一起编译链接 
VxWorks的开发调试环境也提供把应用模块与系统内核链接在一起,通过Ftp协议加载,vxWorks内核自动执行应用模块。这需要经过两个步骤:把应用模块的入口代码加到usrConfig.c文件中的usrRoot函数的尾部;在makefile中把待生成的应用模块的目标文件名加到宏定义MACH_EXTRA中,再把相应的编译规则加到makefile中。编译链接生成vxWorks映象。 
6.4 Project菜单下其它编译链接命令介绍 
* vxWorks_rom :可以写到ROM的、没有带符号表和Shell的、没有压缩的vxWorks。 
*  vxWorks.st :带有符号表的vxWorks。 
*  vxWorks.st_rom:可以写到ROM的、带有符号表和Shell的、压缩的vxWorks。 
*  vxWorks.res_rom :可以写到ROM的、带有符号表和Shell的、只有数据段拷贝到内存的、没有压缩的vxWorks。 
*  vxWorks.res_rom_nosym:可以写到ROM的、只有数据段拷贝到内存的、没有压缩的vxWorks。 
*  bootrom:压缩的 bootrom 
*  bootrom_uncmp:没有压缩的bootrom 
7、调试时的常用方法 
下面是一些调试手段在调试器中的相应命令(操作) 
调试手段 
相应操作 
设置断点 
菜单命令Debug|Toggle BreakPoint 
删除断点 
菜单命令Debug|Toggle BreakPoint 
运行 
菜单命令Debug|Run 
单步执行(进入函数) 
菜单命令Debug|Step 
单步执行(不进入函数) 
菜单命令Debug|Next 
继续执行(停下后的程序) 
菜单命令Debug|Continue 
执行完当前的函数,停在调用它的函数的下一条语句 
菜单命令Debug|Finish 
查看变量的值 
菜单命令Debug|Inspect 
查看当前函数的所有局部变量 
菜单命令Debug|Locals 
查看内存 
菜单命令Debug|Memory 
查看寄存器 
菜单命令Debug|Registers 
修改内存 
Shell命令m 
修改寄存器 
Shell命令mRegs 
修改变量 
在Shell中直接给该变量赋值(局部变量无法用此方法修改) 
卸载一个加载的模块 
Shell命令unld 
删除任务 
Shell命令td 
复位目标机 
Shell命令reboot 
用该命令的好处:目标服务器自动与目标代理重新链接,Shell自动重启 
查看任务 
在Browser对象信息窗口输入待查看的任务名或ID 
查看信号量 
在Browser对象信息窗口输入待查看的信号量名或ID 
查看消息队列 
在Browser对象信息窗口输入待查看的消息队列命或ID 
内存分区 
在Browser对象信息窗口输入待查看的内存分区ID 
看门狗 
在Browser对象信息窗口输入待查看的看门狗ID 
类(class) 
在Browser对象信息窗口输入待查看的类的ID 
查看内存使用(模块使用内存的情况) 
Browser的内存使用窗口 
查看任务列表(系统里的所有任务) 
Browser的任务列表窗口 
查看CPU占用率 
Browser的Spy窗口 
查看堆栈使用情况 
Browser的堆栈检查窗口 
注: 
* Shell可以通过菜单命令Debug | Shell启动 
* Shell的原语可以通过在Shell中输入help列出 
* Browser可以通过菜单命令Debug | Browser启动 
* Debugger命令窗口的命令可以通过在命令窗口输入help列出 
8、任务调试模式下的多任务调试 
在任务调试模式下,在一个集成环境中,在一个任务中调试,在另一个任务中设置断点,设置的断点不起作用。这是因为一个调试器只能处理一个TCB(任务控制块),每个任务都有一个TCB,因此一个调试器只能调试一个任务,要调试几个任务就要启动几个调试器。一个集成环境只能启动一个调试器,所以要调试几个任务就要启动几个集成环境。另外,需要在被调试的任务的待调试的第一条语句前加入taskSuspend(0)语句,挂起该任务,否则任务就可能会在调试前被执行。 
下面是多任务调试的测试用例的源代码 
/* VxWorks includes */ 
#include        "vxWorks.h" 
#include        "taskLib.h" 
#include        "stdio.h" 
#include        "msgQLib.h" 
int g_lTaskATid; 
int g_lTaskBTid; 
MSG_Q_ID g_MsgQ1id; 
MSG_Q_ID g_MsgQ2id; 
void MultiTaskTestTaskA(void)  
    char cMsgToTaskB[100]; 
    char cMsgFromTaskB[100]; 
    sprintf(cMsgToTaskB,"To TaskB /n"; 
    printf(" Hello from MultiTaskTestTaskA /n"; 
    /*start point of debugging for  MultiTaskTestTaskA*/ 
    taskSuspend(0); 
     
    for(; 
    {     
        printf(" Hello from MultiTaskTestTaskA /n"; 
        /*Send message to MultiTaskTestTaskB*/ 
             
       msgQSend(g_MsgQ1id,cMsgToTaskB,sizeof(cMsgToTaskB),WAIT_FOREVER,                                      MSG_PRI_NORMAL);  
        /*Receive message from MultiTaskTestTaskB*/ 
        msgQReceive(g_MsgQ2id,cMsgFromTaskB,100,WAIT_FOREVER); 
        printf("%s",cMsgFromTaskB); 
    } 
     
void MultiTaskTestTaskB(void)   
    char cMsgToTaskA[100]; 
    char cMsgFromTaskA[100]; 
    sprintf(cMsgToTaskA,"To TaskA /n"; 
    printf(" Hello from MultiTaskTestTaskB /n"; 
    /*start point of debugging for  MultiTaskTestTaskA*/ 
    taskSuspend(0); 
    for(; 
    { 
        printf(" Hello from MultiTaskTestTaskB /n"; 
         
        /*Send message to MultiTaskTestTaskA*/ 
        msgQSend(g_MsgQ2id,cMsgToTaskA,sizeof(cMsgToTaskA),WAIT_FOREVER,                  MSG_PRI_NORMAL);  
        /*Receive message from MultiTaskTestTaskA*/ 
        msgQReceive(g_MsgQ1id,cMsgFromTaskA,100,WAIT_FOREVER); 
        printf("%s",cMsgFromTaskA); 
    } 
/*This function spawns MultiTaskTestTaskA and MultiTaskTestTaskB , creates g_MsgQ1id and g_MsgQ2id ,  is entry for debugging.*/ 
void  MultiTaskTestInit(void) 
    printf(" Hello from MultiTaskTestInit /n"; 
    g_MsgQ1id=msgQCreate(20,100,MSG_Q_FIFO); 
    if(g_MsgQ1id==NULL) 
    { 
        printf(" ERROR: create g_MsgQ1 error /n"; 
    } 
    g_MsgQ2id=msgQCreate(20,100,MSG_Q_FIFO); 
    if(g_MsgQ1id==NULL) 
    { 
        printf(" ERROR: create g_MsgQ2 error /n"; 
    } 
  
     
    printf(" Spawning a new task called MultiTaskTestTaskA /n/n"; 
    g_lTaskATid = taskSpawn("MultiTaskTestTaskA", 100,0,10000,                                                                                          (FUNCPTR)MultiTaskTestTaskA, 0,0,0,0,0,0,0,0,0,0); 
    if(g_lTaskATid == ERROR) 
    {  
        printf(" ERROR: task did not spawn /n"; 
        exit(1); 
    } 
    printf(" Spawning a new task called MultiTaskTestTaskB  
/n"; 
    g_lTaskBTid = taskSpawn("MultiTaskTestTaskB", 100,0,10000,                                                                                           (FUNCPTR)MultiTaskTestTaskB, 0,0,0,0,0,0,0,0,0,0);                                                              
   if(g_lTaskBTid == ERROR) 
    {  
        printf(" ERROR: task did not spawn /n"; 
        exit(1); 
    } 
  
  exit(0); 
多任务调试步骤: 
* 用-g选项编译源代码产生目标文件 
* 下载产生的目标文件 
* 在MultiTaskTestInit函数的开始设置断点 
* 把MultiTaskTestInit设置为调试任务的人口函数 
* 单步执行产生MultiTaskTestTaskA任务的语句后可以在串口(超级终端)上看到字符串Hello from MultiTaskTestTaskA,用Browser查看任务,可以看到任务MultiTaskTestTaskA出于挂起态(suspended),表明程序执行了taskSuspend(0)语句。 
* 运行另一个Tornado集成环境 
* Attach任务MultiTaskTestTaskA, 
* 在语句msgQReceive(g_MsgQ2id,cMsgFromTaskB,100,WAIT_FOREVER)的下一条语句处设置断点 
* 运行任务MultiTaskTestTaskA。可以看到没有执行到断点处,用Browser查看任务状态,MultiTaskTestTaskA出于阻塞态(pended),因为它在等待消息。 
* 单步执行MultiTaskTestInit到产生MultiTaskTestTaskB任务的下一条语句,可以看到MultiTaskTestTaskB任务处于挂起态 
* 再运行另一个Tornado集成环境 
* Attach任务MultiTaskTestTaskB, 
* 在语句msgQReceive(g_MsgQ1id,cMsgFromTaskA,100,WAIT_FOREVER)下一条语句处设置断点 
* 运行任务MultiTaskTestTaskB。可以看到执行到断点处停下。这是因为MultiTaskTestTaskA任务已经发送一条消息到MultiTaskTestTaskB的接收队列中。 
* 此时,可以看到MultiTaskTestTaskA任务也运行到断点处,因为为MultiTaskTestTaskB任务已经发送一条消息到MultiTaskTestTaskA的接收队列中。
9、系统调试模式下程序的调试 
Tornado集成环境提供两种调试模式:任务调试模式和系统调试模式。在任务调试模式下,在一个集成环境下一个时间内只能调试一个任务。调试只影响当前被调试的任务,其它任务正常运行。在系统调试模式下,可以同时调试多个任务、中断服务程序(ISR),调试影响整个系统。 
Tornado1.0集成环境下,在系统模式下进行程序调试,主机与目标机之间必须使用串口通信。Tornado2.0集成环境提供了通过网口进行系统模式调试的功能。 
系统缺省使用网口通信,如果需要使用串口通信,需要修改文件C: / Tornado / target / config  
} all / configAll.h的一些宏定义,修改为: 
#define WDB_COMM_TYPE        WDB_COMM_SERIAL   /*使用串口通信*/ 
#define WDB_TTY_CHANNEL    0                                         /*使用第一个串口*/ 
#define WDB_TTY_BAUD          38400                                 /*波特率:38400bps*/ 
重新编译链接vxWorks。 
在启动目标服务器时,要选择串口通信,并进行相应配置。 
9.1 系统调试模式下多任务的调试: 
调试使用的源代码与任务调试模式中使用的代码相同。但是,需要去掉为了能够在任务调试模式下进行多任务调试的MultiTaskTestTaskA和MultiTaskTestTaskB中的语句taskSuspend(0);。 
多任务调试步骤: 
* 用-g选项编译源代码产生目标文件。 
* 下载产生的目标文件。 
* 在MultiTaskTestInit函数的开始设置断点。 
* 在Debugger命令窗口输入命令attach system进入系统调试模式。 
* 在Shell窗口输入命令sp MultiTaskTestInit产生一个以MultiTaskTestInit为入口函数的任务,因为整个系统都停下了,新产生的任务还没有执行,这可以通过在Debugger命令窗口输入命令info threads显示当前系统中的任务列表看出来。 
* 执行菜单命令Debug | Continue继续运行程序。 
* 系统在设置的断点处停下。 
* 在函数MultiTaskTestTaskA中的语句msgQReceive(g_MsgQ2id,cMsgFromTaskB, 100,WAIT_FOREVER)的下一条语句处设置断点。 
* 在函数MultiTaskTestTaskB中的语句msgQReceive(g_MsgQ1id,cMsgFromTaskA, 100,WAIT_FOREVER)的下一条语句处设置断点。 
* 执行菜单命令Debug | Continue继续运行程序。 
* 程序在任务MultiTaskTestTaskB中的断点处停下(为什么不是在任务MultiTaskTestTaskA中停下?请考虑)。 
* 执行菜单命令Debug | Continue继续运行程序。 
* 程序在任务MultiTaskTestTaskA中的断点处停下。 
* 执行菜单命令Debug | Continue继续运行程序。 
* 程序又一次在任务MultiTaskTestTaskA中的断点处停下(为什么停两次?请考虑)。 
* 执行菜单命令Debug | Continue继续运行程序。 
* 程序在任务MultiTaskTestTaskB中的断点处停下。 
9.2 中断服务程序的调试 
中断服务程序只能在系统调试模式下调试,不能在任务调试模式下调试。因为中断服务程序是作为系统的一部分运行,不是以任务方式运行,因此不需要为它产生任务。 
中断服务程序调试步骤: 
* 用-g选项编译源代码产生目标文件。 
* 下载产生的目标文件。 
* 在MultiTaskTestInit函数的开始设置断点。 
* 在Debugger命令窗口输入命令attach system进入系统调试模式。 
* 执行菜单命令Debug | Continue继续运行程序。 
* 如果产生相应的中断,程序就会在中断服务程序的断点处停下。进行需要的调试。
loading...

 

2006-6-9
在这里输入日志内容

VMWare上安装VxWorks操作系统

wabcon2003-12-27

概述

VxWorks是风河公司(Windriver)开发的实时操作系统之一,以其优秀的可靠性、实时性及内核的可裁减性,被广泛应用于通信、军事、航天、航空等关键行业领域。VxWorks可以适用于多种硬件体系结构,其中也包括大家日常都可以接触到的PC体系结构。

VMWare 是被广泛应用虚拟PC系统软件,他可以提供基于Inetl CPU的虚拟PC系统环境,包括CPU、BIOS、硬盘和其他外围硬件设备,使您可以在一台PC机上同时运行两个操作系统。VMWare对外围硬件设备的模拟,屏蔽了不同设备型号的差异,在硬件环境发生改变时(硬件型号变化),对于运行于VMWare上的操作系统影响很小(无须安装新的驱动程序)。

本文以下部分将介绍如何在VMWare软件提供的虚拟环境上安装VxWorks操作系统。由于可以在同一台PC机上建立完整VxWorks开发环境,所以可以有效地降低项目初期的开发成本,也可以为初学者提供一个接近于真实的模拟环境。

需要注意的是,由于VMWare本身是运行在Windows操作系统之上的,而VxWorks运行于VMWare之上,所以这个模拟环境无法保证VxWorks的实时特性。

 

准备工作

我们假设您有一台普通配置的PC机,并安装了Windows2000操作系统。其次您需要安装Tornado 2.2 for pcPentium开发环境。缺省安装的Tornado 2.2 for pcPentium可能不包括pcPentium的BSP组件,但该组件可以从风河公司(Windriver)的网站免费下载。

我们将在下文以WIND_BASE引用Tornado的安装路径。

其次是要安装VMWare软件,这里我们使用4.0的版本。如果您还没有该软件,也可以从VMWare的网站下载试用版。

最后,由于Tornado自带的PC-NET网卡驱动有问题,所以需要下载AMD的PC-NET网卡的VxWorks系统驱动,可以从AMD网站免费下载。

一张1.44M的软盘,用于制作系统引导盘。

准备并安装好以上软件后,就可以开始下一步的工作了。

 

开始安装

编译网卡驱动程序

VMWare为运行于其上的操作系统提供虚拟网卡支持,该网卡类型即为AMD的PC-NET。实际上,在Tornado开发包中已经包含了该类型网卡的驱动程序,但经过测试,对于VMWare无法正常工作,所以您需要从AMD的网站下载最新的驱动程序。

下载得到的是一个可执行的安装程序,运行该程序将得到一个压缩包和一个帮助文件,按照该帮助的要求,将压缩包直接释放到Tornado目录下。如果提示是否允许覆盖文件,则选择允许。

此后按如下步骤完成驱动程序的编译和替换:

  • 打开一个控制台窗口,运行批处理程序:$(WIND_BASE)/host/x86-win32/bin/ torVars.bat;
  • 重新定位到$(WIND_BASE)/target/src/drv/end目录,运行:

make CPU=PENTIUM tool=gnu ln97xend.o

其间会产生一些警告,但这不会影响我们的工作。

  • 重新定位到$(WIND_BASE)/target/lib/pentium/PENTIUM/common目录,并将上一步生成的文件ln97xend.o复制到此目录下。备份此目录下的文件libdrv.a;
  • 运行命令arpentium -d libdrv.a ln97xEnd.o,删除libdrv.a中原有的ln97xEnd模块,然后再运行命令:

arpentium -ra iOlicomEnd.o libdrv.a ln97xEnd.o

将我们刚刚创建的新模块添加进去。

到此有关网卡驱动的设置就完成了。注意不要关闭这个窗口,后面还要使用。

 

修改配置文件

在这一节中,我们要修改编译VxWorks的配置头文件Config.h中定义的一些参数,使编译出来的系统引导程序和VxWorks的映象符合我们的要求;同时还要修改sysLn97xEnd.c这个文件,以使系统的网络功能正常运行。

  • 定位目录到$(WIND_BASE)/target/config/pcPentium并打开该目录下Config.h文件;
  • 我们首先要修改VxWorks的启动参数。先查找到定义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=vxworks tn=target"

其中:

  • lnPci(0,0)指定了使用第0个网卡和第0个处理器,lnPci这个标识会因为使用的驱动程序不同而有所不同,但这里用lnPci就可以了;
  • your_host_name指定您的主机的名字,使用Windows系统的主机名就可以;
  • d://vxWorks指定了VxWorks映象下载的完整路径;
  • h=192.168.80.169是主机的IP地址,就是您当前正在使用的系统的IP地址;
  • e=192.168.80.254是目标机的IP地址,也就是未来VxWorks操作系统的IP地址,您只要任意指定一个不冲突的IP地址即可,这里我们假设您的目标机IP地址和主机IP地址在同一个网段内;
  • u=target指定了FTP服务器的用户名,这个FTP就是用来下载VxWorks映象的,后面还会提到;
  • pw=vxwroks是用户名对应的口令;
  • tn=target指定目标机的名字,任意指定即可;

您可以参考Tornado自带的手册以获取更多信息;

  • 下面我们要指定使用什么样的网卡驱动程序。首先查找“Network driver options”这段文字,之后您可以看到在该注释后面定义了一系列的有关网卡驱动的宏定义。注意保证INCLUDE_END和INCLUDE_LN_97X_END这两个宏处于定义状态(define),其他的宏都处于未定义状态(undef);
  • 缺省情况下,VxWorks系统是不接受外部输入设备(如键盘)的输入,也不向外部输出设备(如显示器)输出数据。为了便于调试,我们必须改变它的这种缺省状态。我们查找定位宏INCLUDE_PC_CONSOLE,然后保证其处于定义状态(define)即可;
  • 到此为止,对config.h文件的修改就完成了,保存修改,然后再打开同一目录下的sysLn97xEnd.c文件;
  • 这一步修改的目的是要使网卡正常工作。我们先定位到“memory-mapped IO base”这段文字,然后将其前面的参数由pciRsrc[endUnit].bar[1]修改为NONE,这样就可以了。最后别忘了保存。

到此为止,全部的修改工作都完成了,下一步就可以开始编译连接了。

 

编译程序

这一节我们要编译生成bootrom引导程序和VxWorks运行映象。

  • 打开您的Tornado开发工具,在Build菜单下选择Build Boot ROM,弹出如下对话框:

 

在BSP列表中选择pcPentium,而在Image to build列表中分别选择bootrom和gnu。完成选择后,点击OK按钮就开始引导程序的编译了。编译产生的文件bootrom将保存在$(WIND_BASE)/target/config/pcPentium目录下。

  • 编译生成bootrom后,还要创建一个VxWorks映象(image),也就是VxWorks操作系统本身的代码。
    • 创建一个“bootable VxWorks image”的工程;
    • 选择您需要的VxWorks组件。这一步是可选的,如果您只想使用缺省的配置,那根本就不需要这一步;但如果您想使用额外的组件,例如,您可能想通过telnet连接VxWorks系统,这时就需要在Workspace窗口的VxWorks选项卡中选择telnet sever对应的组件,如下图:

在这个例子中我们选择了两个重要的组件:Telnet server 和 Target shell 。前者使我们可以通过Telnet协议登录到VxWorks操作系统中;后者则可以让我们通过命令行控制VxWorks系统。

    • 完成选择后,即可开始编译程序;

 

  • 到此我们已经生成了VxWorks的系统引导程序和运行时的代码映象。这里还要提醒读者,在您每次修改完系统的配置信息(如:config.h)后,都要重新创建一个工程来编译VxWorks映象,以免出现代码不一致的问题。
  • 将生成的名为“vxworks”的文件复制到D盘根目录下。这个路径是由上面我们所设置的DEFAULT_BOOT_LINE宏中的路径参数决定的,必须保持二者一致。

制作引导磁盘

现在开始制作VxWorks系统引导磁盘,用于引导装载VxWorks运行映象。

我们回到“编译网卡驱动程序”一节中所打开的控制台窗口,定位目录到$(WIND_BASE)/target/config/pcPentium,插入您已经格式化好的软盘,然后运行:

mkboot a: bootrom

该命令将在软盘上建立VxWorks系统引导分区,并将引导程序复制到软盘上。

这里再额外向您介绍一个虚拟软盘的工具:RamDiskNT,它可以在内存中建立一个虚拟的软盘,对于提高VxWorks的启动速度有很大帮助。

 

配置FTP服务器

这里的FTP服务器用于在系统成功引导后,下载VxWorks的运行时映象。我们这里使用Tornado开发环境自带的FTP服务器。

  • 打开Tornado FTP Server,选择“Security”菜单下的“Users/Rights”子菜单,弹出如下对话框:

当User Name为“target”时,修改“Home Directory”为D盘根目录(此路径由上面的DEFAULT_BOOT_LINE参数决定),同时修改口令为“vxworks”,最后点击“Done”按钮完成修改;

  • 为了便于调试,我们还要打开FTP Server的日志功能。选择“Logging”菜单下的“Logging Options”子菜单,弹出如下对话框,其中除了“Winsock Calls”外,让其他选项全都处于开启状态。

  • 保持FTP Server窗口处于打开状态(这样FTP服务器就处于运行状态)。

 

创建VxWorks系统

  • 打开您的VMWare Workstation,在File->New菜单下选择创建一个新的虚拟机(Virtual Machine),按照其向导帮助,完成虚拟机的配置。在选择操作系统类型时,选择“Other”,其余选项均使用缺省值就可以了。
  • 完成以上配置后,点击右侧窗口中的“Start this virtual machine”,系统即开始引导运行,如下图所示:

在引导过程中,您会遇到一个7秒钟的等待,以决定是使用缺省的引导参数,还是手动输入引导参数。这里我们选择前者,所以不需要做任何工作。

成功引导后,系统会自动从FTP Server下载映象,并开始运行,得到如下画面:

 

 

到此,我们已经成功的在VMWare上安装了VxWorks操作系统。

需要注意的是,上面的画面会因为选择组件的不同而略微有所不同(例如,如果您没有选择target shell,就不会出现命令行提示符),但一般不会影响后续操作。

配置联机调试环境

装好系统后,您肯定还希望将自己编写的应用程序下载到目标机进行调试,下面我们就完成这一部分的配置工作。

打开您的Tornado开发环境,选择“Tools->Target Server->Configure”菜单,弹出如下对话框:

在“Description”中任意填写一个名字,这里是“net00”;在“Available Back”中选择“wdbrpc”,并在下面的IP地址框中填写目标机的IP地址,这里是“192.168.80.254”(由DEFAULT_BOOT_LINE参数决定);将“Target Server Properties”下拉框更改至“Core File and Symbols”,并在“File Path”一项中选择您的映象的完整路径,这里是“D:/vxWorks”(由DEFAULT_BOOT_LINE参数决定)。

完成以上两项配置,点击“Launch”按钮,就可以启动Target Server了。

再回到Tornado开发环境,在工具条上的Target Server下拉框列表中选择“192.168.80.254@your_host_name”。这时您会发现工具条中一些原先处于“禁用”状态的工具按钮,现在都已经处于“激活”状态了。

现在您就可以开始联机调试您的VxWorks应用程序了。

 

参考

  • VxWorks制造商,风河公司网站:
  • AMD网卡驱动下载地址:

  • 虚拟软盘工具RamDiskNT下载地址:
  • VMWare公司网站:

 

致谢

特别感谢JackieFan网友对笔者的帮助,同时也感谢电子产品世界论坛提供了一个良好的讨论技术问题的环境。电子产品世界论坛的网址是:

 

版权声明

  • 此文中所提及之任何商标或标识,归其所有者所有。
  • 转载此文时请保留此版权声明。
loading...

 

2006-6-9
用VMWare实现在一台PC机上完成内何部分功能调试(X86系统)
    前一段时间学习VXWORKS,但由于手头没有目标机。想起来VMWare这个软件。可以在PC机虚拟出多台PC,并且可共用软驱、硬盘、串口、USB接口等。有许多VXWorks的开发员都尝试过在VMWare调试系统及程序,我也制定了一个X86的VXWorks在VMWare上运行,感觉速度还可以。在网上查了一下,没有发现WCE在VMWare上运行的帖子,于是想尝试一下。可NK.bin太大,无法通过软盘将NK拷到目标机的C盘中(以下所指的的目标机为VMWare虚拟的PC机)。想通过串口连接HOST与TARGET(连接PC机的COM1与COM2,将COM2分配给TARGET),做好启动软盘后启动目标机,HOST运行Download/Init..,通过串口监视发现HOST发送了大量信息,大约10秒后HOST报错。 在更改VMWare的设置时发现光驱可支持映像文件,这样就简单了。把NK.bin经映像编辑软件转换成*.iso文件。用98盘启动目标机(软驱也是虚拟出来的,这样启动、读写速度比较快)加载光驱,把NK拷入目标机。将CE的启动文件同时也拷入目标机(config.sys、Autoexec.bat、LoadCEPC...)重起目标机,显示解压过程、当执行到Jamp...时停顿。数秒钟后WCE成功启动(我想这可能是我机子配置低的原因,哎!该换了)并且运行repllog程序连机。HOST的ActiveSync图标显示为连机状态,但大约4秒左右断线。连续试了几次后,仍然不能正常连机。拔下串口电缆检查,发现有根线从焊接点折断了。问题应该就出在这里。今天白天把电缆修好,晚上继续。
    启动目标机,执行repllog,HOST显示连机成功。运行EVC调试程序也没有任何问题。如果需要调试网络买一块8139装在PC上,VMWare也可以分配物理网卡。(
 
你可能感兴趣的文章
Go语言学习Part3:struct、slice和映射
查看>>
Go语言学习Part4-1:方法和接口
查看>>
Leetcode Go 《精选TOP面试题》20200628 69.x的平方根
查看>>
leetcode 130. Surrounded Regions
查看>>
【Python】详解Python多线程Selenium跨浏览器测试
查看>>
Jmeter之参数化
查看>>
Shell 和Python的区别。
查看>>
【JMeter】1.9上考试jmeter测试调试
查看>>
【虫师】【selenium】参数化
查看>>
【Python练习】文件引用用户名密码登录系统
查看>>
学习网站汇总
查看>>
【Loadrunner】性能测试报告实战
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>
【雅思】雅思写作作业(1)
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>