网络加载
一.修改和配置BSP
1. 把以下文件拷贝到 target/config/pcPentium文件夹里(该文件夹里存放的是目标板的BSP文件,注意备份原来的sysLib.c, config.h 和configNet.h):
config.h ;configNet.h;sysRtl81x9.c;sysLib.c.
2. 把rtl81x9.h 拷贝到target\h\drv\end\unsupported下。
3. 把rtl81x9.c 和Makefile拷贝到target\src\drv\end\unsupported下。
4. 修改config.h中的启动行(覆盖相应的原程序即可)。
#elif (CPU_VARIANT == PENTIUM)
#define DEFAULT_BOOT_LINE \
"rtl(0,0)host:vxWorks h=192.168.0.24 e=192.168.0.55 u=target pw=target tn=target"
5. 完成上述工作后就可创建编译器(GNU)了:
->cd D:\tornado2.0\host\x86-win32\bin 回车
->torvars 回车
->cd D:\tornado2.0\target\src\drv\end\unsupported 回车
->make CPU=PENTIUM 回车
成功后在目录D:\tornado2.0\target\src\drv\end\unsupported下会出现
depend.PENTIUMgnu文件。
二.编译和固化BootRom(即:引导映像)
6. 在tornado>build中选择Build Boot Rom,然后选择pentium和bootrom_uncmp。则会在D:\tornado2.0\target\config\pcPentium目录下自动编译生成bootrom_uncmp文件(这就是我们所要的引导映像)。把bootrom_uncmp拷到D:\tornado2.0\host\x86-win32\bin。
7. 然后进入cmd ,进入D:\tornado2.0\host\x86-win32\bin目录,输入命令mkboot(空格)H:(空格)bootrom_uncmp ,选择yes,再选择关闭。这样,引导映像就被固化到CF卡中,CF卡中会出现bootrom.sys文件。此时,可以将CF卡取出,并插入至目标机。
注意:当需要重新做启动盘时,进入D:\tornado2.0\host\x86-win32\bin目录,
输入命令del H:(回车),选择yes,
输入命令vxcopy bootrom_uncmp H:bootrom.sys
三.创建Bootable VxWorks Image
8. 新建一个Bootable工程 (可选择带应用程序或不带应用程序,假设路径是
D:\tornado2.0\target\proj\ Project2),首先使它编译通过,它将在
D:\tornado2.0\target\proj\Project2\default目录下自动生成vxworks,这也就是我们所要的VxWorks Image. 将vxworks拷到根目录D:\ 。
四.配置FTP Server
9. 首先打开FTP Server,
File>open Log中选择D:\tornado2.0\target\proj\Project2\default下的vxworks。Logging>Log option中都选中。
Security>Users/right 中的用户名,密码等要和config.h中保持一致。Home directory选择D:\ ,right中选择directory为*。
注意:FTP Sever必须在目标机启动之前开启,因为目标机是通过它来下载宿主机上的VxWorks Image.
10.配置好FTP Server后,上电启动目标机,CF卡中的引导映象首先对目标机进行简要的初始化,然后自动从宿主机上下载vxWorks映象至目标机执行,至此,目标机成功启动并进入VxWorks操作系统。
五.配置Target Server
11. 选择tornado下的tools> target Server>configure中Target Server Property选择Back end并设置为wdbrpc,再选择core file and symbol , file中选D:\tornado2.0\target\proj\Project2\default ,选中all symbol.
target IP address与config.h中的DEFAULT_BOOT_LINE一致。
【续】硬盘加载
【第一步】 修改config.h中的启动行参数:
(要注意你的CF卡是使用哪个ata控制器)
(1) 在config.h中
#define DEFAULT_BOOT_LINE \:
“ata=1,0(0,0)host:/ata1/vxWorks h=192.168.0.24 e=192.168.0.55 o=rtl"
【第二步】 在BSP中修改有关ata配置的部分:
(2) 在config.h中包含定义:
#define INCLUDE_ATA /*包含IDE或EIDE(ATA)硬盘驱动*/
(3) 在config.h中将
#define SYS_WARM_TYPE SYS_WARM_FD
改为
#define SYS_WARM_TYPE SYS_WARM_ATA /*定义热启动设备为硬盘*/
(4) 在config.h中把
#define SYS_WARM_ATA_CTRL 0
改为
#define SYS_WARM_ATA_CTRL 1 /*使用1#硬盘控制器进行热启动*/
(5) 在config/bspname/sysLib.c中找到
ATA_RESOURCE ataResource[]=
{
................
PCMCIA
...................
}
修改为
ATA_RESOURCE ataResource[]=
{
................
IDE_LOCAL
...................
} /*定义设备为IDE 硬盘*/
另外需要改写其他的参数。例如ATA1_CONFIG等等。
(6) 在sysLib.c中将原来的ataTypes数组
ATA_TYPE ataTypes[ATA_MAX_CTRLS][ATA_MAX_DRIVES] =
{
................
{{761, 8, 39, 512, 0xff}, /* ctrl 1 drive 0 */
...............
};
改为
ATA_TYPE ataTypes[ATA_MAX_CTRLS][ATA_MAX_DRIVES] =
{
................
{{980, 8, 32, 512, 0xff}, /* ctrl 1 drive 0 */
...............
}; /*使它和你的CF卡的几何参数(磁道,扇区,柱面等)一致*/
这个参数可以在BIOS中查找到,使用IDE HDD AUTO DETECTION 就可以查看你的CF卡的参数,这对于硬盘也是一样的。
(7) 在config/bspname/pc.h中找到
#define ATA1_INT_LVL 0x9
改为
#define ATA1_INT_LVL 0xf /*定义中断请求号*/
注意:在制作“硬盘加载”方式下的引导盘之前,必须先完成“网络加载”方式下的第1.2.3.5步,主要是为了生成工具链:depend.PENTIUMgnu,为下面的编译作准备。
【第三步】 创建Bootrom和Vxworks image:
(8) 首先用Dos 6.22 启动pc104,格式化 CF 卡为一个主DOS分区.
执行以下的步骤:
C:\>format C: 回车;
C:\>vxsys C: 回车;
(成功后vxld会成功写入CF卡的引导扇区,表明你的CF卡已经在vxworks下被认可了,现在就可以创建Bootrom了。)
(9) 参照《网络加载》中的第二步:编译和固化Bootrom,创建一个引导映像bootrom_uncmp,并将bootrom.sys文件做到你的CF卡中。
(10) 创建VxWorks Image(可选择带应用程序或不带应用程序),并将其拷贝至CF卡中。至此,引导盘制作完毕,现在可以将CF卡插入目标机并启动,出现了心爱的loading!
其加载顺序是这样的:
VxLd-->bootrom.sys-->VxWorks image
【最后】 下载调试应用程序
(11) 如果硬盘中的vxWorks映象没有封装应用程序,单纯只是为了从硬盘启动vxWorks,则启动成功后,还可以配置你的FTP Server和target server,通过网络(连接好网线)来下载调试运行你的应用程序,也就是说硬盘加载方式不仅可以封装运行,还可以下载调试。若硬盘中的vxWorks映象已经封装应用程序,则不能再进行下载调试。
注意:
1. 在默认设置情况下,如果在config.h中包含定义#define INCLUDE_ATA,则vxworks 从一个ata 设备上启动。但是如果有两个ata controller的话,需要修改sysLib.c中的ataResources 来解决这个问题,来支持更多的ata drive。而一般的CF卡是在ata1 controller上面的,所以这就是问题的关键所在。
2. 在启动行参数设置中,
“ata=1,0(0,0)host:/ata1/vxWorks h=192.168.0.24 e=192.168.0.55 u=target o=rtl"
“ata=1,0(0,0)”中括号外的1表示ata controler1(硬盘控制器1),0表示drive 0
(驱动器0);括号内的前一个0表示硬盘编号,和drive 0是同样的意思,后一个0表示硬盘的分区编号。
“host:/ata1/vxWorks”是需要Bootrom加载的映象文件,其中“ata1”不是必须的,只是选择的设备名称,可根据喜好任意设定,如“gaoping”。特别注意的是这里的vxWorks一定要与生成的映象文件名一致。
3. 在硬盘加载方式中,虽然我们是将CF卡作为硬盘,但它与普通的硬盘还是有差别的,一般的CF卡作为ata1 controller(secondary),普通的硬盘才作为ata0 controller(primary)。
4. 驱动器也有主从之分:drive 0(master)表示主驱动器 “C:”;drive 1(slave)表示从驱动器D:”。
[align=right][color=#000066][此贴子已经被作者于2006-6-2 1:20:59编辑过][/color][/align]