modernhill
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分98分
  • 威望278点
  • 贡献值0点
  • 好评度172点
  • 原创分0分
  • 专家分0分
阅读:5350回复:4

DM9000读取ID失败

楼主#
更多 发布于:2008-10-22 16:12
EBOOT中在初始化DM9000之前读取其ID一直返回0,下面是程序:
#define BANK        0xA6000000           //系统将片选3连接AEN,此为映射后虚拟地址
#define IOBase      (BANK | 0x300)     //电路是把SA8和SA9接高电平,SA4-SA7接地,SPEC上有“SA6-SA4 are matched with strap pins TXD2-0。。。”,有点不明白。。。
#define DataBase    (BANK | 0x304)      
uint8 ReadReg(uint8 offset)
{
        *((volatile uint8 *)(IOBase)) = (uint8)(offset);
        return ((uint8)*((volatile uint8 *)(DataBase)));
}

int32 Probe(void)
{
         uint32 id;
         id  = ReadReg(0x28) << 0;
         id |= ReadReg(0x29) << 8;
         id |= ReadReg(0x2A) << 16;
         id |= ReadReg(0x2B) << 24;    

         //这里id应该是0x90000A46
         return id;
}

开发板是周立功的2410开发板,用其提供的启动代码DM9000可以实现下载操作,我想硬件电路应该没有问题吧。。。由于他们不提供源码,我从网上下的关于DM9000的源码,正在研究中,可是现在ID都读不通,读写寄存器都不行:(,哪位兄弟可以帮忙指点一二?
modernhill
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分98分
  • 威望278点
  • 贡献值0点
  • 好评度172点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-10-22 21:47
奇怪的事情发生了,我用nGCS1的地址(物理地址0x08000300对应的虚拟地址)读ID居然能返回0x2b2a2928,虽然也不对,但是好象是把片内的地址读出来了,网上搜了一下,读出这个值只要修改延时就可以了,现在还不清楚怎样修改,不过我是更糊涂了。。。。郁闷!
modernhill
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分98分
  • 威望278点
  • 贡献值0点
  • 好评度172点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-10-23 15:13
仔细研究了一下SPEC,可能是memory controller关于片选3的参数导致这个问题,主要的应该是BWCON和BANKCON3这两个寄存器,目前的设置如 :
BWCON中:ST3=1, WS3=1,DW3=16bits宽
BANKCON3=0x1F7C
简略的看了一下SPEC,不是很明白为什么这么设置,哪位兄弟能否告知这样的设置正确吗?
继续研究中。。。
liulangxing
驱动牛犊
驱动牛犊
  • 注册日期2008-07-07
  • 最后登录2009-06-12
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-10-28 15:10
uint8 ReadReg(uint8 offset)
{
        *((volatile uint8 *)(IOBase)) = (uint8)(offset);
        return ((uint8)*((volatile uint8 *)(DataBase)));
}
这个函数里面写IOBase和读DataBase之间要加延时的吧,

DM9000A的寄存器读取要这样子的

第一步把reg地址位写入dm9000A index端口(即CPU片选地址+0x300)

第二步从DM9000A数据端口读写register的值

中间肯定要加一个延迟的吧
axw_bab
驱动牛犊
驱动牛犊
  • 注册日期2011-12-02
  • 最后登录2012-01-04
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2011-12-02 17:21
爱欣文科技有限公司提供免费得技术支持,如果有需要我们可以相互探讨。mail:bab_ren@axwdragon.com   T:134 2896 8359
爱欣文科技公司提供DM9000/DM9161系列的技术支持及产品,欢迎咨询 联系任先生E-mail:bab_ren@axwdragon.com T:134 2896 8359
游客

返回顶部