DM9000調試記錄

最近在調試DM9000,遇到了很多問題,在網上幾乎也能找到同樣的問題,但是答案千變萬化,弄的我這樣不行,那樣也不行。

1、遇到的第一個問題,網卡不識別,出現的調試信息就是:

dm9000 dm9000.0:??DM9000E read wrong id 0x00000040
dm9000 dm9000.0:??DM9000E read wrong id 0x00000040
dm9000 dm9000.0:??DM9000E read wrong id 0x00000046

dm9000 not found

其中id經常發生變化,常見的有0x00000000或者?0x2b2a2928

這個問題主要在四個方面去查:CMD信號,看看CMD信號是否連接到ADDR2(最好不要給Addr1上連接,驅動修改起來比較困難)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Int信號,看看Int信號是否連接到EINT的管腳,這個可以隨便選擇,選擇完后,需要在驅動里面進行修改,修改之處在:

[2] = {
.start = IRQ_EINT7,
.end = IRQ_EINT7, //外部中斷改這個地方
.flags = IORESOURCE_IRQ | IRQF_TRIGGER_RISING,
}

從上面可以看到,INT管腳使用的是EINT7,其余地方不用修改

            RST信號:在不確定RST信號連接的管腳時,最好直接接到地,這樣比較保險

             cs信號:CS的信號可選4個,這個是情況而定,如果選擇了NGCS3,那么在網卡驅動中要做對應的修改,修改之處在:

static struct resource s3c_dm9k_resource[] =
{
[0] =
{
.start = S3C2410_CS3, //網卡連接在CS3總線上 ,總線改這個地方
.end = S3C2410_CS3 + 3,
.flags = IORESOURCE_MEM,
},
[1] =
{
.start = S3C2410_CS3 + 4, //S3C2410_CS3 + 2,
.end = S3C2410_CS3 + 4 + 3, //S3C2410_CS3 + 2 + 3, //addr改這個地方
.flags = IORESOURCE_MEM,
},

這樣,如果芯片焊接的沒問題,那么DM9000在系統啟動的時候就可以發現了,啟動后出現如下的信息,表明DM9000已經發現了:

dm9000 Ethernet Driver, V1.31
*****dm9000.c line 1248 db->addr_res=-1068488320
****dm9000.c line 1285 i=0
***dm9000.c line 1270 db->io_addr=-998113280
***dm9000.c line 1289 db->io_data=-998096892
eth0 (dm9000): not using net_device_ops yet
eth0: dm9000e at c4820000,c4824004 IRQ 52 MAC: 00:4a:00:00:00:00 (chip)

這樣第一個問題就可以解決了,但是有時候DM9000發現了,但是不能通信,就是Ping不通,當插上網線后出現如下的信息:

eth0: ?eth0: link up, 100Mbps, full-duplex, no lpa?

這個問題調試了好長時間,一直以為是驅動問題,網上有人說是6.8K電阻的精度不夠或者PCB的走線有問題等(搞的差點重新繪制電路板了)

經過檢查原來是有個信號在作怪,我在DM9000上掛了一個AT93C46的存儲器,是用來存儲MAC地址的,其實很簡單就是SPI接口,但是就是應為疏忽了這點導致花費了很多功夫。

開始我沒有在EECS信號上加上拉電阻,當系統在運行udhcpc (v1.15.1) started 的時候,就會彈出一大堆的信息,沒有抓下來圖,大概就是Time out之類的信息,然后下次插上網卡后可以識別,但是彈出eth0: ?eth0: link up, 100Mbps, full-duplex, no lpa 。

解決的辦法就是:首先將AT93C46給去掉了,然后就已經可以通信成功,但是MAC地址不能存儲。在EECS信號線上加了4.7K的上拉電阻,焊接上AT93C46就可以通信了,Ping某個IP地址就可成功。

PING 172.20.223.40 (172.20.223.40): 56 data bytes
64 bytes from 172.20.223.40: seq=0 ttl=64 time=2.932 ms
64 bytes from 172.20.223.40: seq=1 ttl=64 time=1.027 ms
64 bytes from 172.20.223.40: seq=2 ttl=64 time=0.894 ms
64 bytes from 172.20.223.40: seq=3 ttl=64 time=0.846 ms
64 bytes from 172.20.223.40: seq=4 ttl=64 time=0.876 ms
64 bytes from 172.20.223.40: seq=5 ttl=64 time=0.896 ms
64 bytes from 172.20.223.40: seq=6 ttl=64 time=0.905 ms
64 bytes from 172.20.223.40: seq=7 ttl=64 time=0.890 ms
64 bytes from 172.20.223.40: seq=8 ttl=64 time=1.454 ms
64 bytes from 172.20.223.40: seq=9 ttl=64 time=0.879 ms
64 bytes from 172.20.223.40: seq=10 ttl=64 time=0.863 ms
64 bytes from 172.20.223.40: seq=11 ttl=64 time=0.808 m

?

轉載于:https://www.cnblogs.com/wxy-cool/archive/2012/10/30/2746930.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379176.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379176.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379176.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python---二分法查找

輸入n個數&#xff0c;通過二分法查找該數的下標 def binarySearch(arr,value):m 0#開始n len(arr#最后)while m<n:mid(mn)//2#計算中間位置if valuearr[mid]:#查找成功&#xff0c;返回元素對應的位置return midelif value>arr[mid]:#在后面一半元素中繼續查找mmid1e…

Python datetime isocalendar()方法與示例

Python datetime.isocalendar()方法 (Python datetime.isocalendar() Method) datetime.isocalendar() method is used to manipulate objects of datetime class of module datetime. datetime.isocalendar()方法用于操作模塊datetime的datetime類的對象。 It uses a dateti…

ASP.NET 技術(附翻譯)

1.構建 ASP.NET 頁面ASP.NET 和ASP.NET結構ASP.NET 是微軟.NET framework整體的一部分, 它包含一組大量的編程用的類&#xff0c;滿足各種編程需要。 在下列的二個部分中, 你如何學會 ASP.NET 很適合的放在.NET framework, 和學會能在你的 ASP.NET 頁面中使用語言。.NET類庫假想…

SQL捕獲異常

原文地址 http://technet.microsoft.com/zh-cn/office/ms179296%28vsql.100%29在 Transact-SQL 中使用 TRY...CATCHTransact-SQL 代碼中的錯誤可使用 TRY…CATCH 構造處理&#xff0c;此功能類似于 Microsoft Visual C 和 Microsoft Visual C# 語言的異常處理功能。TRY…CATCH …

二叉樹遍歷(代碼,分析,匯編)

目錄&#xff1a;代碼&#xff1a;分析&#xff1a;匯編&#xff1a;代碼&#xff1a; BTree.h BTree.c 二叉樹&#xff08;多路平衡搜索樹&#xff09; LinkQueue.h #ifndef _LINKQUEUE_H_ #define _LINKQUEUE_H_typedef void LinkQueue;//定義隊列類型LinkQueue* LinkQueu…

Java Vector insertElementAt()方法與示例

矢量類insertElementAt()方法 (Vector Class insertElementAt() method) insertElementAt() method is available in java.util package. insertElementAt()方法在java.util包中可用。 insertElementAt() method is used to set the given element (ele) at the given (indices…

Python---查找序列的最長遞增子序列

查找序列的最長遞增子序列 什么是序列的最長遞增子序列&#xff1f; 答&#xff1a;在一個數值序列中&#xff0c;找到一個子序列&#xff0c;使得這個子序列元素的數值依次遞增&#xff0c;并且這個子序列的長度盡可能地大。這就是所謂的最長遞增子序列 from itertools impo…

SendMessage和PostMessage

SendMessage 和 PostMessage 的區別 &#xff11;、首先是返回值意義的區別&#xff0c;我們先看一下 MSDN 里的聲明&#xff1a; LRESULT SendMessage( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);BOOL PostMessage( HWND hWnd…

ffmpeg-從mp4、flv、ts文件中提取264視頻流數據

ffmpeg-從mp4、flv、ts文件中提取264視頻流數據 main.c #include <stdio.h> #include <libavutil/log.h> #include <libavformat/avio.h> #include <libavformat/avformat.h>void proc(int need_to_annexb, char* in_file, char* out_file) {AVForma…

java timezone_Java TimeZone getDSTSavings()方法與示例

java timezoneTimeZone類的getDSTSavings()方法 (TimeZone Class getDSTSavings() method) getDSTSavings() method is available in java.util package. getDSTSavings()方法在java.util包中可用。 getDSTSavings() method is used to get the number of time differences in …

Photoshop 保存PNG格式交錯和不交錯有差別

1.PNG格式是由Netscape公司開發出來的格式&#xff0c;可以用于網絡圖像&#xff0c;但它不同于GIF格式圖像只能保存256色&#xff0c;PNG格式可以保存24位的真彩色圖像&#xff0c;并且支持透明背景和消除鋸齒邊緣的功能&#xff0c;可以在不失真的情況下壓縮保存圖像。但由于…

線索化二叉樹(代碼 、分析 、匯編)

目錄&#xff1a;代碼&#xff1a;分析&#xff1a;匯編&#xff1a;代碼&#xff1a; BTree.h BTree.c 二叉樹&#xff08;多路平衡搜索樹&#xff09; SeqList.h SeqList.c 順序表 main.c #include <stdio.h> #include <stdlib.h> #include "BTree.h&qu…

Python---尋找給定序列中相差最小的兩個數字

編寫函數&#xff0c;尋找給定序列中相差最小的兩個數字 def getTwoClosestElements(arr):#先進行排序&#xff0c;使得相鄰元素最接近#相差最小的元素必然相鄰seq sorted(arr)#先進行排序dif float(inf)#無窮大#遍歷所有元素&#xff0c;兩兩比較&#xff0c;比較相鄰元素的…

ubuntu 無線 共享 上網

配置DHCP服務器 使連接到此AP的電腦 自動獲取IP 1. 安裝軟件包&#xff1a;sudo apt-get install dhcp3-server2. 修改/etc/default/dhcp3-server配置文件INTERFACES"eth1" //eth1為無線網卡的名字3. 修改/etc/dhcp3/dhcpd.conf配置文件option domain-name-servers …

Java StringBuilder getChars()方法與示例

StringBuilder類的getChars()方法 (StringBuilder Class getChars() method) getChars() method is available in java.lang package. getChars()方法在java.lang包中可用。 getChars() method is used to copy all the characters from the given arguments (int src_st, int …

Python---利用蒙特.卡羅方法計算圓周率近似值

利用蒙特.卡羅方法計算圓周率近似值 什么是蒙特.卡羅方法&#xff1f; 答&#xff1a;蒙特卡羅方法是一種計算方法。原理是通過大量隨機樣本&#xff0c;去了解一個系統&#xff0c;進而得到所要計算的值。 正方形內部有一個相切的圓&#xff0c;它們的面積之比是π/4。 這里假…

不具有繼承關系的Delegate如何進行類型轉換?

- 引自:Artech 我們知道對于兩個不具有繼承關系的兩個類型&#xff0c;如果沒有為它們定義轉換器&#xff0c;兩這之間的類型轉換是不允許的&#xff0c;Delegate也是如此。但是有時候我們卻希望“兼容”的兩種Delegate類型能夠進行轉換&#xff0c;比較典型的就是表示事件的De…

Java屬性loadFromXML()方法與示例

屬性類loadFromXML()方法 (Properties Class loadFromXML() method) loadFromXML() method is available in java.util package. loadFromXML()方法在java.util包中可用。 loadFromXML() method is used to load all the properties denoted by the XML file on the given inpu…

FLV封裝格式的分析

FLV封裝格式的分析&#xff0c;各種詳細的參數比較多沒有詳細解釋&#xff0c;這是總體的格式分布。詳細的參數說明可以參照文檔。 以flv格式內封裝的音頻流是aac、視頻流是h264分析&#xff1a; flv文件tag部分截圖&#xff1a;可以看到音頻TAG、視頻TAG是交錯存儲的

《計算機基礎復習》===數據庫技術基礎

數據庫系統三級結構&#xff1a; 數據庫系統一般劃分為三個抽象級&#xff1a;用戶級、概念級、物理級。 1&#xff09;用戶級數據庫&#xff1a;對應于外模式。它是用戶看到和使用的數據庫&#xff0c;又稱用戶視圖&#xff1b;用戶級數據庫主要由外部記錄組成&#xff0c;不同…