DM9000网卡原理与基地址设置
從上面可以看出DM9000的地址總線就一根,它不像CS8900那樣地址總線和數據總線都齊全。而這里只有一根地址線(CMD),16跟數據線,所以可以確定位寬為16位,而地址線為什么只有一根,這是DM9000決定的,看手冊可以知道CPU總線只訪問它的兩個地址,CMD管腳為0時,數據線送的是DM9000的寄存器地址,CMD管腳為1時,數據線上送的是16位的寄存器數據,所以對DM9000的操作至少需要兩步:先寫地址,再寫(讀)數據。他不像其他類內存總線那樣直接把數據寫到地址傳輸一次就可以了,而他要傳輸兩次,因為他的總線地址就退化成了類似于NAND的ALE信號,就是地址和數據的區分信號了,而不是DM9000里面操作的寄存器地址。
上面的片選信號為:nLAN_CS,鏈接到S3C2440的CS4,對應BANK4,所以基地址為0X20000000,網上很多人討論為什么有的開發板基地址設置為0X20000300,這個是沒有任何作用的,之前分析了,DM9000對于CPU的地址線只認識一根線,只要這根線對應的CPU傳送的地址的對應位匹配就可以了,上面接到LADDR2,也就是說:
傳寄存器地址的時候操作的總線地址滿足:
以基地址起頭(0x20000000),偏移基地址LADDR2為0(低四位:0000),也就是寫的時候總線地址為:0x20000000
傳寄存器數據的時候操作的總線地址滿足:
以基地址起頭,偏移基地址LADDR2為1 (低四位:0100),也就是寫的時候總線地址為:0x20000004
所以首先滿足總線地址在BANK4里面(這樣CS4才能自動選中),其次滿足最后四位為0(傳送寄存器地址)或4(傳送數據)就可以了,滿足這兩個條件地址隨便設。
所以上面0x20000300這個多出的300H沒任何意義,他滿足上面條件,你設置為0x20000400,0x20000320,0x23456780這些地址都沒任何影響。
上面分析知道了基地址,位寬,再簡要說下中斷引腳:
這里的IRQ_LAN接的是S3C2440的ENT7,用的外部中斷7,這個中斷用于接收數據時觸發的,中斷服務函數處理接收數據,向協議層上報接收數據。這個中斷號要和驅動里面的對應起來。
DM9000移植的要點:
1 基地址(看CS接口)
2 CPU的寄存器設置:位寬,時序等設置
3 設置中斷號(看中斷接口)
總結
以上是生活随笔為你收集整理的DM9000网卡原理与基地址设置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net core 在Ubuntu
- 下一篇: 00_小知识点