码迷,mamicode.com
首页 > 其他好文 > 详细

uboot dm9000驱动故障

时间:2014-05-28 18:54:24      阅读:483      评论:0      收藏:0      [点我收藏+]

标签:style   c   class   blog   code   java   

手头有一块6410开发板,已经有别人提供的uboot代码(基于2011.06),但是在检测dm9000时显示下面的输出:

bubuko.com,布布扣
Net:   No ethernet found.
bubuko.com,布布扣

当然其他网络命令例如ping等都执行失败。

但是在(include/configs/*6410*.h)下添加一行(增加debug)信息:

bubuko.com,布布扣
#define DEBUG
bubuko.com,布布扣

那么就能够检测到dm9000:

bubuko.com,布布扣
Net:   dm9000
bubuko.com,布布扣

配置ip地址后执行ping命令结果如下:

bubuko.com,布布扣
hwgw # setenv ipaddr 192.168.211.212
hwgw # ping 192.168.211.2
Trying dm9000
dm9000 i/o: 0x18000300, id: 0x90000a46 
DM9000: running in 16 bit mode
MAC: 00:12:39:8f:ad:b3
operating at 100M full duplex mode
Using dm9000 device
sending ARP for 02d3a8c0
ARP broadcast 1
packet received
packet received
Receive from protocol 0x806
Got ARP
Got ARP REPLY, set server/gtwy eth addr (00:e0:4c:26:51:75)
Got it
packet received
packet received
Receive from protocol 0x800
Got IP
len=28, v=45
host 192.168.211.2 is alive
bubuko.com,布布扣

 当前开发板没有jtag口,只能通过打印的方式来进行调试,大概试了有一天多时间,

在dm9000_initialize等函数中加入类似printf("hello\n");之类的代码时,会出现错误.

另外,如果添加#define CONFIG_DM9000_DEBUG配置,也会出现相同的错误。

具体错误信息就是在显示下面的信息后就重启uboot:

bubuko.com,布布扣
DRAM: 128M
bubuko.com,布布扣

而该信息恰好是board_init_f中接近于最后几行的代码,board_init_f中最后一行是调用relocate_code函数,

所以我怀疑这种情况下有可能relocate_code失败引起的。而2011.06版本乃至以后版本的uboot都采用类似的代码,
都是在board_init_f最后执行relocate_code,然后再执行board_init_r。而这个relocate_code是用汇编代码编写,

出错后很难找出故障原因,可能还不如老版本(老版本中relocate_code在board_init_f之前就执行完毕了)的更容易移植。

 

这个bug暂时也没法调试成功,但不影响正常使用 ,留到以后对uboot有了更深入了解后再来看这个问题。

 

 

 

uboot dm9000驱动故障,布布扣,bubuko.com

uboot dm9000驱动故障

标签:style   c   class   blog   code   java   

原文地址:http://www.cnblogs.com/qiaoqiao2003/p/3753264.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!