2009年3月5日星期四

VxWorks下用CF卡作启动盘的详细步骤

首先感谢gaoping8384 from EDW

【续】硬盘加载

【第一步】 修改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 /*包含IDEEIDE(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,为下面的编译作准备。

 

【第三步】 创建BootromVxworks 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 Servertarget 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 controllersecondary),普通的硬盘才作为ata0 controllerprimary)。

 

4. 驱动器也有主从之分:drive 0master)表示主驱动器 "C:";drive 1sl**e)表示从驱动器D:"。

注:CF卡做盘方法:

法一:宿主机上

Windoze 2000下,可以用vxsys.exe a:把引导代码写入a盘,但是我试过vxsys.exe h:

却出现错误(h:CF卡的盘符)。偶锁定不了CF卡,如果有哪位大牛做成功了,不妨告诉一声。

不过在Win2k上还是有办法的,可以用Flash tool 专用工具做盘,也可以用WinHex16进制文本编辑工具完成该使命。

WinHex可把a:盘中的引导扇区(512Bit)导出,并把此内容导入CF卡的引导扇区,再把bootrom.sys

copyCF卡上,至此就可以从你的CF卡上引导你的VxWorks系统了。

法二:目标机上

1:准备一张软盘,把bin\目录下vxsys.exevxcopy.exe 和已经做好的bootrom.sys 拷贝到此张软盘上。另准备一张Dos 6.22或者Win98启动盘,用启动盘进入Dos系统. 试用lock c: (C:为你的CF卡盘符)命令。有时候

可以不用此命令,原因我也不知道。接着用vxsys c:来把引导代码写入CF卡,

接着用vxcopy a:\bootrom.sys c: 最后用chkdsk c:\bootrom.sys检查boorom.sys的连续性。

2: 可以用串口或网络把目标机上引导起来,通过wShell或者telnet, tShellmkboot.o下载到目标机上,用

mkboot命令做盘。这里我就不详细叙述了。

修改将继续...

From: http://hi.baidu.com/pp2016001/blog/item/513a9701c93112031d958387.html

0 评论: