在自己布的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配置寄存器写入零会出错。请高手赐教
|