解决keil出现cpu is not halted && cannot read register XX while cpu is running的另类方法

最近在做keil硬件仿真的时候发现了很奇怪的问题,程序应该没有问题,可以下载到板子上,但是仿真就不行,点击仿真按钮的同时可以看到jlink的灯熄灭了好一阵才亮起来,然后debug页面如图1所示,我使用的是arm cortex m0内核的某国产mcu芯片,有自己的库,但不是stm系列。出现的问题如下:

图1在这里插入图片描述图1

***JLink Error: CPU is not halted
**JLink Warning: CPU could not be halted
***JLink Error: Can not read register 15 (R15) while CPU is running
***JLink Error: Can not read register 16 (XPSR) while CPU is running
***JLink Error: Can not read register 0 (R0) while CPU is running
***JLink Error: Can not read register 1 (R1) while CPU is running
***JLink Error: Can not read register 2 (R2) while CPU is running
***JLink Error: Can not read register 3 (R3) while CPU is running
***JLink Error: Can not read register 4 (R4) while CPU is running
***JLink Error: Can not read register 5 (R5) while CPU is running
***JLink Error: Can not read register 6 (R6) while CPU is running
***JLink Error: Can not read register 7 (R7) while CPU is running
***JLink Error: Can not read register 8 (R8) while CPU is running
***JLink Error: Can not read register 9 (R9) while CPU is running
***JLink Error: Can not read register 10 (R10) while CPU is running
***JLink Error: Can not read register 11 (R11) while CPU is running
***JLink Error: Can not read register 12 (R12) while CPU is running
***JLink Error: Can not read register 13 (R13) while CPU is running
***JLink Error: Can not read register 14 (R14) while CPU is running
***JLink Error: Can not read register 15 (R15) while CPU is running
***JLink Error: Can not read register 16 (XPSR) while CPU is running
***JLink Error: Can not read register 17 (MSP) while CPU is running
***JLink Error: Can not read register 18 (PSP) while CPU is running
***JLink Error: Can not read register 20 (CFBP) while CPU is running

出现问题后只能将debug关掉,这时候的jlink相当于断开了,再就无法烧写到芯片中了,必须要重启电源,重新使用以前的代码版本,没错一开始我的确以为是代码的问题,更换了很多代码版本,因此在更换代码后好像的确可以烧写进去了,但是后来发现好像不是代码的问题,因为最后几乎不改代码但还是会出现问题。
在网上找了很多资料解决这个问题,试过了网上说的所有的办法,但是始终没能得到解决,足足憋了1天半,最后发现一件很搞笑的事。在这里插入图片描述
图2
原来每次进入debug模式后,我为了方便看寄存器的状态,总是会点击图2中1处的按钮system viewer windows,此时会在debug窗口右侧显示寄存器的状态窗口,如果此时关掉debug,那么再重新启用debug的话就会出现上面所说的问题,具体的原因我也搞不明白,可能是因为jlink盗版?还是keil的问题,亦或是电脑太卡了??给我的感觉就是在启动debug 的窗口时,jlink强行被卡住了一样,相当于jlink断开,自然无法正常的debug,关掉后也无法正常的烧写代码。

解决的办法也很简单,关掉图2中2处的窗口,这时再启动debug时候就不会出现这样的问题了。

超级可笑的一个问题。
更新:问过该芯片公司相关工程师,可能是因为当时芯片总线的访问时序并没有做好,还需要改进。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/AgonyRR/article/details/98875004