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