这个问题在我已经解决了,我的方法是将dm9000x.c中的eth_halt()函数中的内容注释掉(即eth_halt()函数是个什么也不做的函数),然后在lib_arm文件夹下的board.c中进入命令等待界面前的语句前面加入以下语句:
#if defined(CONFIG_DRIVER_DM9000)
extern init eth_init(bd_t *bd);
#endif
#if defined(CONFIG_DRIVER_DM9000)
eth_init(gd->bd);
#endif
这两句语句的意思是在u-boot启动的时候就初始化网卡,而不是ping的时候再初始化网卡,并且由于eth_halt()函数什么也不做,所以网卡就不会ping过之后就halt导致主机发回的信息还没有被接收的时候就停止工作了。
试验证明绝大多数时间是可以ping通的,偶尔一两次失败。
祝大家好运!