打通VxWorks调试环境 Step by Step(X86)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
打通VxWorks调试环境Step by Step
1 引言
1.1 编写目的
概要说明如何建立使用Tornado开发、调试VxWorks的环境(X86版本)。
1.2 背景
1.3 定义
HOST:主机,运行Tornado集成环境,FTP Server,Target Server,以及编辑、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 参考资料
Tornado User’s G uide (Windows Version), 2.0, Edition 1
VxWorks Programmer’s Guide, 5.4, Edition 1
2 总体描述
2.1 硬件环境
HOST与TARGET通过以太网互连,并且位于同一网段;同时,串口通过直连电缆(NULL Modem Cable)连接。
目标机配置有软盘驱动器,网卡为3com 3c905B.
2.2 软件环境
主机操作系统为Windows 2000简体中文专业版(SP3);安装Tornado Version 2.0和Win 2k 补丁。
(CD No. TDK-12835-ZC-01 & TDK-13127-ZC-00, T2 LM for x86)
2.3 预览
在VxWorks调试环境中,HOST与TARGET之间连接的方式有多种,比如串口和网络;引导TARGET的方式也有多种,当然对X86平台来说最简单的是软盘引导了。
在本文档中我们以网络连接、软盘引导为例,建立起调试环境。
主要步骤包括:
HOST上启动FTP Server,
配置BSP
创建可以引导TARGET的Boot ROM,
制作引导盘(软盘),
用软盘引导TARGET,
TARGET通过网络连接从HOST下载vxWorks映像文件,
TARGET运行vxWorks,
HOST上启动Target Server连接Target Agent,成功建立调试环境之后,就可以在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中有如下定义:
#undef INCLUDE_ULTRA /* include SMC Elite16 Ultra inte**ce */
#undef INCLUDE_ENE /* include Eagle/Novell NE2000 inte**ce */
#undef INCLUDE_ELT /* include 3COM EtherLink III inte**ce */
#undef INCLUDE_ESMC /* include SMC 91c9x Ethernet inte**ce */
#define INCLUDE_FEI /* include Intel Ether Express PRO100B PCI */
#define INCLUDE_SLIP /* include serial line inte**ce */
#define SLIP_TTY 1 /* serial line IP channel COM2 */
#undef INCLUDE_ELC /* include SMC Elite16 inte**ce */
#undef INCLUDE_EEX /* include INTEL EtherExpress inte**ce */
#undef INCLUDE_EEX32 /* include INTEL EtherExpress flash 32 */
#undef INCLUDE_EX /* include Excelan Ethernet inte**ce */
#undef INCLUDE_ENP /* include CMC Ethernet inte**ce*/
#undef INCLUDE_SM_NET /* include backplane net inte**ce */
#undef INCLUDE_SM_SEQ_ADDR /* shared memory network auto address setup */
#undef INCLUDE_EL_3C90X_END /* 3com fast etherLink XL PCI */
#undef INCLUDE_LN_97X_END /* AMD 79C972 END DRIVER */
从注释中可以看出,NE2000、3COM 3C509、3COM 3C90X、Intel EtherExpress PRO100B 等网卡是VxWorks所支持的,同时也是比较常见的,可以说是初次配置VxWorks的比较好的选择。
本例中我们使用了一块3COM 3C905B网卡(3com Fast EtherLink XL PCI)。
事实证明能够很好地支持。
其实也不是所有的3COM网卡都支持,有一篇网友的帖子显示,3C905-TX的网卡就给他带来了很大的麻烦,换了3C905-BT才好,好像3C905-FX也是可以的。
3.2 修改hosts文件
在文件c:\winnt\system32\drivers\etc\hosts 中添加如下行:
10.10.0.150 xmdong
10.10.0.151 target
3.3 FTP服务器
Tornado自带了一个FTP服务器软件WFTPD。
当HOST是WIN32平台时,TARGET通过网络连接,只能用FTP协议从HOST下载vxWorks映像文件。
打开FTP Server,选中Security > Users/Rights…菜单,在添加新用户对话框中:
User Name: target,
Password: target,
Home Directory: 这里我设置为BIN,你也可以设置为其他路径,记住你的设置。
后面DEFAULT_BOOT_LINE中定义的vxWorks文件路径,就是以HOME为根目录的相对路径。
建议将vxWorks文件复制到HOME目录下面,这样vxWorks文件的路径最短。
另外,你可以通过Logging > Log Options…菜单,选中那些可选项目,来观察FTP过程中的问题。
配置好之后,启动FTP Server。
3.4 配置BSP
配置BSP的工作是通过修改config.h文件完成的。
这一步比较关键。
打开BSPNAME/config.h文件。
在文件的108行左右,会有对不同CPU的DEFAULT_BOOT_LINE定义语句,它描述了引导参数,定义正确之后所制作的Boot ROM软盘才能正常引导TARGET机子。
根据我们的配置,这里应该修改为:
#elif (CPU == I80486)
#define DEFAULT_BOOT_LINE \ "elPci(0,0)xmdong:vxWorks \ h=10.10.0.150 e=10.10.0.151 u=target pw=target tn=target"
参数参数值描述
Boot device elPci 3COM 3C905B网卡
Processor number (0,0)
Host name xmdong 主机名
File name vxWorks VxWorks Image 文件路径名
Host inet (h) 10.10.0.150 主机网络接口地址
Inet on Ethernet (e) 10.10.0.151 目标机网络接口地址
User (u) target FTP用户名
Password (pw) target FTP密码
Target name (tn) target 目标机名称
有关引导参数的详细描述,请参考Tornado User’s Guide之2.5.4 Description of
Boot Parameters。
BSP中缺省包含了对Intel Ether Express PRO100 网卡的支持,而我们用的是3C905B网卡,因此要去掉原来的定义,添加对我们的网卡的支持:
#undef INCLUDE_FEI
#define INCLUDE_EL_3C90X_END /* for our 3COM 3C905B NIC */
3.5 新工程
然后在Tornado中新建一个工程。
选择“Create a bootable VxWorks image”,OK。
Step 1
Name: Project2
Location: C:\Tornado\proj\Project2 (以后我们提到PROJECT就是指这个路径)
Workspace: Add to current Workspace
Step 2
Would you like to base your project on: A BSP, pc486 (也就是我们说的BSPNAME
)
Step 3
Finish
3.6 Build工程
在Tornado环境的Workspace窗口中,选中前面新建的工程PROJECT,从鼠标右键弹出菜单中执行ReBuild All (VxWorks)。
Build Output窗口显示了build的过程。
成功之后,生成PROJECT/default/vxWorks映像文件。
将文件PROJECT/default/vxWorks复制到BIN目录。
因为在前面配置FTP服务器的过程中,我们将BIN目录配置为FTP用户target 的HOME目录。
如果你将PROJECT/default 目录配置为HOME目录,就可以省去这个复制操作。
3.7 Boot ROM
在Tornado菜单中选择Build > Build Boot ROM…
在弹出对话框中:
Select a BSP: pc486
Select an Image to Build: bootrom_uncmp
OK.
Build Output窗口显示了build的过程。
不出意外的话,BSPNAME目录下面会生成bootrom _uncmp文件。
这里选择bootrom也是可以的,其他的没有试过。
3.8 制作引导盘
将上一步生成的文件BSPNAME/bootrom_uncmp复制到BIN目录。
开始> 运行> cmd,打开一个命令窗口。
进入BIN目录:
C:\>cd tornado\host\x86-win32\bin
执行mkboot程序:
C:\…>mkboot A: bootrom_uncmp
当然别忘了插入一张软盘到HOST的软驱中。
你应该看到
VxSys (c) Wind River Systems 1993, Version 1.2
Boot sector installed OK.
Copying bootrom_uncmp to a:bootrom.sys...
3.9 引导TARGET
将我们刚才制作的Boot ROM引导软盘插入TARGET的软驱,启动TARGET,开始引导过程。
如果目标机有显示器,应该看到
VxLd1.2 ………………
同时,TARGET在读取软盘内容,然后兰屏,出现
VxWorks System Boot
Copyright 1984-1998 Wind River Systems, Inc.
CPU: PC 486
Version: 5.4
BSP version: 1.2/0
Creation date: Dec 30 2002, 16:38:32
Press any key to stop auto-boot...
7
6
5
[VxWorks Boot]:
在[VxWorks Boot]: 提示符下,有几个常用的命令:
命令描述
h或者? 帮助,显示可用命令列表
@ 加载并执行文件,相当于L和G 0x108000 (config.h中配置的开始执行的缺省值)
P 显示当前引导参数值
C 修改引导参数
L 根据当前引导参数加载文件,但是不执行
G addr 从十六进制地址addr开始执行
如果配置了串口控制台,VxLd 1.2 …… 之后的内容都会在超级终端而不是显示器上面显示。
超级终端观察引导过程:
敲入”@”命令下载并运行映像,结果为:
[VxWorks Boot]: @
boot device : elPci
unit number : 0
processor number : 0
host name : xmdong
file name : vxWorks
inet on ethernet (e) : 10.10.0.151
host inet (h) : 10.10.0.150
user (u) : target
ftp password (pw) : target
flags (f) : 0x0
target name (tn) : target
Attached TCP/IP inte**ce to elPci0.
Attaching network inte**ce lo0... done.
Loading... 511328 + 9984 + 32480
Starting at 0x108000...
Attached TCP/IP inte**ce to elPci unit 0
Attaching inte**ce lo0...done
VxWorks
Copyright 1984-1998 Wind River Systems, Inc.
CPU: PC 486
VxWorks: 5.4
BSP version: 1.2/0
Creation date: Dec 31 2002
WDB: Ready.
在HOST FTP Server中可以看到通过网络连接下载映像文件的过程(根据Log Options的不同,窗口中显示的信息可能有些不同)。
3.10 Target Sever
选中Tornado菜单Tools > Target Server > Configure…,出现Configure Target
Servers对话框:
Target Server: Configuration 1
Target Server Properties:
Back End: wdbrpc
Core File and Symbols: File “C:\Tornado\host\x86-win32\bin\vxWorks”
其他属性应该不需要改动。
Target Name/Target Address: target
Command Line: tgtsvr.exe target -V -B wdbrpc -c
C:\Tornado\host\x86-win32\bin\vxWorks
OK.
然后再打开Configure Target Severs对话框,
在Target Sever下选中Configuration 1,
Launch.
出现target@xmdong Log Console窗口:
3.11 Shell
在Tornado工具条的下拉列表框中选中target@xmdong,然后用”->i”形状的按钮启动一个shell。
4 串口控制台
4.1 什么是串口控制台
串口控制台(Serial Console)是指在Host/Target环境中,通过串口终(Terminal)来做TARGET 的标准输入/输出控制台。
这样,我们可以完全通过运行于HOST的终端软件来操作TARGET。
串口控制台的好处是显而易见的:它可以精简TARGET的硬件,不再需要PC的显示卡、显示器、键盘等设备(本地控制台)。
另外,通过终端软件,我们可以更容易地回滚(roll back)查看“滚上去”了的输出信息。
4.2 配置方法
在BSPNAME/config.h 中有这样几句(470行附近):
#if TRUE
#define INCLUDE_PC_CONSOLE /* KBD and VGA are included */
#endif /* TRUE/FALSE */
只需要将TRUE改为FALSE即可,也就是说,去掉INCLUDE_PC_CONSOLE的定义。
因此,不改动上面3句,而是在后面加上这么一句也是同样的效果:
#undef INCLUDE_PC_CONSOLE
除此之外不需要改动什么,但是要注意确认一下BSP中有关串口的设置。
下面列出的是config.h和configAll.h中定义的缺省值,如果你使用不同的串口设置,则要做相应的修改。
#define NUM_TTY 2 /* number of tty channels */
#define CONSOLE_TTY 0 /* console channel */
#define CONSOLE_BAUD_RA TE 9600 /* console baud rate */
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 几点说明
我们这里配置的串口是为了使用serial console,请不要与串口连接的调试弄混。
本
文档中这样配置的环境为,软盘引导目标机,网络连接下载映像,网络连接下载模块,网络连接调试,串口控制台。
如果使用串口进行下载、调试,那么前面讲的很多设置都要更改(很多与WDB_???有关),此处不再赘述。
据说(未证实),使用串口控制台应该不需要对缺省的BSP做任何改动,BOOT ROM引导时,输出信息会首先送到目标机的本地控制台(显示器),串口配置生效之后,如果串口上面有输入(比如在终端软件中敲几个回车――当然,这里的前提是串口本身配置正确,是可以通的),则目标机的输出会重定向给串口,这时就会在串口终端看到引导信息,同时目标机本地控制台失效。
听起来这是比较合理的实现方法,不幸的是我们遇到的情况并非如此。
在去掉INCLUDE_PC_CONSOLE的定义之前,我们不能在串口上得到任何输出。
之前曾使用各种方法测试了串口,花费了不少时间,最终得到这个结果,因此我们专门用一章来描述串口控制台的配置。
产生这种情况有可能是我们的配置仍然不对造成的,也有可能是我们的软件有问题。
(END)
补充:
1、
发信人: hustlh (两只流着泪的爱情鱼), 信区: Embedded
标题: Re: 打通VxWorks调试环境Step by Step
发信站: 武汉白云黄鹤站(2002年12月31日20:54:59 星期二), 站内信件
…………
根据自己的经验做点补充点,希望对大家有点帮助:
1.做target启动盘的时候,
(1). 对于vxworks默认不支持的网卡类型,比如realtech 8139.一般可以到网上下载其vxworks下驱动源程序,copy到Tornado\target\h\drv(H文件)和D:\Tornado\ target\src\drv(C文件)的相应目录
下。
SET相应CPU类型后,用目录下makefile编译。
然后在相应类型BSP的config.h中增加网卡类型宏定义(define的宏可以从下载的驱动H文件中获得),就可以做出启动盘了。
(2).对于vxworks默认支持的网卡类型,在修改config.h的时候除了define相应类型宏以
外,还要注意网卡的I/O 地址和中断号,一般网卡驱动光盘中都有一个DOS下的setup程序可以检测得到这两个值。
比如我曾经做过两种不同的ENE网卡,有如下两中配置
#define IO_ADRS_ENE 0xC000(0xE000)
#define INT_LVL_ENE 0x0b
(3) 对于不同类型的网卡,可能其kernel文件(即名字为vxworks的文件)也要重新做。
比如ENE网卡一般在做kernel的时候,在network devices中include "BSD attach "和"BSD inte**ce support",同时在BSD Ethernet drivers中include "ENE nettif driver"(可以在此填上对应的I/O 地址和中断).而对于realtech 8139,做kernel就要include "END attach inte**ce"和"END inte**ce support".
btw:target启动盘的flags (f)参数可以设置为0x08,启动将不用等那讨厌的8秒钟,呵呵
2、关于RTL8139
发信人: autleaf (羽翼飞扬), 信区: Embedded
标题: Vxworks下8139驱动加载step by step
发信站: 武汉白云黄鹤站(2003年01月02日14:43:44 星期四), 站内信件
…………
下面是Vxworks下8139网卡驱动的加载过程(以pcPentium BSP为例)
1.找到Vxworks下8139网卡驱动,驱动可以从
上得到,国内的下载地址是://152.104.225.43/cn/nic/rtl8139abcd8130810xseries/vxworks-8139(120).zip。
2.将下载的vxworks-8139(120).zip解开。
rtl81x9.h解压到C:\Tornado\target\h\drv\end\unsupported
rtl81x9.c和makefile解压到C:\Tornado\target\src\drv\end\unsupported
sysRtl81x9End.c、sysLib.c、config.h、configNet.h解压到
C:\Tornado\target\config\pcPentium
3.将rtl81x9.c也拷贝一份到C:\Tornado\target\config\pcPentium
4.修改C:\Tornado\target\config\pcPentium\Makefile,增加一行如下:
CPU = PENTIUM
TOOL = gnu
TGT_DIR = $(WIND_BASE)/target
/*Added line*/
ADDED_MODULES += rtl81x9.o
include $(TGT_DIR)/h/make/defs.bsp
include $(TGT_DIR)/h/make/make.$(CPU)$(TOOL)
include $(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE)
5.修改config.h文件中的BOOT_LINE
#define DEFAULT_BOOT_LINE \
"rtl(0,0) peter:vxWorks h=192.168.0.74 e=192.168.0.58 \
u=target pw=target tn=VxTarget"
6.编译pcPentium的BSP,如果需要其他BSP,还要做相应的修改。