CONFIG_DM9000_BASE 0x20000300 ??????

来源:互联网 发布:2016半年报数据大全 编辑:程序博客网 时间:2024/05/05 01:08

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,其他位可以随便设置。