gpt4 book ai didi

vxworks - 在vmware中构建多vxworks

转载 作者:行者123 更新时间:2023-12-02 14:31:05 31 4
gpt4 key购买 nike

当我在 vmware 中构建一个 vxworks 时,它可以工作。但是,当我使用不同的 IP 分别创建另外两个 vxworks 时,第二个 vxworks 失败(日志来自 vxware.log):

2015-09-02T09:10:45.057+08:00| vcpu-0| W110: VLANCE: RDP OUT to unknown Register 100 
2015-09-02T09:10:45.057+08:00| vcpu-0| I120: VNET: MACVNetPort_SetPADR: Ethernet0: can't set PADR (0)
2015-09-02T09:10:45.057+08:00| vcpu-0| I120: Msg_Post: Warning
2015-09-02T09:10:45.057+08:00| vcpu-0| I120: [msg.vnet.padrConflict] MAC address 00:0C:29:5A:23:AF of adapter Ethernet0 is within the reserved address range or is in use by another virtual adapter on your system. Adapter Ethernet0 may not have network connectivity.

我确信每个 vxworks 操作系统都有自己的 MAC 地址。还有一点是我通过复制第一个vxworks的文件创建了第二个vxworks。

最佳答案

原谅我。
删除宏 VXWORKS_RUN_ON_VMWARE 以及 sysLn97xEnd.c 中的任何相关代码。
一切都在 VMWorkstation 11 下完美运行。
MAC可以在虚拟机的配置页面下设置。
也许这些宏适用于较早版本的 vmworkstation。

<小时/><删除>在vmware中设置mac地址不起作用。
你需要一个函数来在系统启动时生成不同的mac地址。
每个虚拟机副本都需要构建不同的 bootrom 和 vxworks。
(只需在 (.wpj)MAKEFILE 中使用 -D MACRO 即可通过单个 header 在不同项目之间切换 mac。)
这是在一台虚拟机中设置多 Mac 的肮脏解决方案:
0.
在 ln97xEnd.c 中定义 MAC 地址和访问它的函数。

\#define LN97_MAX_IP (4)
int ln97EndLoaded = 0;
char ln97DefineAddr[LN97_MAX_IP][6] = {
{0x00, 0x0c, 0x29, 0x5a, 0x23, 0xa0},
{0x00, 0x0c, 0x29, 0x5a, 0x23, 0xa1},
{0x00, 0x0c, 0x29, 0x5a, 0x23, 0xa2},
{0x00, 0x0c, 0x29, 0x5a, 0x23, 0xa3}
};
END_OBJ * ln97xEndList[LN97_MAX_IP] = {NULL, NULL, NULL, NULL};
char * ln97xFindDefinedAddr(LN_97X_DRV_CTRL * pDrvCtrl)
{
int i;
for (i = 0; i endObj)
{
return ln97DefineAddr[i];
}
}
if (i

1.<br/>
Modify ln97xEndLoad() in ln97xEnd.c to init different mac (and store the END_OBJ* if needed).<br/>
<code>
END_OBJ * ln97xEndLoad
...
DRV_LOG (DRV_DEBUG_LOAD, "Done loading ln97x...\n", 1, 2, 3, 4, 5, 6);
/** add to save END_OBJ* */
if (ln97EndLoaded endObj;
ln97EndLoaded++;
}
/** end add */
return (&pDrvCtrl->endObj);
...
</code>


2.<br/>
change sysLan97xEnetAddrGet() in sysLn97xEnd.c.<br/>
aprom should <del>not</del> be set by ln97xFindDefinedAddr() instead of "00:0C:29:5A:23:AF".<br/>

char * ln97xFindDefinedAddr(LN_97X_DRV_CTRL * pDrvCtrl);
...
STATUS sysLan97xEnetAddrGet
...
{
char * addrDef = NULL;
...
/* modify by frankzhou to support in VMware */
\#define VXWORKS_RUN_ON_VMWARE
\#ifndef VXWORKS_RUN_ON_VMWARE
/* check for ASCII 'W's at APROM bytes 14 and 15 */
if ((aprom [0xe] != 'W') || (aprom [0xf] != 'W'))
{
logMsg ("sysLn97xEnetAddrGet: W's not stored in aprom\n",
0, 1, 2, 3, 4, 5);
return ERROR;
}
\#endif
\#ifdef VXWORKS_RUN_ON_VMWARE
/** add by bonex for multi mac addr */
addrDef = ln97xFindDefinedAddr(pDrvCtrl);
if (addrDef == NULL)
{
aprom[0]=0x00;
aprom\[1]=0x0c;
aprom[2]=0x29;
aprom[3]=0x5a;
aprom[4]=0x23;
aprom[5]=0xaf;
}
else
{
bcopy (addrDef, aprom, 6);
}
/** end by bonex */
\#endif
/* end by frankzhou */
...
3.
重建bootrom,并重建vxworks。
结果:
[telnet 到 vmware 并检查 arpShow][1] [1]:/image/kR9Uy.jpg

关于vxworks - 在vmware中构建多vxworks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32343562/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com