1. 程式人生 > >ERROR: resetting DM9000 -> not responding dm9000 not found at 0x88000000問題解決

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

id號 each erro 網卡 網卡通信 12.1 otg esp [0

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

從錯誤信息來分析。id號打印出來是錯誤的。
先定位錯誤文件:
[email protected]:/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時鐘不能關閉了。。。。

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