END驱动中ipAttach函数出错
最近我的工作处在BOOT以太网END驱动程序调试阶段,希望BOOT程序能支持网口下载vxWorks镜像功能。但是遇到了一个棘手的问题,我的程序老是在bootLoad()函数里面的ipAttach()程序里出错。即:
if (ipAttach (params.unitNum, bootDev) != OK)
{
printf ("Failed to attach TCP/IP to device %s", muxDevName);
return (ERROR);
}
执行后,老是返回“Failed to attach TCP/IP to device”。muxDevName所代表的字符串打印不出来。
查网络资料,了解ipAttach()函数内部调用了函数:
int motFecIoctl (DRV_CTRL *pDrvCtrl, int cmd, caddr_t data);
于是在motFecIoctl()里面添加调试信息,了解到ipAttach()至少调用了8次motFecIoctl(),分别用命令:EIOCGNPT、EIOCQUERY、EIOCGMIB2、EIOCGFLAGS、EIOCGMIB2、EIOCQUERY、EIOCGMIB2、EIOCGHDRLEN。
对于ipAttach()的了解就这么多了。ipAttach()是在调用motFecIoctl()出的问题还是在调用motFecIoctl()之外的程序行出的问题,就不知道了。感觉无从下手了。
哪位XDJM有相关经验,可否指导下。不胜感激。
[解决办法]
你需要逐步添加打印来定位问题所在。
boot原本不就支持网络下载vxworks镜像文件么?
[解决办法]
重点关注你的网卡驱动,跟ipAttach()这些系统函数没有关系的。
只要确保你的网卡驱动程序没有问题,配置正确,就一定可以起来。
[解决办法]
是powerpc的处理器吧,见你的网卡名是motfec
用环境自带的网卡驱动,吧资源重新配置正确了,一般不会有问题的
[解决办法]
你的muxDevName打印不出来,感觉像是该设备没有初始化。请确认该设备的驱动已经正确初始化。