1. 程式人生 > >學習筆記 --- DM9000網絡卡原理與基地址設定

學習筆記 --- DM9000網絡卡原理與基地址設定

前面有文章分析了網絡卡也是屬於類記憶體匯流排的裝置,類記憶體匯流排的裝置有地址匯流排和資料匯流排,先來看下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  設定中斷號(看中斷介面)