打通VxWorks调试环境 Step by Step.docx
《打通VxWorks调试环境 Step by Step.docx》由会员分享,可在线阅读,更多相关《打通VxWorks调试环境 Step by Step.docx(12页珍藏版)》请在冰豆网上搜索。
打通VxWorks调试环境StepbyStep
打通VxWorks调试环境StepbyStep
字体:
小中大|打印发表于:
2007-7-1810:
58 作者:
苦丁茶 来源:
中国电子开发网
1引言
1.1编写目的
概要说明如何建立使用Tornado开发、调试VxWorks的环境(X86版本)。
1.2背景
1.3定义
HOST:
主机,运行Tornado集成环境,FTPServer,TargetServer,以及编辑、build
工程、下载目标文件的各种软件工具;
TARGET:
目标机,HOST产生的vxWorks映像运行的位置,对于X86版本来说也是一台PC
;
TORNADO:
C:
\Tornado,安装Tornado的路径;
BSPNAME:
C:
\Tornado\target\config\pc486,BSP的路径,本例中我们选择pc486;
PROJECT:
C:
\Tornado\proj\Project2,我们自己创建的工程的路径;
BIN:
C:
\Tornado\host\x86-win32\bin,Tornado的可执行程序的路径;
HOME:
C:
\Tornado\host\x86-win32\bin,FTP用户的根目录。
1.4参考资料
TornadoUser’sGuide(WindowsVersion),2.0,Edition1
VxWorksProgrammer’sGuide,5.4,Edition1
2总体描述
2.1硬件环境
HOST与TARGET通过以太网互连,并且位于同一网段;同时,串口通过直连电缆(NULLModemCable)连接。
目标机配置有软盘驱动器,网卡为3com3c905B.
2.2软件环境
主机操作系统为Windows2000简体中文专业版(SP3);安装TornadoVersion2.0和Win2k补丁。
(CDNo.TDK-12835-ZC-01&TDK-13127-ZC-00,T2LMforx86)
2.3预览
在VxWorks调试环境中,HOST与TARGET之间连接的方式有多种,比如串口和网络;引导TARGET的方式也有多种,当然对X86平台来说最简单的是软盘引导了。
在本文档中我们以网络连接、软盘引导为例,建立起调试环境。
主要步骤包括:
HOST上启动FTPServer,
配置BSP
创建可以引导TARGET的BootROM,
制作引导盘(软盘),
用软盘引导TARGET,
TARGET通过网络连接从HOST下载vxWorks映像文件,
TARGET运行vxWorks,
HOST上启动TargetServer连接TargetAgent,成功建立调试环境之后,就可以在HOST生成目标模块,下载到TARGET运行,并通过Tornado集成环境进行调试。
注意:
本文档中所描述的对于某些选项的选择并不一定是绝对的,只是一个行之有效的实例,仅供参考。
3详细步骤
3.1获得IP地址和网卡类型
首先要知道HOST和TARGET的IP地址以及TARGET安装的网卡类型。
在本例中,HOST的IP是10.10.0.150,TARGET的IP是10.10.0.151。
TARGET的IP地址只要不跟其他机子冲突即可(正常情况下可以通过你们的网管得到),因为目前TARGET并没有安装任何操作系统,所以这个IP地址无从配置,只是在后面的配置文件中会用到。
网卡类型是一个十分重要的问题。
为了减少麻烦,最好选择VxWorks缺省支持的网卡类型,否则可能还要添加网卡驱动程序。
不知道哪里有这样一个所支持的网卡列表,但是在不同BSP的BSPNAME/config.h文件中可以看出一些眉目。
比如pc486/config.h中有如下定义:
#undefINCLUDE_ULTRA /*includeSMCElite16Ultrainterface*/
#undefINCLUDE_ENE /*includeEagle/NovellNE2000interface*/
#undefINCLUDE_ELT /*include3COMEtherLinkIIIinterface*/
#undefINCLUDE_ESMC /*includeSMC91c9xEthernetinterface*/
#defineINCLUDE_FEI /*includeIntelEtherExpressPRO100BPCI*/
#defineINCLUDE_SLIP /*includeseriallineinterface*/
#defineSLIP_TTY1/*seriallineIPchannelCOM2*/
#undefINCLUDE_ELC /*includeSMCElite16interface*/
#undefINCLUDE_EEX /*includeINTELEtherExpressinterface*/
#undefINCLUDE_EEX32 /*includeINTELEtherExpressflash32*/
#undefINCLUDE_EX /*includeExcelanEthernetinterface*/
#undefINCLUDE_ENP /*includeCMCEthernetinterface*/
#undefINCLUDE_SM_NET /*includebackplanenetinterface*/
#undefINCLUDE_SM_SEQ_ADDR/*sharedmemorynetworkautoaddresssetup*/
#undef INCLUDE_EL_3C90X_END /*3comfastetherLinkXLPCI*/
#undef INCLUDE_LN_97X_END /*AMD79C972ENDDRIVER*/
从注释中可以看出,NE2000、3COM3C509、3COM3C90X、IntelEtherExpressPRO100B等网卡是VxWorks所支持的,同时也是比较常见的,可以说是初次配置VxWorks的比较好的选择。
本例中我们使用了一块3COM3C905B网卡(3comFastEtherLinkXLPCI)。
事实证明能够很好地支持。
其实也不是所有的3COM网卡都支持,有一篇网友的帖子显示,3C905-TX的网卡就给他带来了很大的麻烦,换了3C905-BT才好,好像3C905-FX也是可以的。
3.2修改hosts文件
在文件c:
\winnt\system32\drivers\etc\hosts中添加如下行:
10.10.0.150xmdong
10.10.0.151target
3.3FTP服务器
Tornado自带了一个FTP服务器软件WFTPD。
当HOST是WIN32平台时,TARGET通过网络连接,只能用FTP协议从HOST下载vxWorks映像文件。
打开FTPServer,选中Security>Users/Rights…菜单,在添加新用户对话框中:
UserName:
target,
Password:
target,
HomeDirectory:
这里我设置为BIN,你也可以设置为其他路径,记住你的设置。
后面DEFAULT_BOOT_LINE中定义的vxWorks文件路径,就是以HOME为根目录的相对路径。
建议将vxWorks文件复制到HOME目录下面,这样vxWorks文件的路径最短。
另外,你可以通过Logging>LogOptions…菜单,选中那些可选项目,来观察FTP过程中的问题。
配置好之后,启动FTPServer。
3.4配置BSP
配置BSP的工作是通过修改config.h文件完成的。
这一步比较关键。
打开BSPNAME/config.h文件。
在文件的108行左右,会有对不同CPU的DEFAULT_BOOT_LINE定义语句,它描述了引导参数,定义正确之后所制作的BootROM软盘才能正常引导TARGET机子。
根据我们的配置,这里应该修改为:
#elif(CPU==I80486)
#defineDEFAULT_BOOT_LINE\ "elPci(0,0)xmdong:
vxWorks\ h=10.10.0.150e=10.10.0.151u=targetpw=targettn=target"
参数 参数值 描述
Bootdevice elPci 3COM3C905B网卡
Processornumber (0,0)
Hostname xmdong 主机名
Filename vxWorks VxWorksImage文件路径名
Hostinet(h) 10.10.0.150 主机网络接口地址
InetonEthernet(e) 10.10.0.151 目标机网络接口地址
User(u) target FTP用户名
Password(pw) target FTP密码
Targetname(tn) target 目标机名称
有关引导参数的详细描述,请参考TornadoUser’sGuide之2.5.4Descriptionof
BootParameters。
BSP中缺省包含了对IntelEtherExpressPRO100网卡的支持,而我们用的是3C905B网卡,因此要去掉原来的定义,添加对我们的网卡的支持:
#undefINCLUDE_FEI
#defineINCLUDE_EL_3C90X_END/*forour3COM3C905BNIC*/
3.5新工程
然后在Tornado中新建一个工程。
选择“CreateabootableVxWorksimage”,OK。
Step1
Name:
Project2
Location:
C:
\Tornado\proj\Project2(以后我们提到PROJECT就是指这个路径)
Workspace:
AddtocurrentWorkspace
Step2
Wouldyouliketobaseyourprojecton:
ABSP,pc486(也就是我们说的BSPNAME
)
Step3
Finish
3.6Build工程
在Tornado环境的Workspace窗口中,选中前面新建的工程PROJECT,从鼠标右键弹出菜单中执行ReBuildAll(VxWorks)。
BuildOutput窗口显示了build的过程。
成功之后,生成PROJECT/default/vxWorks映像文件。
将文件PROJECT/default/vxWorks复制到BIN目录。
因为在前面配置FTP服务器的过程中,我们将BIN目录配置为FTP用户target的HOME目录。
如果你将PROJECT/default目录配置为HOME目录,就可以省去这个复制操作。
3.7BootROM
在Tornado菜单中选择Build>BuildBootROM…
在弹出对话框中:
SelectaBSP:
pc486
SelectanImagetoBuild:
bootrom_uncmp
OK.
BuildOutput窗口显示了build的过程。
不出意外的话,BSPNAME目录下面会生成bootrom
_uncmp文件。
这里选择bootrom也是可以的,其他的没有试过。
3.8制作引导盘
将上一步生成的文件BSPNAME/bootrom_uncmp复制到BIN目录。
开始>运行>cmd,打开一个命令窗口。
进入BIN目录:
C:
\>cdtornado\host\x86-win32\bin
执行mkboot程序:
C:
\…>mkbootA:
bootrom_uncmp
当然别忘了插入一张软盘到HOST的软驱中。
你应该看到
VxSys(c)WindRiverSystems1993,Version1.2
BootsectorinstalledOK.
Copyingbootrom_uncmptoa:
bootrom.sys...
3.9引导TARGET
将我们刚才制作的BootROM引导软盘插入TARGET的软驱,启动TARGET,开始引导过程。
如果目标机有显示器,应该看到
VxLd1.2………………
同时,TARGET在读取软盘内容,然后兰屏,出现
VxWorksSystemBoot
Copyright1984-1998 WindRiverSystems,Inc.
CPU:
PC486
Version:
5.4
BSPversion:
1.2/0
Creationdate:
Dec302002,16:
38:
32
Pressanykeytostopauto-boot...
7
6
5
[VxWorksBoot]:
在[VxWorksBoot]:
提示符下,有几个常用的命令:
命令 描述
h或者?
帮助,显示可用命令列表
@ 加载并执行文件,相当于L和G0x108000(config.h中配置的开始执行的缺省值)
P 显示当前引导参数值
C 修改引导参数
L 根据当前引导参数加载文件,但是不执行
Gaddr 从十六进制地址addr开始执行
如果配置了串口控制台,VxLd1.2……之后的内容都会在超级终端而不是显示器上面显示。
超级终端观察引导过程:
敲入”@”命令下载并运行映像,结果为:
[VxWorksBoot]:
@
bootdevice :
elPci
unitnumber :
0
processornumber :
0
hostname :
xmdong
filename :
vxWorks
inetonethernet(e):
10.10.0.151
hostinet(h) :
10.10.0.150
user(u) :
target
ftppassword(pw) :
target
flags(f) :
0x0
targetname(tn) :
target
AttachedTCP/IPinterfacetoelPci0.
Attachingnetworkinterfacelo0...done.
Loading...511328+9984+32480
Startingat0x108000...
AttachedTCP/IPinterfacetoelPciunit0
Attachinginterfacelo0...done
VxWorks
Copyright1984-1998 WindRiverSystems,Inc.
CPU:
PC486
VxWorks:
5.4
BSPversion:
1.2/0
Creationdate:
Dec312002
WDB:
Ready.
在HOSTFTPServer中可以看到通过网络连接下载映像文件的过程(根据LogOptions的不同,窗口中显示的信息可能有些不同)。
3.10TargetSever
选中Tornado菜单Tools>TargetServer>Configure…,出现ConfigureTarget
Servers对话框:
TargetServer:
Configuration1
TargetServerProperties:
BackEnd:
wdbrpc
CoreFileandSymbols:
File“C:
\Tornado\host\x86-win32\bin\vxWorks”
其他属性应该不需要改动。
TargetName/TargetAddress:
target
CommandLine:
tgtsvr.exetarget-V-Bwdbrpc-c
C:
\Tornado\host\x86-win32\bin\vxWorks
OK.
然后再打开ConfigureTargetSevers对话框,
在TargetSever下选中Configuration1,
Launch.
出现target@xmdongLogConsole窗口:
3.11Shell
在Tornado工具条的下拉列表框中选中target@xmdong,然后用”->i”形状的按钮启动一个shell。
4串口控制台
4.1什么是串口控制台
串口控制台(SerialConsole)是指在Host/Target环境中,通过串口终(Terminal)来做TARGET的标准输入/输出控制台。
这样,我们可以完全通过运行于HOST的终端软件来操作TARGET。
串口控制台的好处是显而易见的:
它可以精简TARGET的硬件,不再需要PC的显示卡、显示器、键盘等设备(本地控制台)。
另外,通过终端软件,我们可以更容易地回滚(rollback)查看“滚上去”了的输出信息。
4.2配置方法
在BSPNAME/config.h中有这样几句(470行附近):
#ifTRUE
#defineINCLUDE_PC_CONSOLE /* KBDandVGAareincluded*/
#endif /*TRUE/FALSE*/
只需要将TRUE改为FALSE即可,也就是说,去掉INCLUDE_PC_CONSOLE的定义。
因此,不改动上面3句,而是在后面加上这么一句也是同样的效果:
#undefINCLUDE_PC_CONSOLE
除此之外不需要改动什么,但是要注意确认一下BSP中有关串口的设置。
下面列出的是config.h和configAll.h中定义的缺省值,如果你使用不同的串口设置,则要做相应的修改。
#defineNUM_TTY 2/*numberofttychannels*/
#defineCONSOLE_TTY 0/*consolechannel*/
#define CONSOLE_BAUD_RATE9600/*consolebaudrate*/
CONSOLE_TTY的值为0或者1分别表示TARGET使用COM1或COM2与HOST连接;CONSOLE_BAUD_R
ATE设定了串口的波特率,常用9600bps.
4.3终端软件
Windows主机常用的终端软件是“超级终端”,注意配置与目标机串口配置相符,也就是说,波特率应该是9600bps,其他配置一般为8位数据位,1位停止位,无校验位(通常表示为8-N-1)。
另外,“ASCII码设置”对话框一般采用如下设置。
在这种配置下,目标机引导过程中我们可以判断串口是否已经连通:
在超级终端串口中敲入一串回车,如果光标有换行,说明串口已经通了;如果光标纹丝不动,则串口还没有通,检查一下串口设置、串口直连电缆(2、3引脚交叉,5对接即可)。
4.4几点说明
我们这里配置的串口是为了使用serialconsole,请不要与串口连接的调试弄混。
本
文档中这样配置的环境为,软盘引导目标机,网络连接下载映像,网络连接下载模块,网络连接调试,串口控制台。
如果使用串口进行下载、调试,那么前面讲的很多设置都要更改(很多与WDB_?
?
?
有关),此处不再赘述。
据说(未证实),使用串口控制台应该不需要对缺省的BSP做任何改动,BOOTROM引导时,输出信息会首先送到目标机的本地控制台(显示器),串口配置生效之后,如果串口上面有输入(比如在终端软件中敲几个回车——当然,这里的前提是串口本身配置正确,是可以通的),则目标机的输出会重定向给串口,这时就会在串口终端看到引导信息,同时目标机本地控制台失效。
听起来这是比较合理的实现方法,不幸的是我们遇到的情况并非如此。
在去掉INCLUDE_PC_CONSOLE的定义之前,我们不能在串口上得到任何输出。
之前曾使用各种方法测试了串口,花费了不少时间,最终得到这个结果,因此我们专门用一章来描述串口控制台的配置。
产生这种情况有可能是我们的配置仍然不对造成的,也有可能是我们的软件有问题。
(END)
补充:
1、
发信人:
hustlh(两只流着泪的爱情鱼),信区:
Embedded
标 题:
Re:
打通VxWorks调试环境StepbyStep
发信站:
武汉白云黄鹤站(2002年12月31日20:
54:
59星期二),站内信件
…………
根据自己的经验做点补充点,希望对大家有点帮助:
1.做target启动盘的时候,
(1).对于vxworks默认不支持的网卡类型