[ZLG-ARM] 使用H-JTAG调试LPC2366出现不能时LPC2366进入DEBUG state

[复制链接]
3302|8
 楼主| feifan570 发表于 2007-7-27 17:48 | 显示全部楼层 |阅读模式
两块板都是这样,第一次可以进入,但一跑起来后,以后就出现这个问题。然后H-Flasher:提示Error:Can't&nbsp;halt&nbsp;target&nbsp;and&nbsp;make&nbsp;it&nbsp;enter&nbsp;DEBUG&nbsp;state.<br />是不是芯片坏了?
 楼主| feifan570 发表于 2007-7-29 11:27 | 显示全部楼层

芯片没有坏,但是还是调试不能通过

但是就是调试过不去,把程序贴出来,让大侠们来把把脉。这个程序参考MCB2300的EasyWeb的EMAC.C写的,几乎没有改变。<br />void&nbsp;Init_EMAC(INT8U&nbsp;MACAddr[])<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;extern&nbsp;void&nbsp;Ethernet_Handler(void);<br />//&nbsp;Keil:&nbsp;function&nbsp;modified&nbsp;to&nbsp;access&nbsp;the&nbsp;EMAC<br />//&nbsp;Initializes&nbsp;the&nbsp;EMAC&nbsp;ethernet&nbsp;controller<br />&nbsp;&nbsp;&nbsp;&nbsp;INT32U&nbsp;regv,tout,id1,id2;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Power&nbsp;Up&nbsp;the&nbsp;EMAC&nbsp;controller.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;PCONP&nbsp;|=&nbsp;0x40000000;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Enable&nbsp;P1&nbsp;Ethernet&nbsp;Pins.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;PINSEL2&nbsp;=&nbsp;0x55555555;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL2&nbsp;=&nbsp;0x50151105;<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL3&nbsp;=&nbsp;(PINSEL3&nbsp;&&nbsp;~0x0000000F)&nbsp;|&nbsp;0x00000005;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Reset&nbsp;all&nbsp;EMAC&nbsp;internal&nbsp;modules.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_MAC1&nbsp;=&nbsp;MAC1_RES_TX&nbsp;|&nbsp;MAC1_RES_MCS_TX&nbsp;|&nbsp;MAC1_RES_RX&nbsp;|&nbsp;MAC1_RES_MCS_RX&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAC1_SIM_RES&nbsp;|&nbsp;MAC1_SOFT_RES;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#0000FF>/*MAC_MAC1&nbsp;=&nbsp;0xCF00&nbsp;*/</font><br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_COMMAND&nbsp;=&nbsp;CR_REG_RES&nbsp;|&nbsp;CR_TX_RES&nbsp;|&nbsp;CR_RX_RES;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color=#0000FF>/*&nbsp;MAC_COMMAND&nbsp;=&nbsp;0x0038&nbsp;*/</font><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;A&nbsp;short&nbsp;delay&nbsp;after&nbsp;reset.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(tout&nbsp;=&nbsp;0;&nbsp;tout&nbsp;&lt&nbsp;100;&nbsp;tout++);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Initialize&nbsp;MAC&nbsp;control&nbsp;registers.&nbsp;*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_MAC1&nbsp;=&nbsp;MAC1_PASS_ALL;&nbsp;<font color=#FF0000>/*&nbsp;就在此过不去了&nbsp;&nbsp;*/</font><br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_MAC2&nbsp;=&nbsp;MAC2_CRC_EN&nbsp;|&nbsp;MAC2_PAD_EN;<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_MAXF&nbsp;=&nbsp;ETH_MAX_FLEN;<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_CLRT&nbsp;=&nbsp;CLRT_DEF;<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_IPGR&nbsp;=&nbsp;IPGR_DEF;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Enable&nbsp;Reduced&nbsp;MII&nbsp;interface.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_COMMAND&nbsp;=&nbsp;CR_RMII&nbsp;|&nbsp;CR_PASS_RUNT_FRM;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Reset&nbsp;Reduced&nbsp;MII&nbsp;Logic.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_SUPP&nbsp;=&nbsp;SUPP_RES_RMII;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(tout&nbsp;=&nbsp;0;&nbsp;tout&nbsp;&lt&nbsp;100;&nbsp;tout++);<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_SUPP&nbsp;=&nbsp;0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Put&nbsp;the&nbsp;DM9161A&nbsp;in&nbsp;reset&nbsp;mode&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;write_PHY&nbsp;(PHY_REG_BMCR,&nbsp;0x8000);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Wait&nbsp;for&nbsp;hardware&nbsp;reset&nbsp;to&nbsp;end.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(tout&nbsp;=&nbsp;0;&nbsp;tout&nbsp;&lt&nbsp;0x100000;&nbsp;tout++)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;regv&nbsp;=&nbsp;read_PHY&nbsp;(PHY_REG_BMCR);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!(regv&nbsp;&&nbsp;0x8000))&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Reset&nbsp;complete&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Check&nbsp;if&nbsp;this&nbsp;is&nbsp;a&nbsp;DP83848C&nbsp;PHY.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;id1&nbsp;=&nbsp;read_PHY&nbsp;(PHY_REG_IDR1);<br />&nbsp;&nbsp;&nbsp;&nbsp;id2&nbsp;=&nbsp;read_PHY&nbsp;(PHY_REG_IDR2);<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(((id1&nbsp;&lt&lt&nbsp;16)&nbsp;|&nbsp;(id2&nbsp;&&nbsp;0xF800))&nbsp;==&nbsp;DM9161A_ID)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Configure&nbsp;the&nbsp;PHY&nbsp;device&nbsp;*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Use&nbsp;autonegotiation&nbsp;about&nbsp;the&nbsp;link&nbsp;speed.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_PHY&nbsp;(PHY_REG_BMCR,&nbsp;PHY_AUTO_NEG);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Wait&nbsp;to&nbsp;complete&nbsp;Auto_Negotiation.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(tout&nbsp;=&nbsp;0;&nbsp;tout&nbsp;&lt&nbsp;0x100000;&nbsp;tout++)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;regv&nbsp;=&nbsp;read_PHY&nbsp;(PHY_REG_BMSR);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(regv&nbsp;&&nbsp;0x0020)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Autonegotiation&nbsp;Complete.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Check&nbsp;the&nbsp;link&nbsp;status.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(tout&nbsp;=&nbsp;0;&nbsp;tout&nbsp;&lt&nbsp;0x10000;&nbsp;tout++)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;regv&nbsp;=&nbsp;read_PHY&nbsp;(PHY_REG_BMSR);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(regv&nbsp;&&nbsp;0x0004)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Link&nbsp;is&nbsp;on.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Configure&nbsp;Full/Half&nbsp;Duplex&nbsp;mode.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(regv&nbsp;&&nbsp;0x5000)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Full&nbsp;duplex&nbsp;is&nbsp;enabled.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAC_MAC2&nbsp;&nbsp;&nbsp;&nbsp;|=&nbsp;MAC2_FULL_DUP;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAC_COMMAND&nbsp;|=&nbsp;CR_FULL_DUP;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAC_IPGT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;IPGT_FULL_DUP;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Half&nbsp;duplex&nbsp;mode.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAC_IPGT&nbsp;=&nbsp;IPGT_HALF_DUP;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Configure&nbsp;100MBit/10MBit&nbsp;mode.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((regv&nbsp;&&nbsp;0x6000)&nbsp;==&nbsp;0x0000)&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;10MBit&nbsp;mode.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAC_SUPP&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;100MBit&nbsp;mode.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MAC_SUPP&nbsp;=&nbsp;SUPP_SPEED;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Set&nbsp;the&nbsp;Ethernet&nbsp;MAC&nbsp;Address&nbsp;registers&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_SA0&nbsp;=&nbsp;(MACAddr[0]&nbsp;&lt&lt&nbsp;8)&nbsp;|&nbsp;MACAddr[1];<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_SA1&nbsp;=&nbsp;(MACAddr[2]&nbsp;&lt&lt&nbsp;8)&nbsp;|&nbsp;MACAddr[3];<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_SA2&nbsp;=&nbsp;(MACAddr[4]&nbsp;&lt&lt&nbsp;8)&nbsp;|&nbsp;MACAddr[5];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Initialize&nbsp;Tx&nbsp;and&nbsp;Rx&nbsp;DMA&nbsp;Descriptors&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;rx_descr_init&nbsp;();<br />&nbsp;&nbsp;&nbsp;&nbsp;tx_descr_init&nbsp;();<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;install_irq(EMAC_INT,(void&nbsp;*)Ethernet_Handler,EMAC_PRIO);<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Receive&nbsp;Broadcast&nbsp;and&nbsp;Perfect&nbsp;Match&nbsp;Packets&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_RXFILTERCTRL&nbsp;=&nbsp;RFC_UCAST_EN&nbsp;|&nbsp;RFC_BCAST_EN&nbsp;|&nbsp;RFC_PERFECT_EN;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Enable&nbsp;EMAC&nbsp;interrupts.&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_INTENABLE&nbsp;=&nbsp;INT_RX_DONE&nbsp;|&nbsp;INT_TX_DONE;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Reset&nbsp;all&nbsp;interrupts&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_INTCLEAR&nbsp;&nbsp;=&nbsp;0xFFFF;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Enable&nbsp;receive&nbsp;and&nbsp;transmit&nbsp;mode&nbsp;of&nbsp;MAC&nbsp;Ethernet&nbsp;core&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_COMMAND&nbsp;&nbsp;|=&nbsp;(CR_RX_EN&nbsp;|&nbsp;CR_TX_EN);<br />&nbsp;&nbsp;&nbsp;&nbsp;MAC_MAC1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|=&nbsp;MAC1_REC_EN;<br />}<br />
sodwell 发表于 2007-7-29 13:37 | 显示全部楼层

re

LS兄台我的也是和你一模一样,我用的是2131的开发板,我不知道是怎么回事,刚开始我也以为是芯片坏了,但是用ISP擦除后也能用,但是在debug的时候,一按停止就出现和你一样的情况,就再也不能debug了,必须用ISP擦除后才能用,不知道咋办?!但是我用开发光盘里的demo就没有问题,我把我的main函数替换demo里的main函数还是一样,我写的只是一个简单的main.c程序啊!
zlgARM 发表于 2007-7-29 14:24 | 显示全部楼层

RE楼上2位

&nbsp;&nbsp;有可能是时钟设置得太快。建议仅在RAM中调试,将ISP短接。
 楼主| feifan570 发表于 2007-7-29 16:09 | 显示全部楼层

我的时钟只设成57.6MHz

我在板上调其他的程序都没有问题,偏偏就是调void&nbsp;Init_EMAC(INT8U&nbsp;MACAddr[])出现,而且每次都是相同的位置。
zlgARM 发表于 2007-7-29 16:16 | 显示全部楼层

feifan570

您好:<br />&nbsp;&nbsp;&nbsp;&nbsp;请拨打020-22644385。
 楼主| feifan570 发表于 2007-7-31 16:33 | 显示全部楼层

郁闷,问题还没有解决

不管是多简单的程序,只要调用了void&nbsp;Init_EMAC(INT8U&nbsp;MACAddr[]),都会出现这个问题。不知是不是硬件问题,但是我把PHY芯片拿掉,还是有问题。现在只能准备买个LPC2368A版的来试试。大侠们来看看是什么问题?指点一下。
 楼主| feifan570 发表于 2007-8-10 10:07 | 显示全部楼层

大侠进来看看

现在问题还是没有解决,我在一个简单的串口程序中调用还是void&nbsp;Init_EMAC(INT8U&nbsp;MACAddr[])还是出现问题,但是如不调用这个函数,怎么跑都可以。换了LPC2368还是这样。void&nbsp;Init_EMAC(INT8U&nbsp;MACAddr[])函数是来自keil的easyweb的。是硬件问题还是软件问题?
 楼主| feifan570 发表于 2007-8-10 10:11 | 显示全部楼层

重贴一下图

您需要登录后才可以回帖 登录 | 注册

本版积分规则

92

主题

195

帖子

1

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