解决Keil 下载LPC2378 FLASH时报错“can not stop ARM...”

    今天在移植基于LPC2378的模板时遭遇编译后下载到FLASH中仿真提示:can not stop ARM device , check JTAG cable .再网络上搜了一下,普遍是这个解释:


下面将原文贴上:


原文来自: RealView中文社区
原帖链接: http://www.realview.com.cn/bbs/dispbbs.asp?boardID=2&ID=1647&page=1


一、问题
本人在使用MDKUlink2的期间,发现有些情况下使用Ulink2调试会出现一些问题。比如在调试开始时弹出对话框“Could not stop ARM device!,please check the JTAG cable!”。根本无法进入调试阶段。
二、原因及对应的解决方法
核心原因主要有两种:第一种是ULINK JTAG设置频率高于目标板芯片运行频率;第二种是在JTAG获得控制权之前,芯片上执行某些指令将JTAG口禁用掉。其中以后一种原因居多。原因虽只有两种,但具体的解决方法依据不同的硬件特点各有不同。下面给出一些典型的解决方案,对于示例中没出现过的板子,读者可灵活应用之。
1ULINK JTAG频率设置过高,有些芯片频率达不到所设置的频率,自然会出现问题,这时需要在ULINK设置中将频率降低。例如:
在调试LPC2378的过程中,进行修改其系统时钟频率得的测试,本来在12M的情况下是没有问题的,我将频率改成72M其最高是72M,结果Download失败,提示“Could not stop ARM device!,please check the JTAG cable!”。后来发现是时钟频率设置问题,将频率降低解决了这一问题。


2、对于第二种情况,首先应该尝试在调置ULINK JTAG中勾上USE Reset at Startup。不行的话,重启一下试试。另外有两种原因导致JTAG被禁用掉,一种原因是重启系统时由于没有正确的引导代码,CPU可能执行一些随机指令,这些指令可能将JTAG禁用,例如:在STR71x中出现过这种情况,解决方法是将启用boot loader
BOOTEN = 1 打开启动引脚
BOOT1 = 0, BOOT0 = 1 打开 boot loader
这样CPU在重启之后会执行正确的指令,而不会禁用JTAG


另外还有一种原因,就是在重启时执行的程序可能会误将JTAG禁用掉。在这种情况下,需要将Flash中的程序擦除掉。例如对于PHILIPS LPC2000。程序中的语句“PINSEL2 = 0x8会禁用JTAG。此时可以下载通过串口擦写的工具将Flash擦除。即可解决这一问题。
再比如对于STR9,我们可以用以下步骤来擦除Flash解决这一问题


A、将STR9设备的电源关掉。

B、一直按住Reset按键,并打开电源。

C、打开一个礦ision STR9的工程。并添加Flash算法,执行Flash菜单中的Erase命令。

D、等待0.5秒左右,不能大于1.5秒。

E、松开Restet键。

这样Flash将被擦除,JTAG可以正常使用了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值