我原来的开发板(FL2440)用的是飞凌提供的2.6.28,最近我想把它升级到2.6.33。按照厂商给出的移植文档,好不容易能让板子正常启动,这时我连上交叉网线,却发现怎么也ping不通主机了(防火墙关掉了,开发板和主机处于同一网段)。
以下是ifconfig信息
# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:12:34:56:80:49
inet addr:192.168.1.15 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:51 Base address:0xa300
lo Link encap:Local Loopback
LOOPBACK MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
我用ifconfig lo 127.0.0.1设置lo后能成功ping 127.0.0.1 ping 192.168.1.15确ping不通主机,这是怎么回事呢?
**********************************附部分启动信息
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 2048 (order: 2, 16384 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 2048)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
NetWinder Floating Point Emulator V0.97 (extended precision)
JFFS2 version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
ROMFS MTD (C) 2007 Red Hat, Inc.
init started: BusyBox v1.6.0 (2008-01-09 17:10:28 CST) multi-call binary
starting pid 933, tty '': '/etc/init.d/rcS'
mount: mounting none on /dev/pts failed
mount: mounting tmpfs on /dev/shm failed
dm9000 dm9000.0: WARNING: no IRQ resource flags set.
eth0: link down
ifconfig: SIOCSIFADDR: No such device
|
第一步可以在网卡处用hub听下发出的报文。
可以确认1、是因为没有对方机器的mac地址,ping包没有发出去,还是ping包发出去没有回应。
2、如果连对方机器的mac地址都没有的话,就应该怀疑是网卡的问题了。
查看网卡是否有中断响应?
如果没有,证明网卡驱动写的有问题。
如果有的话,可以通过在网卡驱动上加调试信息确认问题
|
肯定是网卡驱动的问题。
ping 127.0.0.1走的是内部协议栈,lo接口就是一个“软件假接口”。
127.0.0.1能通,说明你的TCP/IP协议栈没问题。
从上面看,100%网卡驱动的问题。
|
dm9000 dm9000.0: WARNING: no IRQ resource flags set.
eth0: link down
ifconfig: SIOCSIFADDR: No such device
很明显,你的网卡驱动没有移植好
参见原来的改吧改吧就好了
|
no IRQ resource flags set
你的dm9000网卡驱动没有移植成功,中断那块有问题。
|
但能ping通自身ip 192.168.1.15说明什么呢
============================================
ping通自身走的是协议栈(不涉及MAC地址解析之类的驱动封包处理),说明你驱动把网卡加载上了,但是内部工作不对。
操作系统上看应该是有个eth0的接口,但是驱动本质没加载对。
|
接收到数据包后无法中断吧。
先试试看Uboot中能够成功ping,再比较uboot中对中断的设置。
|
赞成