uboot dm9000驱动故障
手头有一块6410开发板,已经有别人提供的uboot代码(基于2011.06),但是在检测dm9000时显示下面的输出:
Net: No ethernet found.
当然其他网络命令例如ping等都执行失败。
但是在(include/configs/*6410*.h)下添加一行(增加debug)信息:
#define DEBUG
那么就能够检测到dm9000:
Net: dm9000
配置ip地址后执行ping命令结果如下:
hwgw # setenv ipaddr 192.168.211.212
hwgw # ping 192.168.211.2
Trying dm9000
dm9000 i/o: 0x18000300, id: 0x90000a46
DM9000: running in bit mode
MAC: :::8f:ad:b3
operating at 100M full duplex mode
Using dm9000 device
sending ARP for 02d3a8c0
ARP broadcast
packet received
packet received
Receive from protocol 0x806
Got ARP
Got ARP REPLY, set server/gtwy eth addr (:e0:4c:::)
Got it
packet received
packet received
Receive from protocol 0x800
Got IP
len=, v=
host 192.168.211.2 is alive
当前开发板没有jtag口,只能通过打印的方式来进行调试,大概试了有一天多时间,
在dm9000_initialize等函数中加入类似printf("hello\n");之类的代码时,会出现错误.
另外,如果添加#define CONFIG_DM9000_DEBUG配置,也会出现相同的错误。
具体错误信息就是在显示下面的信息后就重启uboot:
DRAM: 128M
而该信息恰好是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有了更深入了解后再来看这个问题。
备注:几天后我解决了这个问题,上述表述有些是不准确的,bug详细描述及解决方法见我的博文《uboot 版本号生成过程》。
uboot dm9000驱动故障的更多相关文章
- Mini2440 DM9000 驱动分析(一)
Mini2440 DM9000 驱动分析(一) 硬件特性 Mini2440开发板上DM9000的电气连接和Mach-mini2440.c文件的关系: PW_RST 连接到复位按键,复位按键按下,低电平 ...
- 【linux驱动分析】之dm9000驱动分析(六):dm9000_init和dm9000_probe的实现
一.dm9000_init 打印出驱动的版本,注冊dm9000_driver驱动,将驱动加入到总线上.运行match,假设匹配,将会运行probe函数. 1 static int __init 2 d ...
- uboot的驱动模型理解
uboot的驱动模型,简称dm, 具体细节建议参考./doc/driver-model/README.txt 关于dm的三个概念: uclass:一组同类型的devices,uclass为同一个gro ...
- 基于335X的UBOOT网口驱动分析
基于335X的UBOOT网口驱动分析 一.软硬件平台资料 1. 开发板:创龙AM3359核心板,网口采用RMII形式 2. UBOOT版本:U-Boot-2016.05,采用FDT和DM. 参考链 ...
- Xilinx Uboot网卡驱动分析
1.MAC控制器.网卡.PHY.MDIO.mii.gmii.rgmii概念扫盲 网卡在功能上包含OSI模型的两个层,数据链路层和物理层.物理层定义了数据传送与接收所需要的电与光信号.线路状态.时钟基准 ...
- 【linux驱动分析】之dm9000驱动分析(三):sk_buff结构分析
[linux驱动分析]之dm9000驱动分析(一):dm9000原理及硬件分析 [linux驱动分析]之dm9000驱动分析(二):定义在板文件里的资源和设备以及几个宏 [linux驱动分析]之dm9 ...
- DM9000驱动移植在mini2440(linux2.6.29)和FS4412(linux3.14.78)上的实现(deep dive)篇一
关于dm9000的驱动移植分为两篇,第一篇在mini2440上实现,基于linux2.6.29,也成功在在6410上移植了一遍,和2440非常类似,第二篇在fs4412(Cortex A9)上实现,基 ...
- [国嵌攻略][065][DM9000驱动程序设计]
移植代码:通过已有的可用的代码修改到新环境下运行. 代码编写: 初始化网卡 1.选中网卡 nLAN_CS BWSCON(0x48000000) DW4:01 16bit BANKCON4(0x4800 ...
- uboot 网络驱动模型
原文:https://blog.csdn.net/zhouxinlin2009/article/details/45390065 UBOOT的PHYCHIP配置 PHYCHIP的配置位于 includ ...
随机推荐
- MFC中使用用户剪贴板
代码逻辑: 拷贝功能: 1.从编辑控件中获取文本. 2.打开并清空剪贴板.(OpenClipboard,EmptyClipboard) 3.创建一个全局缓冲区.(GlobalAlloc) 4.锁定缓冲 ...
- 如何用Qt Creator输出helloworld
0 引言:相比于MFC只要直接在VS上搭建,Qt的配置就相对复杂了,Qt新手上路,老司机绕道,记录下配置Qt的整个过程,直到最终用C++输出“hello world”. 搭建环境:Win10 + qt ...
- java爬取网页内容 简单例子(1)——使用正则表达式
[本文介绍] 爬取别人网页上的内容,听上似乎很有趣的样子,只要几步,就可以获取到力所不能及的东西,例如呢?例如天气预报,总不能自己拿着仪器去测吧!当然,要获取天气预报还是用webService好.这里 ...
- 图书源代码下载: Modern Differential Geometry of CURVES and SURFACES with Mathematica
http://alpha01.dm.unito.it/personalpages/abbena/gray/ Contents 1. Curves in the Plane | 2. Famou ...
- Oracle扩容表空间
1.程序报错,无法进行修改操作,通过日志,看到如下错误 2.通过google查询,问题是表空间文件不够了 "表空间大小(M)",(a.bytes "已使用空间(M)&qu ...
- 最长上升子序列算法(n^2 及 nlogn) (LIS) POJ2533Longest Ordered Subsequence
问题描述: 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的.对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列 ...
- Hibernate错误:Could not bind factory to JNDI
使用hibernate时,将hibernate.cfg.xml中 <session-factory name="SessionFactory">的那么属性去掉即可.因为 ...
- docker镜像上传到阿里云
目前上传本地镜像到网上有多种途径,一个是上传到hub上,一个是阿里云镜像仓库,还要其他服务器. 上传到hub上实在是太慢了,我的服务器用的是阿里云,所以选择上传到阿里云镜像仓库中. 前提条件:linu ...
- 编写项目readme文件
1.使用markdown 编写项目说明,markdown 编辑器推荐使用 小书匠 2.在当前项目根目录下使用cmd中的tree 命令 生成项目结构文件到指定的txt文件中,具体命令为:tree d: ...
- flask自定义session
根据内置session原理可以进行session的定制: #!/usr/bin/env python # -*- coding:utf-8 -*- import uuid import json fr ...