要解决一个问题就怕不知道怎么搜索,或是别人没有遇到过:
同样碰到Keil MDK Debug调试无法设置断点问题,首先来问百度,GOOGLE,一下是我搜索到的结果:
1、keil 不能设置断点,每次点调试都出现以下对话框, 有几个按钮不能点。
解决办法:购买正版Keil或够找破解包,worldsing笔记里有(仅供学习用),商业请支持正版;
2、软件能Debug, 硬件无法Debug, 硬件仿真Debug时提示:
**JLink Warning: T-bit of XPSR is 0 but should be 1. Changed to 1.
解决办法:仿真器有问题,Keil 与仿真器驱动不匹配,找到KEIL的安装目录里的Segger文件夹,里面有4个主要的文件:
JL2CM3.dll
JLink.exe
JLinkARM.dll
JLTAgdi.dll
把这几个DLL换成老版本的。
3、部分C代码行不能设置断点,如第4行无法设置断点
解决办法:修改C/C++编译选项,默认是Leve 0(O0) 即不做优化。
4、无法软件仿真, 无法运行到main()
解决办法:Target Options –> Output –> Debug information 勾上
5、在Keil 在RAM中无法设置断点
解决办法:STM32 在MDK Keil下,RAM中进行调试,可设置断点
6、Keil调试时提示:
*** error 65: access violation at 0x40021008 : no 'write' permission
*** error 65: access violation at 0x40021004 : no 'read' permission
解决办法:选择的CPU型号与代码不符合,Target Options –> Device换个大容量型号的或该代码
7、Keil Debug时部分C文件无法设置断点,代码能正在Flash运行,这个是笔者遇到的问题,没有
搜到解决答案,试过以上6中方法 都没能得到解决。如下图所示60的代码能正常运行,但就是不能
打断点,也没有被优化。
解决办法:查看不能打断点的C文件是否含有内嵌汇编代码或是否含有汇编C函数,把汇编代码提出来,调试
完毕后再合并成原来的文件。