本篇介绍从Solaris、Linux、Windows或VxWorks创建VxWorks启动盘的方法。
从Solaris或Linux创建启动盘
使用Solaris或Linux自带的工具/usr/bin/fdformat。它须要一个引导载入程序vxld.bin,位置为安装文件夹下的$WIND_BASE/host/$WIND_HOST_TYPE/bin/vxld.bin。
插入一张1.44MB的软盘,键入fdformat命令格式化软盘并安装引导。
fdformat
-U -d -B $WIND_BASE/host/$WIND_HOST_TYPE/bin/vxld.bin
Formatting
1.44 MB in /vol/dev/rdiskette0/no_name#0
Press
return to start formatting floppy.
..................................................
...........
fdformat:
using "vxld.bin" for MS-DOS boot loader
退出并又一次插入该软盘。在很多系统中必须键入弹出命令。
>
eject
/vol/dev/rdiskette0/no_name
can now be manually ejected
>
volcheck
复制BootROM的镜像到软盘。使用cp命令复制bin镜像或使用objcopypentium命令对于其它镜像文件。
>
cp bootrom.bin /floppy/floppy0/bootrom.sys
...
>
objcopypentium -O binary bootrom /floppy/floppy0/bootrom.sys
在Solaris下使用一些版本号的fdformat进行低级格式化可能会导致启动时间变长。
因为现今的软盘仅仅是未格式化,Solaris用户可加入-
x參数格式化软盘以避免过长的启动时间:
fdformat
-x -U -d -B $WIND_BASE/host/$WIND_HOST_TYPE/bin/vxld.bin
该參数仅仅能在格式化软盘时使用。
从Windows创建启动软盘
C:\WR\VxWorks\target\config\pcPentium\>
format a: /v /q
Insert
new disk for drive A:
and
press ENTER when ready...
The
type of the file system is FAT.
Verifying
1.44M
Format
complete.
Volume
label (11 characters, ENTER for none)?
1457664 bytes total disk space.
1457664 bytes available on disk.
512 bytes in each allocation unit.
2847 allocation units available on disk.
Volume
Serial Number is 307A-4ACB
Format
another (Y/N)? n
C:\WR\VxWorks\target\config\pcPentium>
mkboot a: bootrom.bin
VxSys
1.6 (c) Wind River 1993-2002
Boot
sector installed OK.
1
file(s) copied.
System
transferred. Checking
a:BOOTROM.SYS is contiguous
chkdsk
a:bootrom.sys
The
type of the file system is FAT.
Volume
Serial Number is D4CF-F52B
Windows
is verifying files and folders...
File
and folder verification is complete.
Windows
has checked the file system and found no problem.
1,457,664 bytes total disk space.
271,360 bytes in 1 files.
1,186,304 bytes available on disk.
512 bytes in each allocation unit.
2,847 total allocation units on disk.
2,317 allocation units available on disk.
All
specified file(s) are contiguous.
mkboot.bat将启动引导写入软盘的引导扇区。
然后mkboot拷贝启动文件到软盘上并检測确保启动文件是连续的。用户必须注意反馈的报告信息确保启动文件是连续的。
引导装载程序将不能正确地处理一个非连续的启动文件。
还有一种方法是手动调用mkboot.bat:
格式化
使用.\host\x86-win32\bin\vxsys创建一个引导扇区
拷贝引导镜像并改动扩展名为.bin
对于全部其它启动镜像使用objcopypentium命令
比如:
C:\WR\VxWorks\target\config\pcPentium\>
format a: /v /q
Insert
new disk for drive A:
The
type of the file system is FAT.
The
type of the file system is FAT.
QuickFormatting
1.44M
Format
complete.
Volume
label (11 characters, ENTER for none)?
1457664字节总磁盘空间。
1457664 bytes available on disk.
512 bytes in each allocation unit.
2847 allocation units available on disk.
Volume
Serial Number is DC31-1143
QuickFormat
another (Y/N)? n
C:\WR\VxWorks\host\x86-win32\bin>
vxsys a:
VxSys
1.6 (c) Wind River 1993-2002
Boot
sector installed OK.
如今复制启动镜像到软盘。
对.bin的镜像使用copy命令
C:\WR\VxWorks\target\config\pcPentium>
copy bootrom.bin a:bootrom.sys
对于其它全部的镜像使用objcopypentium命令
C:\WR\VxWorks\host\x86-win32\bin\objcopypentium
-O binary --gap-fill=0
bootrom
a:bootrom.sys
如今验证该文件是连续的。非连续的镜像将无法启动。
C:\WR\VxWorks\target\config\pcPentium>
chkdsk a:bootrom.sys
The
type of the file system is FAT.
Volume
Serial Number is DC31-1143
CHKDSK
is verifying files and directories...
File
and directory verification completed.
1457664字节总磁盘空间。
964608 bytes available on disk.
964608 bytes available on disk.
2847 total allocation units on disk.
2847 total allocation units on disk.
1884 allocation units available on disk.
All
specified file(s) are contiguous.
你也能够使用硬盘来引导VxWorks。
你必须从计算机的BIOS上显示的主磁盘上的主引导分区引导。
建议您使用FDISK或类似的有用程序来创建主引导分区。原因是FDISK的使用PC
BIOS调用来创建磁盘主引导记录。
BIOS的任务是在启动过程中装载启动引导。因此。建议使用像FDISK一样通过BIOS改写分区的有用程序。
磁盘分区和文件系统能够支持FAT12、FAT16或VxWorks专有的VXLONGNAMES文件系统。引导载入程序不支持FAT32格式。
假设您须要FAT32格式,分出一个小的FAT16分区作为主引导分区。第二个较大的分区作为FAT32格式包括剩余的磁盘空间。
在上面的样例中用盘符“C:”代替盘符“A:”创建引导磁盘时,vxsys.com会问提演示样例如以下问题:
That's
a hard disk!Are
you sure (y/n)?
您应该输入“Y”,以确认操作。
这是为了防止误覆盖其它的从本磁盘启动的操作系统。
从vxWorks创建可启动磁盘
VxWorks下的三个引导工具使用方法例如以下:
STATUS
mkbootFd
(
int drive, /* destination drive number: (0 - 3) */
int fdType, /* type of floppy disk: (0 - 1) */
char *in /* source file name */
)
STATUS
mkbootAta
(
int ctrl, /* dest. controller number: (0 - 1) */
int drive, /* dest. drive number: (0 - 1) */
char *in /* source file name */
)
STATUS
mkbootTffs
(
int drive, /* drive number: (0 - TFFS_MAX_DRIVES - 1) */
int removable, /* removable or not: (TRUE - FALSE) */
char *in /* source file name */
)
全部例程成功后均会返回OK,假设在复制镜像文件到磁盘时失败则会返回ERROR。这些例程的源码在BSP文件mkboot.c中。
演示样例
演示样例1:使用mkbootFd创建一个启动软盘:
软盘位于驱动器0(或a:),镜像文件的名称是bootrom.sys:
->
mkbootFd 0, 0, "bootrom.sys"
演示样例2:使用mkbootFd创建一个可引导的磁盘:
硬盘位于ATA控制器0通道,其驱动器号为0(或C:)。镜像文件的名称是bootrom.sys:
-> mkbootAta 0, 0, "bootrom.sys"
演示样例3:使用mkbootTffs创建一个可启动的TrueFFS磁盘:
磁盘驱动器TrueFFS位于0(或C:),这是一个非移动驱动器。
镜像文件的名称是bootrom.sys:
->
mkbootTffs 0, 0, "bootrom.sys"
这些板不具有非易失性RAM,因此,系统断电后引导參数将不被保留。然而。静态引导參数能够设置在config.h中的启动參数设置行DEFAULT_BOOT_LINE
BootROM程序
vxsys.com
驱动器号:
此命令将在磁盘引导扇区安装一个VxWorks引导加载程序。该驱动器能够是由BIOS的引导的软盘(驱动器A:)或硬盘。VxWorks的引导加载程序在根文件夹搜索bootrom.sys并直接加载到内存0x8000的线性地址中。然后跳转到0x8000运行romInit()。
附注:
经过引导载入器在磁盘引导扇区创建引导。您不必再为新的ROM镜像反复vxsys创建引导的操作。
仅仅需复制一个新的启动映像到已经安装引导的磁盘就可以。
vxld.bin
vxld.bin既不是一个命令,也不是一个程序,而是一个由vxsys.com安装到磁盘或软盘上引导扇区的副本。他被单独便提及以便于替换Solaris、Linux或其它第三方引导创建的引导载入程序。
mkboot
驱动器号:源文件
此命令是一个MS
- DOS批处理文件,它调用vxsys.com安装VxWorks的引导载入程序到启动扇区,然后使用复制源文件到“盘符:bootrom.sys”。它也调用MS-DOS的chkdsk校验bootrom.sys是否连续。
vxload.com
[image_file]
此命令用于从MS-DOS启动并载入VxWorks镜像。尤其是bootrom镜像。它能够在PC启动时更方便快捷地载入镜像。
vxload须要一个參数。即镜像文件的名称。
vxload.com不与不论什么Microsoft Windows版本号兼容,它仅支持在MS-DOS下执行。
VxWorks的低内存镜像执行在内存0x8000到0xa0000的空间。这限制了提供给镜像的可用的内存池的大小。config.h中的INCLUDE_BOOT_ADDMEM配置使能代码执行时是否可使用内存池中指定的高内存(内存物理地址大于0x100000)单镜像为低内存版本号时。此选项不能用在系统的内存少于4MB的情况下。
载入低内存镜像的内存大小ADDED_BOOTMEM_SIZE的默认值为2MB。这个值可能会添加。但要确保该池不与下载下来的vxWorks镜像重叠,当INCLUDE_BOOT_ADDMEM配置为使用低内存启动镜像时。假设有重叠,载入的vxWorks镜像执行会破坏已载入的内存池。
确定ADDED_BOOTMEM_SIZE值的计算方法例如以下:
(RAM_LOW_ADRS + vxWorks image size) < (memTopPhys + ADDED_BOOTMEM_SIZE)
memTopPhys在BSP文件sysLib.c中被计算。