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