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

[复制链接]
 楼主| kakku 发表于 2009-6-2 09:58 | 显示全部楼层 |阅读模式
在自己布的LPC2366+DM9161A板子上跑zlg&nbsp;tcpip协议栈。程序能正常下载,Go,没反应。&nbsp;Stop,&nbsp;&nbsp;<br /><br />&nbsp;<br /><br />AXD&nbsp;跳出error对话框&nbsp;<br /><br />&nbsp;&nbsp;RDI&nbsp;severe&nbsp;Error&nbsp;00602:&nbsp;Can't&nbsp;halt&nbsp;targe&nbsp;and&nbsp;make&nbsp;it&nbsp;&nbsp;enter&nbsp;DEBUG&nbsp;mode&nbsp;。<br /><br />&nbsp;<br /><br />之后,h-jtag能读到芯片的内核,读flash出错。<br /><br />&nbsp;<br /><br />开始以为是分散加载的问题,在网上查了查,好像不是。<br /><br />&nbsp;<br /><br />&nbsp;<br /><br />擦除后,重新jtag,单步调发现程序死在<br /><br />MAC_MAC1&nbsp;=&nbsp;0x0;&nbsp;&nbsp;/*&nbsp;deassert&nbsp;all&nbsp;of&nbsp;the&nbsp;above&nbsp;soft&nbsp;resets&nbsp;in&nbsp;MAC1&nbsp;*/<br /><br />的地方。试了几次发现,MAC_MAC1&nbsp;,MAC_MAC2&nbsp;一写零就会死掉。<br /><br />以下是初始化代码<br /><br />&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;PCONP&nbsp;|=&nbsp;0X40000000;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL2&nbsp;=&nbsp;0x50150105;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL3&nbsp;=&nbsp;0x00000005;&nbsp;/*&nbsp;selects&nbsp;port*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dulxp&nbsp;=&nbsp;MAC_CLRT;<br />&nbsp;&nbsp;&nbsp;&nbsp;dulxp&nbsp;=&nbsp;MAC_MAXF;<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_MAC1&nbsp;=&nbsp;0xCF00;&nbsp;/*&nbsp;[15],[14],[11:8]&nbsp;-&gt&nbsp;soft&nbsp;resets&nbsp;all&nbsp;MAC&nbsp;internal&nbsp;modules&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_COMMAND&nbsp;=&nbsp;0x0038;&nbsp;/*&nbsp;reset&nbsp;all&nbsp;datapaths&nbsp;and&nbsp;host&nbsp;registers&nbsp;*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;0x40;&nbsp;i++&nbsp;);&nbsp;/*&nbsp;short&nbsp;delay&nbsp;after&nbsp;reset&nbsp;*/<br /><br />&nbsp;&nbsp;&nbsp;MAC_MAC1&nbsp;=&nbsp;0x0;<br /><br />在这里就执行不下去了,每次都会死掉。注释掉这条语句,其他的写零(如:MAC_COMMAND&nbsp;&=&nbsp;~0x02;)也会死掉。<br /><br />&nbsp;<br /><br />分散加载:<br /><br />ROM_LOAD&nbsp;0x00000000<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;ROM_EXEC&nbsp;0x00000000<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(vectors,&nbsp;+First)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RO)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IRAM&nbsp;0x40000000<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(MyStacks)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;(+RW,+ZI)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;HEAP&nbsp;+0&nbsp;UNINIT<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(Heap)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;STACKS_BOTTOM&nbsp;+0<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(StackBottom)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;STACKS&nbsp;0x40008000&nbsp;UNINIT&nbsp;&nbsp;&nbsp;&nbsp;;for&nbsp;LPC2366/68/78<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(HeapTop)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Startup.o&nbsp;(Stacks)<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />&nbsp;<br /><br />编译信息:<br /><br />Total&nbsp;RO&nbsp;&nbsp;Size&nbsp;&nbsp;32916(32.14kB)<br /><br />Total&nbsp;RW&nbsp;Size&nbsp;&nbsp;25569(24.97kB)<br /><br />Total&nbsp;ROM&nbsp;Size&nbsp;&nbsp;32948(32.18kB)<br /><br />&nbsp;<br /><br />现在感觉,不像是分散加载的问题,但不知道MAC配置寄存器写入零会出错。请高手赐教<br />
 楼主| kakku 发表于 2009-6-4 18:36 | 显示全部楼层

以后的人不要再犯

自己顶,<br /><br />经过两天的郁闷,终于找到原因了,原来是phy芯片的晶振坏了。赛格的货不可靠啊。<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

4

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部