当我在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地址。

vm机器的每个副本都需要构建一个不同的bootrom和一个vxworks。
(只需使用(.wpj)MAKEFILE中的-D MACRO在具有单个标头的不同项目之间切换macs。)

这是一个在一台虚拟机上设置多个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 (i1.
Modify ln97xEndLoad() in ln97xEnd.c to init different mac (and store the END_OBJ* if needed).
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); ...


2。
在sysLn97xEnd.c中更改sysLan97xEnetAddrGet()。
不能通过ln97xFindDefinedAddr()而不是“ 00:0C:29:5A:23:AF”设置aprom。

字符* ln97xFindDefinedAddr(LN_97X_DRV_CTRL * pDrvCtrl);
...
状态sysLan97xEnetAddrGet
...
{
char * addrDef = NULL;
...
/ *由Frankzhou修改以支持VMware * /
\#定义VXWORKS_RUN_ON_VMWARE
\ #ifndef VXWORKS_RUN_ON_VMWARE
/ *检查APROM字节14和15处的ASCII'W'* /
if(((aprom [0xe]!='W')||(aprom [0xf]!='W'))
{
logMsg(“ sysLn97xEnetAddrGet:W未被存储在aprom \ n中,
0、1、2、3、4、5);
返回错误;
}
\#万一
\ #ifdef VXWORKS_RUN_ON_VMWARE
/ **由bonex为多mac地址添加* /
addrDef = ln97xFindDefinedAddr(pDrvCtrl);
如果(addrDef == NULL)
{
aprom [0] = 0x00;
aprom \ [1] = 0x0c;
aprom [2] = 0x29;
aprom [3] = 0x5a;
aprom [4] = 0x23;
aprom [5] = 0xaf;
}
其他
{
bcopy(addrDef,aprom,6);
}
/ **以bonex结尾* /
\#万一
/ *以Frankzhou结尾* /
...



3。
重建bootrom,然后也重建vxworks。



结果:
[远程登录vmware并检查arpShow] [1]


[1]:https://i.stack.imgur.com/kR9Uy.jpg

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

10-15 14:53