ERROR: resetting DM9000 -> not responding dm9000 not found at 0x88000000問題解決


ERROR: resetting DM9000 -> not responding                                       
dm9000 not found at 0x88000000 id: 0x00000000  

從錯誤信息來分析。id號打印出來是錯誤的。
先定位錯誤文件:
root@xjg:/home/xjg/u-boot-2012.10# grep -r "ERROR: resetting DM9000"
drivers/net/dm9000x.c: printf("ERROR: resetting DM9000 -> not responding\n");

發現一開始reset函數就錯誤發生。說明是前面的步驟有問題。
我檢查了下你的lowlevel_init.S文件,發現時鍾初始化有問題。
終於定位是在以下這句  凝視了就能夠。


210     /* CLK_IP1 */
211 /*  ldr r1, =0xe9fdf0f9         @ FIMD[0] USBOTG[16]
212                         @ NANDXL[24]
213     str r1, [r0, #0x464]        @ S5PC110_CLK_IP1
214 */

以下看看這一步為什么不正確?
S5PV210 can disable the clock operation of each IP if it is not required。
//看這樣子像是屏蔽時鍾的寄存器
改動成以下這個樣子就能夠了。說明這個寄存器的第26位(SROM時鍾)是不能屏蔽的。
210     /* CLK_IP1 */
211     ldr r1, =0xeDfdf0f9         @ FIMD[0] USBOTG[16]
212                         @ NANDXL[24]
213     str r1, [r0, #0x464]        @ S5PC110_CLK_IP1

214 

為什么和SROM時鍾相關呢?從原理圖上能夠知道dm9000是使用的自己的時鍾源,dm9000芯片外接了一個25MHz的晶振。


感謝物聯網大講堂朱老師的指導:
210用srom接口來和網卡通信。還記得dm9000是怎么接到210上面的嗎?csn1片選信號。


就是說dm9000是接在210的SROM  bank1上面的。這就能夠解釋為什么SROM時鍾不能關閉了。。。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM