在VMware10下安装VxWorks6.6虚拟机教程(中篇——FTP引导的bootrom.bin制作过程)

1、 FTP引导的bootrom.bin制作

修改BSP

首先,我们复制一份纯净未做修改的安装目录\vxworks-6.6\target\config\下的 pcPentium文件夹,改名为 VMware_VxWorks6.6_BSP(名称随便你起),再将该改名后文件夹放到config目录下,最好不要带空格或什么特殊符号。

我们要修改编译 bootrom.binVxWorks的配置头文件 config.h中定义的一些参数,使编译出来的系统引导程序bootrom.bin VxWorks的映象符合我们的要求;

1.1 修改config.h

1)     定位到安装目录\vxworks-6.6\target\config\Pentium并打开该目录下 config.h文件;

2)     定位到”INCLUDE_CPU_PROBE”,更改成如下:

#undef INCLUDE_CPU_PROBE       /* define to perform sysCpuProbe() */
#ifndef INCLUDE_CPU_PROBE
#   undef  CPU
#   define CPU      PENTIUM     /* for CPU conditionals in BSP */
#endif  /* INCLUDE_CPU_PROBE */
截图如下( 注意图片中画圈部分与原文件代码的区别):


3)  查找到定义DEFAULT_BOOT_LINE宏的地方,修改预处理条件 CPU = = PENTIUM分支下的定义如下:

/* Default boot line */
#define DEFAULT_BOOT_LINE \
	"lnPci(0,0)host:vxWorks h=192.168.1.207 e=192.168.1.50 u=target_vm pw=123 f=0x00"

截图如下(注意图片中画圈部分与原文件代码的区别):


这里的host地址得修改成你的主机地址,target地址只需要在同一个网段内就可以了

4) 定位到INCLUDE_ATA,在前面一句添加#undef INCLUDE_FD,如下所示:

#undef 	INCLUDE_FD   			
#undef	INCLUDE_ATA             /* include IDE/EIDE(ATA) hard disk driver */

#undef	INCLUDE_LPT             /* include parallel port driver */

#undef	INCLUDE_TFFS            /* include TrueFFS driver for Flash */
#undef	INCLUDE_PCMCIA          /* include PCMCIA driver */

#define INCLUDE_RAWFS           /* include raw FS */
#define INCLUDE_DOSFS_MAIN      /* The 3 minimum components */
#define INCLUDE_DOSFS_FAT       /* required for DosFs */
#define INCLUDE_DOSFS_DIR_VFAT
#undef	INCLUDE_HRFS            /* include HRFS file system */


截图如下( 注意图片中画圈部分与原文件代码的区别):



5) 定位到/* Network driveroptions: VxBus drivers */

作如下修改:


/* Network driver options: VxBus drivers */

#undef  INCLUDE_AM79C97X_VXB_END
#undef  INCLUDE_AN983_VXB_END
#undef 	INCLUDE_FEI8255X_VXB_END
#undef	INCLUDE_GEI825XX_VXB_END
#undef  INCLUDE_MVYUKONII_VXB_END
#undef  INCLUDE_MVYUKON_VXB_END
#undef  INCLUDE_NS8381X_VXB_END
#undef  INCLUDE_RTL8139_VXB_END
#undef  INCLUDE_RTL8169_VXB_END
#undef  INCLUDE_TC3C905_VXB_END
#undef  INCLUDE_NE2000_VXB_END
截图如下( 注意图片中画圈部分与原文件代码的区别):

6)定位到INCLUDE_LN_97X_END,将其定义上,修改如下:

#define INCLUDE_END             /* Enhanced Network Driver Support */

#undef  INCLUDE_DEC21X40_END    /* (END) DEC 21x4x PCI interface */
#undef  INCLUDE_EL_3C90X_END    /* (END) 3Com Fast EtherLink XL PCI */
#undef  INCLUDE_ELT_3C509_END   /* (END) 3Com EtherLink III interface */
#undef  INCLUDE_ENE_END         /* (END) Eagle/Novell NE2000 interface */
#undef	INCLUDE_ULTRA_END       /* (END) SMC Elite16 Ultra interface */
#undef  INCLUDE_GEI8254X_END    /* (END) Intel 82543/82544 PCI interface */
#define INCLUDE_LN_97X_END      /* (END) AMD 79C97x PCI interface */


截图如下( 注意图片中画圈部分与原文件代码的区别):

7)定位到INCLUDE_PC_CONSOLE,将其设成定义的,如下所示

#define INCLUDE_PC_CONSOLE                /* PC keyboard and VGA console */
#ifdef INCLUDE_PC_CONSOLE
#   define PC_CONSOLE           (0)      /* console number */
#   define N_VIRTUAL_CONSOLES   (2)      /* shell / application */
#   ifdef INCLUDE_VXBUS
#       define DRV_KBD_I8042
#       define DRV_VGA_M6845
#   endif /* INCLUDE_VXBUS */
#endif /* INCLUDE_PC_CONSOLE */


截图如下( 注意图片中画圈部分与原文件代码的区别):


8)定位到#if (SYS_WARM_TYPE == SYS_WARM_BIOS),修改如下:

/* memory addresses, offsets, and size constants */

#if (SYS_WARM_TYPE == SYS_WARM_BIOS)            /* non-volatile RAM size */
#   define NV_RAM_SIZE          (NONE)
#else
#   define NV_RAM_SIZE          (0x1000)
#endif

#ifdef NV_RAM_SIZE
#	undef NV_RAM_SIZE
#	define NV_RAM_SIZE			(NONE)
#endif


截图如下(注意图片中画圈部分与原文件代码的区别):


1.2修改 configNet.h

        1)定位到/* max number of END ipAttachments we can have */

在上面添加如下内容

/* Am79C97x (lnPci) driver defines */

#ifdef INCLUDE_LN_97X_END

#define LN_97X_LOAD_FUNC      sysLn97xEndLoad
#define LN_97X_BUFF_LOAN      TRUE
#define LN_97X_LOAD_STR       ""

IMPORT END_OBJ * LN_97X_LOAD_FUNC (char *, void *);

#endif /* INCLUDE_LN_97X_END */


截图如下(注意图片中画圈部分与原文件代码的区别):


2)定位到/* Atheros AR521XWLAN Support */

在上面添加如下内容:

#ifdef INCLUDE_LN_97X_END
    {0, LN_97X_LOAD_FUNC, LN_97X_LOAD_STR, LN_97X_BUFF_LOAN,
    NULL, FALSE},
#endif /* INCLUDE_LN_97X_END */


截图如下( 注意图片中画圈部分与原文件代码的区别):


1.3将安装目录\vxworks-6.6\target\src\drv\end目录下的ln97xEnd.c拷贝进你的Pentium(VMware_VxWorks6.6_BSP)目录下,并作如下修改:

    定位到    do  {

        ; /* poll for suspend mode entry */

        }

    while ((csrLockedRead (pDrvCtrl, CSR(5))& CSR5_SPND) == 0);

 

 添加宏如下所示:

#if !defined(VMWARE_HACK)
    do  {
        ;  /* poll for suspend mode entry */
        }
    while ((csrLockedRead (pDrvCtrl, CSR(5)) & CSR5_SPND) == 0);
#endif


 截图如下( 注意图片中画圈部分与原文件代码的区别):


1.4将5.5的Sysln97xEnd.c移植到你的Pentium(VMware_VxWorks6.6_BSP)目录下,并作如下修改:

    1)定位到/* map a 4Kb 32-bitnon-prefetchable memory address decoder */

添加如下宏

#if !defined(VMWARE_HACK)
    /* map a 4Kb 32-bit non-prefetchable memory address decoder */

    if (sysMmuMapAdd ((void *)(memIo32 & PCI_DEV_MMU_MSK),
        PCI_DEV_ADRS_SIZE, VM_STATE_MASK_FOR_ALL, VM_STATE_FOR_PCI) == ERROR)
        {
        return (ERROR);
        }

#endif


截图如下( 注意图片中画圈部分与原文件代码的区别):


2)定位到ln97xPciResources[ln97XUnits].bar[0]     = ioBase;

 

添加如下宏:

/* update the board-specific resource table */

    ln97xPciResources[ln97XUnits].bar[0]     = ioBase;
#if defined(VMWARE_HACK)
    ln97xPciResources[ln97XUnits].bar[1]     = (UINT32)NONE;
#else
    ln97xPciResources[ln97XUnits].bar[1]     = memIo32;
#endif
    ln97xPciResources[ln97XUnits].irq        = irq;


截图如下( 注意图片中画圈部分与原文件代码的区别):


1.5修改makefile文件,作如下修改:

    1)定位到TOOL       = diab

        将diab修改为gnu

    2) 定位到EXTRA_DEFINE,作如下修改:

EXTRA_DEFINE       = 		-DVMWARE_HACK -DFAST_REBOOT

MACH_EXTRA	   = ln97xEnd.o

截图如下( 注意图片中画圈部分与原文件代码的区别):


1.6修改sysNet.c

    1)定位到#   include"sysUltraEnd.c"

        添加内容如下:

#ifdef INCLUDE_ENE_END
#   include "sysNe2000End.c"            /* ne2000End support routines   */
#endif
#ifdef INCLUDE_LN_97X_END
#	include "sysLn97xEnd.c"				/* ln97xEnd support routines	*/
#endif
#   include "sysUltraEnd.c"             /* ultraEnd support routines    */
#endif  /* INCLUDE_END */

#ifdef  INCLUDE_BSD
#   include "sysNetif.c"                /* if_eex32 support routines    */
#endif /* INCLUDE_BSD */


截图如下( 注意图片中画圈部分与原文件代码的区别):


2)定位到LOCAL VEND_ID_DESCvendorIdEnet [] =

修改内容如下:

LOCAL VEND_ID_DESC vendorIdEnet [] =
    {
    #if defined(INCLUDE_DEC21X40_END)
    {DEC_PCI_VENDOR_ID,      sysDec21x40PciInit},
    #endif /* INCLUDE_DEC21X40_END */
    
	#if defined(INCLUDE_LN_97X_END)
    {AMD_PCI_VENDOR_ID,		sysLan97xPciInit},
	#endif	/*INCLUDE_LN_97X_END	*/

    {0xffffffff, NULL}        /* last entry */
    };


截图如下( 注意图片中画圈部分与原文件代码的区别):


1.7将安装目录下的wrenv.exe拷贝进截图如下Pentium(VMware_VxWorks6.6_BSP)目录下,删除如下文件:bootrom;bootrom.bin;bootrom.pxe;vxWorks;vxWorks.st;vxWorks.sym并添加两个文件如下:

    1)torVars.bat

    内容如下:

    wrenv -p vxworks-6.6

    2)vxcopy.bat

    内容如下:

    objcopypentium -O binary --gap-fill=0 %1 %2


1.8 编译bootrom.bin

       往PATH环境变量添加路径,如下所示

D:\WindRiver-GPPVE-3.6-IA-Eval\vxworks-6.6\host\x86-win32\bin;D:\WindRiver-GPPVE-3.6-IA-Eval\workbench-3.0\x86-win32\bin

 

       打开Wind River Workbench 3.0,File->New -> VxWorks BootLloader / BSP Project,填写工程名,并选择我们的Pentium(VMware_VxWorks6.6_BSP文件夹,及工具gnu,然后编译。

       

同样在VxWorks 6.6的集成开发环境还有另外一种bootrom.bin文件的方法:运行VxWorks Development Shell工具,定位到Pentium(VMware_VxWorks6.6_BSP)目录,输入:make clean先对原工程进行清理,然后输入:make bootrom.bin,这样就生成了.bin文件。



  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值