打印

为什么我的 lpc2366 的mac配置寄存器 不能清零?

[复制链接]
1610|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kakku|  楼主 | 2009-6-2 09:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在自己布的LPC2366+DM9161A板子上跑zlg tcpip协议栈。程序能正常下载,Go,没反应。 Stop,  

 

AXD 跳出error对话框 

  RDI severe Error 00602: Can't halt targe and make it  enter DEBUG mode 。

 

之后,h-jtag能读到芯片的内核,读flash出错。

 

开始以为是分散加载的问题,在网上查了查,好像不是。

 

 

擦除后,重新jtag,单步调发现程序死在

MAC_MAC1 = 0x0;  /* deassert all of the above soft resets in MAC1 */

的地方。试了几次发现,MAC_MAC1 ,MAC_MAC2 一写零就会死掉。

以下是初始化代码

 

    PCONP |= 0X40000000; 
    PINSEL2 = 0x50150105;
    PINSEL3 = 0x00000005; /* selects port*/
        
    dulxp = MAC_CLRT;
    dulxp = MAC_MAXF;
    MAC_MAC1 = 0xCF00; /* [15],[14],[11:8] -> soft resets all MAC internal modules */
    MAC_COMMAND = 0x0038; /* reset all datapaths and host registers */

    for ( i = 0; i < 0x40; i++ ); /* short delay after reset */

   MAC_MAC1 = 0x0;

在这里就执行不下去了,每次都会死掉。注释掉这条语句,其他的写零(如:MAC_COMMAND &= ~0x02;)也会死掉。

 

分散加载:

ROM_LOAD 0x00000000
{
    ROM_EXEC 0x00000000
    {
        Startup.o (vectors, +First)
        * (+RO)
    }

    IRAM 0x40000000
    {
        Startup.o (MyStacks)
         * (+RW,+ZI)
    }

    HEAP +0 UNINIT
    {
        Startup.o (Heap)
    }

    STACKS_BOTTOM +0
    {
        Startup.o (StackBottom)
    }

    STACKS 0x40008000 UNINIT    ;for LPC2366/68/78
    {
        Startup.o (HeapTop)
        Startup.o (Stacks)
    }
    
}

 

编译信息:

Total RO  Size  32916(32.14kB)

Total RW Size  25569(24.97kB)

Total ROM Size  32948(32.18kB)

 

现在感觉,不像是分散加载的问题,但不知道MAC配置寄存器写入零会出错。请高手赐教

相关帖子

沙发
kakku|  楼主 | 2009-6-4 18:36 | 只看该作者

以后的人不要再犯

自己顶,

经过两天的郁闷,终于找到原因了,原来是phy芯片的晶振坏了。赛格的货不可靠啊。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

6

帖子

0

粉丝