1、 FTP引导的bootrom.bin制作
修改BSP
首先,我们复制一份纯净未做修改的安装目录\vxworks-6.6\target\config\下的 pcPentium文件夹,改名为 VMware_VxWorks6.6_BSP(名称随便你起),再将该改名后文件夹放到config目录下,最好不要带空格或什么特殊符号。
我们要修改编译 bootrom.bin、VxWorks的配置头文件 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
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文件。