關於6410板文件的dm9000的平臺設備地址
轉自csdn
#define CONFIG_DM9000_BASE 0x20000300
#define DM9000_IO 0x20000000
#define DM9000_DATA 0x20000004
這幾個數值代表的地址是從哪裏得到的,我翻了MINI2440的原理圖和S3C2440的芯片手冊沒看懂從哪裏找網卡的地址,請老師指導一下
tiny6410/mini6410開發板上DM9000與S3C6410的連接關系入手。下面是兩者之間的連接示意圖:
DM9000的訪問地址主要是由CMD和CS#這兩個端口的連接方式來確定的,CS#是DM9000的片選引腳,CMD引腳在芯片手冊中描述如下:
CMD pin :
Command Type
When high, the access of this command cycle is DATA port
When low, the access of this command cycle is INDEX port
DM9000的CS#接的是S3C6410靜態內存區(物理地址為0x10000000~0x3fffffff)的Bank1片選nCS1引腳(對應起始物理地址為0x18000000),CMD引腳則接的是S3C6410地址總線的Xm0ADDR2位。因此可以確定,DM9000的INDEX端口地址是0x18000000(Xm0ADDR2=0),DATA端口的地址是0x18000004(Xm0ADDR2=1)。
註意: 由上面的分析可以知道,DM9000的尋址僅僅取決於其CMD和CS#兩個引腳的接法。也就是說,即使讀者要將訪問地址改為“0x18000000 + 0x300”(事實上在友善之臂提供的uboot以及其他一些資料中就是用的這個地址),同樣能夠正常的訪問到網卡的INDEX端口。
提示: 確定了DM9000的INDEX和DATA端口地址,我們就有了訪問網卡的途徑。讀網卡寄存器的方法是:先向INDEX端口寫入寄存器的地址,再從DATA端口讀出該寄存器的值。寫寄存器的方法與之對應:先向INDEX端口寫入寄存器的地址,再向DATA端口寫入值。通過I/O端口讀寫網卡寄存器的方法在驅動中由ior()、iow()這來兩個函數實現。
|
http://blog.csdn.net/gooogleman/article/details/7533348
關於6410板文件的dm9000的平臺設備地址