VxWorks6.6 pcPentium BSP 使用说明(二):创建启动盘

  本篇介绍从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中被计算。

上一篇:Java并发编程的艺术(七)——Executors


下一篇:新猿木子李:0基础学python培训教程 python下载文件的多种方法汇总