CS8900网卡驱动ping不通

xtchenaibin 2010-09-16 04:30:22
说一下我的问题,利用网卡进行镜像加载时没有问题,所以说硬件连接方面应该没啥问题,问题应该出现在网卡驱动之中。
查看串口调试信息,报错为
PING: transmit failed, error code 11010
这是利用WINCE上的ping命令ping pc主机的得到的问题,在进行ping操作时,这两台机器是利用路由器进行连接的,网线连接方面应该没啥错
查看代码报错处出现在PING.c文件中
SendOpts.OptionsData = Opt;
SendOpts.OptionsSize = OptLength;
SendOpts.Ttl = TTL;
SendOpts.Tos = TOS;
SendOpts.Flags = Flags;

do {
getnameinfo((LPSOCKADDR)&address, addressLen, literal, sizeof(literal),
NULL, 0, NI_NUMERICHOST);

if (hostname[0])
{
if(source[0])
OutputMessage(TEXT("Pinging Host %hs [%hs]\r\nfrom %hs\r\n"), hostname, literal, source);
else
OutputMessage(TEXT("Pinging Host %hs [%hs]\r\n"), hostname, literal);
}
else
{
if(source[0])
OutputMessage(TEXT("Pinging Host %hs\r\nfrom %hs\r\n"), literal, source);
else
OutputMessage(TEXT("Pinging Host %hs\r\n"), literal);
}

for (i = 0; i < Count; i++)
{
if(address.ss_family == AF_INET)
{
numberOfReplies = IcmpSendEcho(hIcmp, ((LPSOCKADDR_IN)&address)->sin_addr.s_addr,
SendBuffer, (unsigned short) SendSize,
&SendOpts, RcvBuffer, RcvSize, Timeout);

//在该处进行返回值判断是出错

if (numberOfReplies == 0)
{
errorCode = GetLastError();

OutputMessage(TEXT("PING: transmit failed, error code %lu\r\n"),
errorCode);
}
else
{
totalReplies += numberOfReplies;

reply4 = (PICMP_ECHO_REPLY) RcvBuffer;

while (numberOfReplies--)
{
pszCur = szOutBuf;

pszCur += wsprintf(pszCur, TEXT("Reply from %hs: "), literal);

if (reply4->Status == IP_SUCCESS)
{

pszCur += wsprintf(pszCur, TEXT("Echo size=%d "), reply4->DataSize);

if (reply4->DataSize != SendSize)
{
pszCur += wsprintf(pszCur, TEXT("(sent %d) "), SendSize);
}
else
{
char *sendptr, *recvptr;

sendptr = &(SendBuffer[0]);
recvptr = (char *) reply4->Data;

for (j = 0; j < SendSize; j++)
if (*sendptr++ != *recvptr++)
{
pszCur += wsprintf(pszCur, TEXT("- MISCOMPARE at offset %d - "), j);
break;
}
}

在arm板中对板子自身的ip地址进行ping操作可以操作成功,但是对其他地址操作时则出错,
利用输出语句将IcmpSendEcho(hIcmp, ((LPSOCKADDR_IN)&address)->sin_addr.s_addr,
SendBuffer, (unsigned short) SendSize,
&SendOpts, RcvBuffer, RcvSize, Timeout);的参数进行输出
发现在执行不同的IP操作时 SendBuffer, (unsigned short) SendSize,&SendOpts, RcvBuffer会有变化
这是对本机的IP进行ping的函数中的变量值,变量值统一为16进制
Pinging Host 192.168.1.140

hicmp=1

saddress=8c01a8c0

sendbuffer=304b0

sendsize=20

sendopts=e02f2ac

rcvbuffer=34390

rcvsize=1ff8

timeout=7d0

函数返回值为1
Reply from 192.168.1.140: Echo size=32 time=1ms TTL=128

而对PC主机进行ping操作时的命令时,输出的函数参数是一样的,但是函数的返回值确实不一样,函数的返回值为0,错误输出PING: transmit failed, error code 11010
为什么两个函数的输入变量相同,函数的返回值却不同。
我想请教下,这方面的出错是驱动配置哪方面的问题?
...全文
1065 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
浩洋天下 2012-10-16
  • 打赏
  • 举报
回复
这个问题怎么解决的,求指教。可以可以发邮件:
zhang.tianxia@steadybj.com

多谢仁兄,我用的是PC104的板子。wince 6.0
xtchenaibin 2010-09-19
  • 打赏
  • 举报
回复
结贴,确实是配置的问题呵呵,谢谢wuyong_2010
xtchenaibin 2010-09-16
  • 打赏
  • 举报
回复
恩,谢谢指点,我查看一下中断和MAC的地址,我在wince中查看的arm板的MAC地址是00:00:77:55:AD:9B
wuyong_2010 2010-09-16
  • 打赏
  • 举报
回复
关于你一个动作!我和你说一下!

只要是 ping 自已的 ip 及 127.0.0.1 是一点义意都没有的!因为那样根本不会去调用到网卡驱动!在 tcp/ip 层就返回了,根本没用呀!

PING: transmit failed, error code 11010
你查一下中断是否正确及 mac 地址是否有设置好吧!

cs8900 网卡不熟,但是大同小异,多半都是这样的问题!
xtchenaibin 2010-09-16
  • 打赏
  • 举报
回复
我的电脑的防火墙已经关闭了啊,我之前用开发板测试的时候,可以ping成功,应该不是网络的问题吧
bobdding 2010-09-16
  • 打赏
  • 举报
回复
查一查你的电脑和路由器的防火墙设置

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧