打开C:\tornado2.2\target\config\pcPentium目录下的sysLn97xEnd.c文件,先定位到“memory-mapped IO base”这段文字,然后将其前面的参数由pciRsrc[endUnit].bar[1]修改为NONE,保存即可,即:
以下是引用片段:
sprintf (paramStr, paramTemplate,
endUnit, /* END unit number */
NONE, /* memory-mapped IO base */
pciRsrc[endUnit].bar[0], /* IO address space base */
PCI2DRAM_BASE_ADRS, /* host PCI mem. base */
pciRsrc[endUnit].irqvec, /* IRQ vector */
pciRsrc[endUnit].irq, /* IRQ number */
LN97X_CSR3_VALUE, /* csr3 register value */
LN97X_OFFS_VALUE, /* offset */
LN97X_RSVD_FLAGS, /* flags (reserved) */
&ln97xStrDesc[typeIdx] /* device description */
);
2.3 编译Bootrom和VxWorks映像
编译Bootrom
打开Tornado开发工具,在Build菜单下选择Build Boot ROM,选择BSP为pcPentium,image类型为bootrom,工具为gnu,如图8。点击OK,Bootrom就会编译。
编译VxWorks映像
编译生成bootrom后,还要创建一个VxWorks映象(image),也就是VxWorks操作系统本身的代码,步骤为:
(1) 创建一个“bootable VxWorks image”的工程,BSP 选择pentium;
(2) 选择需要的VxWorks组件
如图10,在这个例子中我们需要包括两个重要的组件:Telnet server 和 Target shell。前者使我们可以通过Telnet协议登录到VxWorks操作系统中;后者则可以让我们通过命令行控制VxWorks系统。另外,需要把所有C++相关的选项都包含进去。
完成选择后,即可开始编译程序。到此我们已经生成了VxWorks的系统引导程序和运行时的代码映象。在每次修改完系统的配置信息(如:config.h)后,都要重新创建一个工程来编译VxWorks映象。将生成的名为“VxWorks”的文件复制到D:\下。这个路径是由上面我们所设置的DEFAULT_BOOT_LINE宏中的路径参数决定的,必须保持二者一致。
2.4 创建引导软盘
由于目标机从软盘启动,我们需要制作VxWorks引导磁盘,用于引导VxWorks操作系统映象。定位到C:\tornado2.2\target\config\pcPentium目录,插入已经格式化好的软盘,运行:
mkboot a: bootrom
该命令将在软盘上建立VxWorks系统引导分区,并将引导程序复制到软盘上。
3. 建立调试环境
3.1配置FTP服务器
宿主机上的FTP服务器用于在系统成功引导后,下载VxWorks的运行时映象,最好使用Tornado开发环境自带的FTP服务软件。
如图11,打开Tornado FTP Server,选择“Security”菜单下的“Users/Rights”子菜单,创建User Name为“target”,修改“Home Directory”为“D:\”(即DEFAULT_BOOT_LINE参数中所指定VxWorks映像目录),修改用户名为“target”,对应密码为“VxWorks”,点击“Done”按钮完成修改,FTP服务就启动了。
为了便于观察引导程序是否从FTP上下载了VxWorks映像,最好打开FTP Server的日志功能。选择“Logging”菜单下的“Logging Options”子菜单,其中除了“Winsock Calls”外,让其他选项全都处于开启状态。保持FTP Server窗口处于打开状态,即保证FTP服务器处于运行状态。
虚拟机从软盘启动,接下来会下载服务器上的D:\VxWorks映像,服务器的FTP会有相关的log,如图12:
图12 FTP服务器
3.2 配置target server
如图13,打开您的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参数决定)。
图13 配置Target Server
完成以上两项配置,如果目标机已经启动,点击“Launch”按钮,就可以启动Target Server了。
再回到Tornado开发环境,在工具条上的Target Server下拉框列表中选择“192.168.80.169@host”。这时您会发现工具条中一些原先处于“禁用”状态的工具按钮,现在都已经处于“激活”状态了。
试一试,我们打开TShell,并运行“i”命令察看目标机上当前运行的任务,效果如图14:
图14 在TShell中运行命令
4. 编写和调试应用程序
现在,编写应用程序的所有条件已经完全具备了。我们来编写一个简单的应用。
如图15,建立一个名为“test”的可下载的应用程序模块:
图15建立可下载的应用程序模块
如图16,注意工具链的选择,应该为PENTIUMgnu:
图16 选择PENTIUMgnu工具链
这个时候工程中还一个文件都没有,我们编写一个简单的程序:
以下是引用片段:
#include
void test(void)
{
int i = 0;
while(1)
{
printf ("%d\t",i);
i++;
if(i==10000)
{
break;
}
}
}
编译生成了test.out,下载到目标板,在TShell中运行test函数。
下面我们以Run Task模式运行上述的test()函数,并设置在入口点即断点,如图18:
图18 运行test任务
此后,我们可以像使用任何其它的基层开发环境一样在我们编写的应用程序中进行所有如下的调试行为:
(1) 设置断点
(2) 单步运行
(3) 察看变量
(4) 察看内存
(5) 察看寄存器
接下来,enjoy yourself in VxWorks!
附录:软件及驱动下载地址
VMware:
http://www.vmware.com/download/ws/
RamDiskNT 1.5:
http://soft.netnest.com.cn/downinfo/netnest1823.html |