Mini2440 , DM9000EP 。
DM9000,AEN引脚接cpu引脚nGCS4,DM9000映射到BANK4,对应地址空间0X20000000-0X27FFFFFF
DM9000的数据引脚SD0-15依次接cpu数据引脚LDATA0-15,
DM9000,CMD引脚接cpu地址线LADDR2
When high, the access of this command cycle is DATA port
When low, the access of this command cycle is ADDRESS port
因此,SD0-15复用为地址线和数据线,此处的地址线和数据线针对DM9000而言,
与其他设备无关,千万不能与开发板的地址线和数据线混淆。
地址线描述DM9000内部寄存器索引,而数据线描述定入对应寄存器的值。
CPU_ADDR CPU_DATA
| CMD=0 | CMD=1
+---+---+ +----------+
| | | |
片选 CMD DM_ADDR DM_DATA
CPU_ADDR:0010 0XXX XXXX XXXX XXXX XXXX XXXX X{0,1}XX
| 片选 | |CMD|
bit[31,27]->片选
bit[2]->CMD
而cpu的地址线只有LADDR2与DM9000相连,因此只有这一条线的信号对DM9000有效,
而高五位是由nGCS4指定(推测),所以CPU_ADDR中的其他位没用(当然bit[0]会涉及到对齐问题,与cpu的设置有关)。
网上有很多文章提到DM9000的DM9000_BASE=0x20000300,根据我的理解和实验,
并非如此,如之前分析,只需要保证bit[32,27]=00100,bit[2]根据当前的是设置DM_ADDR还是DM_DATA,
分别对应0和1,其他位可以随便设置。