VxWorks入门教程06:虚拟机中运行 |
您所在的位置:网站首页 › 安装windriver › VxWorks入门教程06:虚拟机中运行 |
系列索引:VxWorks入门教程索引 上一篇:VxWorks入门教程05:安装与配置2 在下载的VxWorks安装包中,包含了一份在虚拟机下安装测试的文档,我们按照这个文档测试一下。 VxWorks 6.8.3 + VxWorks Workbench 3.2.3 + VMware 16.1.2 + MS-DOS 6.22 软盘版 按照FTP连接的主机和目标机,将整个VxWorks6.8的安装分为两个部分,一是在主机(win10系统,可以使用虚拟机或者实体机,推荐使用虚拟机)上安装workbench3.2,进行bootrom与VxWroks映像文件的生成,二是在虚拟机上安装VxWorks系统。 编译BSP1、找到WorkBench的安装目录,目录名为WindRiver,找到vxworks-6.8目录,进入找到target目录,进入找到config目录,进入找到pcPentium4目录 MakefileMakefile文件控制镜像的创建,在Makefile文件里使用了将近135个宏,最简单的Makefile文件要包含以下的宏: CPU:目标板CPU的类型;TOOL:主机的make工具,为GNU;TGT_DIR:target路径,默认为$(WIND_BASE)/target;TARGET_DIR:BSP目录名;VENDER:目标板生产商名;BOARD:目标板名;ROM_TEXT_ADRS:boot ROM的入口地址(以16进制表示,并且与config.h文件定义相同);ROM_SIZE:ROM的大小;RAM_LOW_ADRS:加载vxWorks的目标地址;RAM_HIGH_ADRS:boot ROM拷贝到RAM的目标地址;HEX_FLAGS:特殊结构的标记,用于产生S-记录文件;MACH_EXTRA:扩展文件,用户可以加入自己的目标模块;除此以外,Makefile文件还需要包括以下文件:$(TGT_DIR)/h/make/defs.bsp:Vxworks系统运行的标准变量定义;$(TGT_DIR)/h/make/make.$(CPU)$(TOOL):提供了特别的目标机结构和一套编译工具,如make. ARM7TDMI_Tgnu;$(TGT_DIR)/h/make/defs.$(WIND_HOST_TYPE):提供了与主机系统有关的定义;rules.bsp:在创建目标文件时所需要的规则;rules.$(WIND_HOST_TYPE):指出创建目标文件时所需的从属文件表;如果没有用all目录下的文件而是拷贝到bspname下修改并使用,需要定义与这些文件有关的宏,如 BOOTINIT=bootInit.c 这样在创建镜像时就不会用all目录下的文件而使用bspname目录下的相应文件了;在Makefile文件里凡是16进制数前面都无需加“0x”; bspname.h根据具体目标板设置串行接口、时钟以及I/O设备等。在该文件中必须包含以下内容: 中断向量/级别I/O设备地址设备寄存器位的含义系统和附加时钟参数(最大和最小速率) config.h根据目标板的具体情况配置宏定义,注意ROM_TEXT_ADRS、ROM_SIZE、RAM_LOW_ADRS、RAM_HIGH_ADRS要与Makefile文件里定义的一致,LOCAL_MEM_LOCAL_ADRS和LOCAL_MEM_SIZE要正确。 romInit.s这是系统上电后运行的第一个程序,根据具体目标板对寄存器和CPU进行设置;以CPU为ARM7TDMI为例,romInit.s 需要进行的工作有: 保存启动方式:对于冷启动,如果CPU配置的是HIGH VECTORS,就设置入口地址为0xFFFF0000,否则设置入口地址为0x00000000;屏蔽中断:通过设置cpsr的I_BIT和F_BIT都为1来实现,还要设置中断寄存器为关模式,同时设定运行模式为SVC32模式;初始化堆栈指针pc和sp:堆栈指针sp指向STACK_ADRS,这个宏的定义为当镜像为驻留ROM时,该宏值为_sdata,当镜像为非驻留ROM时该宏值为_romInit,这两个地址经过地址映射后都指向被拷贝镜像在RAM的目标地址;初始化cache,屏蔽cache;根据具体目标板的需要初始化其他寄存器;指针跳转到romStart()函数并执行; sysALib.s与romInit.s文件实现的功能相似,但如果在romInit.s文件里对DRAM和内存控制器进行了初始化在这里不再进行这项工作; 复制到config目录,重命名为Pentium4(自己取名,最好不要带空格或什么特殊符号) 我们要修改编译bootrom、VxWorks的配置头文件Config.h中定义的一些参数,使编译出来的系统引导程序bootrom和VxWorks的映象符合我们的要求; 修改config.h1、定位到目录C:\WindRiver\vxworks-6.8\target\config\Pentium4并打开该目录下 config.h 文件;定位到INCLUDE_CPU_PROBE, 12345678/* CPU auto detection with sysCpuProbe() that support Intel CPUs for now */#define 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 */#define X86CPU_DEFAULT X86CPU_PENTIUM /* for sysProcessor set in BSP */ 更改成如下: 12345678/* CPU auto detection with sysCpuProbe() that support Intel CPUs for now */#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 */#define X86CPU_DEFAULT X86CPU_PENTIUM /* for sysProcessor set in BSP */ 2、定位到定义 DEFAULT_BOOT_LINE 宏的地方, 123456789101112131415161718192021/* Default boot line */#if (CPU == I80386)#define DEFAULT_BOOT_LINE \ "fd=0,0(0,0)host:/fd0/vxWorks.st h=90.0.0.3 e=90.0.0.50 u=target"#elif (CPU == I80486)#define DEFAULT_BOOT_LINE \ "fd=0,0(0,0)host:/fd0/vxWorks.st h=90.0.0.3 e=90.0.0.50 u=target"#elif (CPU == PENTIUM)#define DEFAULT_BOOT_LINE \ "fd=0,0(0,0)host:/fd0/vxWorks.st h=90.0.0.3 e=90.0.0.50 u=target"#elif (CPU == PENTIUM2)#define DEFAULT_BOOT_LINE \ "fd=0,0(0,0)host:/fd0/vxWorks.st h=90.0.0.3 e=90.0.0.50 u=target"#elif (CPU == PENTIUM3)#define DEFAULT_BOOT_LINE \ "fd=0,0(0,0)host:/fd0/vxWorks.st h=90.0.0.3 e=90.0.0.50 u=target"#elif (CPU == PENTIUM4)#define DEFAULT_BOOT_LINE \ "fd=0,0(0,0)host:/fd0/vxWorks.st h=90.0.0.3 e=90.0.0.50 u=target"#endif /* (CPU == I80386) */ 修改预处理条件 CPU = = PENTIUM4 分支下的定义如下: 1"lnPci(0,0)host:vxWorks h=192.168.33.133 e=192.168.33.134 u=target pw=target tn=target"这里的h(host)地址表示你的主机IP地址,可以先修改为主机IP地址,或者随便填一个IP地址,之后修改主机地址为该地址,e(target)地址表示VxWorks系统目标机的IP地址,只需要和主机IP地址在同一个网段内即可,u=target pw=target是FTP下载的用户名和密码,都可以根据自己实际情况修改,最好使用target,简单易记。 3、定位到INCLUDE_ATA, 1#undef INCLUDE_ATA /* include IDE/EIDE(ATA) hard disk driver */在前面一句添加#undef INCLUDE_FD,如下所示: 12#undef INCLUDE_FD /* include floppy disk driver */#undef INCLUDE_ATA /* include IDE/EIDE(ATA) hard disk driver */4、定位到/* Network driver options: VxBus drivers */ 123456789101112131415/* Network driver options: VxBus drivers */#undef INCLUDE_AM79C97X_VXB_END#undef INCLUDE_AN983_VXB_END#ifndef _WRS_CONFIG_WRHV_GUEST#define INCLUDE_FEI8255X_VXB_END#endif#define 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 作如下修改: 12345678910111213/* 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 5、定位到INCLUDE_LN_97X_END, 1#undef INCLUDE_LN_97X_END /* (END) AMD 79C97x PCI interface */将其定义上,修改如下: 1#define INCLUDE_LN_97X_END /* (END) AMD 79C97x PCI interface */6、定位到INCLUDE_PC_CONSOLE, 123456789101112131415/* use global variable for console tty */#undef CONSOLE_TTY#define CONSOLE_TTY sysConsoleTty#endif /* _WRS_CONFIG_WRHV_GUEST */ #undef 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 */ 将其设成定义的,如下所示 123456789101112131415/* use global variable for console tty */#undef CONSOLE_TTY#define CONSOLE_TTY sysConsoleTty#endif /* _WRS_CONFIG_WRHV_GUEST */ #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 */ 7、定位到 #if(SYS_WARM_TYPE == SYS_WARM_BIOS), 12345678910/* 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 #define LOCAL_MEM_LOCAL_ADRS (0x00100000) /* on-board memory base */#define USER_RESERVED_MEM (0) /* user reserved memory */ 修改如下: 123456789101112131415/* 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 #define LOCAL_MEM_LOCAL_ADRS (0x00100000) /* on-board memory base */#define USER_RESERVED_MEM (0) /* user reserved memory */ 修改configNet.h1、定位到/* max number of END ipAttachments we can have */ 12345/* max number of END ipAttachments we can have */#ifndef IP_MAX_UNITS# define IP_MAX_UNITS (NELEMENTS (endDevTbl) - 1)#endif 在上面添加如下内容: 1234567891011121314151617/* 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 */ /* max number of END ipAttachments we can have */ #ifndef IP_MAX_UNITS# define IP_MAX_UNITS (NELEMENTS (endDevTbl) - 1)#endif 2、定位到/* Atheros AR521X WLAN Support */ 12345678/* Atheros AR521X WLAN Support */#ifdef INCLUDE_AR521X_END {-1, END_TBL_END, NULL, 0, NULL, FALSE}, /* up to 4 Atheros NICs */ {-1, END_TBL_END, NULL, 0, NULL, FALSE}, {-1, END_TBL_END, NULL, 0, NULL, FALSE}, {-1, END_TBL_END, NULL, 0, NULL, FALSE},#endif /* INCLUDE_AR521X_END */ 在上面添加如下内容: 12345678910111213#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 *//* Atheros AR521X WLAN Support */ #ifdef INCLUDE_AR521X_END {-1, END_TBL_END, NULL, 0, NULL, FALSE}, /* up to 4 Atheros NICs */ {-1, END_TBL_END, NULL, 0, NULL, FALSE}, {-1, END_TBL_END, NULL, 0, NULL, FALSE}, {-1, END_TBL_END, NULL, 0, NULL, FALSE},#endif /* INCLUDE_AR521X_END */ 添加In97xEnd.c将C:\WindRiver\vxworks-6.8\target\src\drv\end目录下的ln97xEnd.c拷贝进你的Pentium4目录下, 并作如下修改,定位到: 1234do { ; /* poll for suspend mode entry */ }while ((csrLockedRead (pDrvCtrl, CSR(5)) & CSR5_SPND) == 0);添加宏如下: 123456#if !defined(VMWARE_HACK) do { ; /* poll for suspend mode entry */ } while ((csrLockedRead (pDrvCtrl, CSR(5)) & CSR5_SPND) == 0);#endif 添加Sysln97xEnd.c由于workbench内本身没有提供,因此将我们提供的Sysln97xEnd.c移植到你的Pentium4目录下即可。 与原文件不同的地方在于: 1、定位到/* map a 4Kb 32-bit non-prefetchable memory address decoder */ 123456789#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; 123456789101112131415 /* 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; ln97xPciResources[ln97XUnits].irqvec = INT_NUM_GET (irq); ln97xPciResources[ln97XUnits].vendorID = vendorId; ln97xPciResources[ln97XUnits].deviceID = deviceId; ln97xPciResources[ln97XUnits].revisionID = revisionId; ln97xPciResources[ln97XUnits].boardType = boardType; 修改makefile文件定位到EXTRA_DEFINE, 123EXTRA_DEFINE = -DFAST_REBOOTMACH_EXTRA = 作如下修改: 123EXTRA_DEFINE = -DVMWARE_HACK -DFAST_REBOOTMACH_EXTRA = ln97xEnd.o 修改sysNet.c1、定位到# include “sysUltraEnd.c” 12345678910/* includes */#ifdef INCLUDE_END# include "sysDec21x40End.c" /* dec21x40End support routines */# include "sysElt3c509End.c" /* elt3c509End support routines */#ifdef INCLUDE_ENE_END# include "sysNe2000End.c" /* ne2000End support routines */#endif# include "sysUltraEnd.c" /* ultraEnd support routines */#endif /* INCLUDE_END */ 添加内容如下: 12345678910111213/* includes */#ifdef INCLUDE_END# include "sysDec21x40End.c" /* dec21x40End support routines */# include "sysElt3c509End.c" /* elt3c509End support routines */#ifdef INCLUDE_ENE_END# include "sysNe2000End.c" /* ne2000End support routines */#endif#ifdef INCLUDE_LN_97X_END# include "sysLn97xEnd.c"#endif# include "sysUltraEnd.c" /* ultraEnd support routines */#endif /* INCLUDE_END */ 2、定位到LOCAL VEND_ID_DESC vendorIdEnet [] = 1234567891011121314/* locals *//* This table maps END PCI driver initialization routines to * the PCI Vendor IDs for supported (tested) device types. */ LOCAL VEND_ID_DESC vendorIdEnet [] = { #if defined(INCLUDE_DEC21X40_END) {DEC_PCI_VENDOR_ID, sysDec21x40PciInit}, #endif /* INCLUDE_DEC21X40_END */ {0xffffffff, NULL} /* last entry */ }; 修改内容如下: 123456789101112131415161718/* locals *//* This table maps END PCI driver initialization routines to * the PCI Vendor IDs for supported (tested) device types. */ 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 */ }; 当然如果有现有的文件,直接复制覆盖就可以了。 2、打开Workbench3.2,Workspace就选择WindRiver目录下的workspace目录 3、File->New->Wind River Workbench Project,选择Wind River VxWorks 6.8,然后Next 4、Build type选择Boot Loader / BSP Project,然后Next 5、Project name任取,最好与BSP相关,Location选择默认的in workspace,然后Next 6、Board support package选择步骤1中经过修改的Pentium4目录,Tool chain选择gnu,勾上Copy files to project,然后Finish 7、右键选中项目,选择Build Project或者Rebuild Project进行构建 8、构建完成后,右键选中项目,选择Open Wind River VxWorks 6.8 Development Shell,打开命令行,cd进入Pentium4目录后,输入make bootrom.bin命令,将生成bootrom.bin文件 9、找到workspace目录,找到该项目目录,在项目目录下找到Pentium4目录,进入并找到生成的bootrom.bin,复制出来,并修改后缀名为.sys,后续该文件作为引导程序 10、找到vxload.com和vxsys.com两个文件(手动搜索,或者一般在XX\WindRiver\vxworks-6.8\host\x86-win32\bin目录下),与上一步得到的bootrom.sys放在一起,以待后续使用 生成VxWorks镜像根据具体需要在命令行环境下利用Makefile创建各种镜像,也可以在Tornado的集成环境下Build菜单中选择Build Boot ROM来创建各种类型的Boot ROM; 除此以外,如果系统硬件包括串口,还要根据具体情况修改sysSerial.c文件;如果包含网络部分要修改configNet.h;如果包含NVRAM要修改bootnv.h文件。总之,BSP的开发要根据具体目标板的硬件进行。 1、打开Workbench3.2,Workspace就默认为WindRiver目录下的workspace目录 2、File->New->Other,在Wizards内输入VxWorks image查找并选择VxWorks Image Project,然后Next 3、Project name任取,最好与Image相关,Location选择默认项in workspace,然后Next 4、4.Based on选择an existing project,Project中将显示此时workspace中的项目,选择第2章节中创建好的BSP项目,然后Finish 5、右键选中项目,选择Build Project或者Rebuild Project构建 6、找到workspace目录,找到该项目目录,在项目目录下找到default目录,进入并找到生成的vxWorks以及vxWorks.sym,复制出来,后续这两个文件将作为VxWorks系统文件通过FTP引导系统 VxWorks虚拟机安装1、首先使用DOS622镜像文件创建虚拟机,镜像文件格式为IMG,大小为1.44MB,软盘的大小。 2、使用VMware,新建虚拟机->典型->稍后安装操作系统->其他(MS-DOS)->自定义名称(默认为MS-DOS)和位置->使用默认最大磁盘大小2GB,将虚拟磁盘存储为单个文件->完成 3、打开上一步创建的虚拟机设置,在硬件部分“添加”“软盘驱动器” 4、软盘添加“完成”后,选择软盘,勾选“启动时连接”,以及“使用软盘映像文件”,并点击“浏览”选择提供的DOS662.img文件 5、选择CD/DVD,取消勾选“启动时连接”,修改内存大小为256MB(适当大小即可) 6、完成设置后,开启该虚拟机,进入开始界面,选择第三个选项Other IDE CD-ROM 7、选择3后进入真正的DOS界面,开始进行硬盘分区,输入fdisk 8、选择1,建立DOS分区 9、选择1,建立一个主分区 10、选择Y,此时询问这个分区是否使用全部的空间,由于我们只需要一个分区就可以,因此选择Y 11、输入任意键,虚拟机将重启 12、重新选择3 Other IDE CD-ROM,进行主分区的格式化,输入format c: /s ,这里输入Y确认 13、这里询问是否填写卷标,由于并不需要所以直接回车即可 14、此时已经有主分区C盘了,关闭虚拟机,在虚拟机设置中选择硬盘,选择“映射”,取消勾选“以只读模式打开文件”后确定,弹出警告点“是”即可,由此将打开该虚拟机的硬盘空间 当时测试的是Windows10,在某一次更新之后,就无法实现虚拟磁盘映射了。经过测试,几乎所有Windows10版本都是这样,没办法,我只能在Win7上测试。 15、将章节2中的三个文件放入盘中后,在硬盘处“断开连接”,重新开启虚拟机,依然选择3,输入c:进入c盘(即主分区) 16、输入dir,可以看见三个文件已经在盘中了 17、输入vxsys c: 命令,输入y确认 18、由此bootrom.sys成功设置为引导程序,关闭虚拟机,在虚拟机设置中选择软盘,取消勾选“启动时连接”,再次开启虚拟机,VxWroks系统虚拟机安装完成,其中IP地址为172.18.101.124,也就是所提供的config.h文件内设置的地址 发现与我们修改的不一样,host的值是奔腾的值,我们修改错了。重新来一遍上面的步骤。 正常的效果应该是 19、到主机中,设置主机IP为h的值 我的h值就是根据主机IP设置的。 20、在C:\WindRiver\vxworks-6.8\host\x86-win32\bin下找到wftpd32.exe,使用该程序进行FTP的连接,最好将该软件发送到桌面快捷方式以便使用 21、在任意位置创建一个文件夹,用来给目标机提供FTP文件目录,方便起见,我们直接在C盘下创建一个名为ftp的文件夹,将之前得到的vxWorks,vxWorks.sym两个文件放入其中 22、打开wftpd32.exe,Security->Users/Rights->New User->创建一个名为target,密码为target的用户(这个用户名密码是在config.h文件修改时设定好的) 23、用户创建好后选择该用户,在Home Directory内填入C:\ftp,即21步中创建的文件夹,然后选择“Done” 24、重启VxWorks虚拟机,此时虚拟机将通过FTP连接载入VxWroks系统,完成 25、其中,如果在章节3中的文件,只将vxWorks文件放入FTP文件目录而不放置vxWorks.sym,VxWorks系统依然可以跑起来,但在命令行下将没有各种基本命令 我们已经利用基于VxWorks的BSP开发包成功的进行了线缆调制解调器的底层软件开发。在开发过程中深感BSP在整个系统软件中的重要性——没有正确的BSP软件,整个系统的启动和运行也不会正确。另外需要强调的是:BSP的概念只是针对嵌入式操作系统而言的,而像DOS、WINDOWS、UNIX等BIOS操作系统是无BSP可言的。对同一目标板而言,不同操作系统的BSP在本质上是一样的,但是不同的操作系统将提供不同的支持库,另外在BSP结构上也可能会有所不同,在做BSP移植的时候应该注意。 问题解决 mmuI86Enable如果出现mmuI86Enable和undefined reference ***之类的错误,表示编译连接的库中没有链接mmuI86Lib.o这个库。 在Makefile中添加上就可以了 123EXTRA_DEFINE = -DVMWARE_HACK -DFAST_REBOOTMACH_EXTRA = ln97xEnd.o mmuI86Lib.o 当然,要把位于arch/i86/下的mmuI86Lib.c复制到奔腾4目录下。 DOSIMGDOSIMG版本经过测试7.1版本是不行的,现在使用的是6.22版本,不知道其他版本行不行。 本文附属的代码和编译结果在VxWorks_Freshman中,可以直接替换文件。 下一篇:VxWorks入门教程07:本地启动 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |