Stm32 debug停留在"BKPT 0xAB"或者"SWI 0xAB"的解决办法。
一、、背景:
曾经在工作中接触过STM32一段时间,但没有深入的去学习,只是用前辈搭建好的模型来实现一些功能罢了,俗话说的好,大树底下好乘凉,开发确实轻松了,可是不深究点,又觉着心里不踏实,然而也一直没花时间去深究。刚好,最近需要重新使用STM32,完全自己开发,没想到今天一上来就让我碰上个不小的问题,废话不多说,进入正题。
二、正文:
在使用串口的时候,代码可以正常编译,没有报任何错误,烧录进MCU内,就是看不到程序正常运行的现象,而把串口部分注释掉就没问题。进入调试模式,发现代码停在 "BKPT 0xAB" 这里,并不是死循环,按下全速运行键“F5”,代码会立马在该段被终止,不会继续往下跑,这里说明了main函数都没有进入。Google到了ARM的技术支持有提到过这个问题, “ARM: Application Builds Without Error, But Does Not Run”,这个链接描述的现象即是我现在碰到的现象。此处指出,调试时,出现代码停在 “BKPT 0XAB” 的现象,说明Semihosting 被使能了。
解决办法有三个:
1、添加一个“retarget.c”的文件,文件内容如下:
#include "stdio.h" #pragma import(__use_no_semihosting_swi)
#pragma import(__use_no_semihosting) _sys_exit(int x) {
x = x;
} struct __FILE {
int handle;
/* Whatever you require here. If the only file you are using is */
/* standard output using printf() for debugging, no file handling */
/* is required. */
};
/* FILE is typedef’ d in stdio.h. */
FILE __stdout;
2、使用keil 的软件包补丁(觉得有点繁琐没有使用),贴个图做个参考
3、打开Microlib:
点击“keil”的“Target option”里面的“Target”,选择“Use MicroLIB”,如下图:
经过测试,按“1”、“3”两种办法,均可以使程序正常运行,“2”办法有点繁琐,没有去尝试。
按照“1”方法为什么就能使程序正常运行呢?释义如下:
现在问题来了,这个“Semihosting”到底是什么?官方释义如下:
而按照方法“3”的原因在于:
“Microlib”已经将“Semihosting”部分移除,代码也更精简,所以,不会出现卡在某处的情况。
个人是推荐用方法“1”或“2”,毕竟微库“Microlib”不具备ISO C的某些特性,某些库函数运行的也比较慢,具体不同之处参照参考链接。当然它的好处在于,其代码经过高度优化而变得很小,可以使用malloc,其内置了一个堆管理模块。具体不同会在第三部分参考链接中贴出。
三、参考链接
“ARM: Application Builds Without Error, But Does Not Run”
http://www.keil.com/support/docs/3614
“What is semihosting?”
http://www.keil.com/support/man/docs/ARMCC/armcc_pge1358787046598.html
“Differences between microlib and the default C library”
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0475k/chr1358938938431.html
记录地点:深圳WZ
记录时间:2016年8月1日
Stm32 debug停留在"BKPT 0xAB"或者"SWI 0xAB"的解决办法。的更多相关文章
- Eclipse Java,debug模式无法调试,调试按钮不可用时解决办法
经常出现debug模式进入后,debug的几个按钮置灰,F5,6,8,没有任何反应时,这样操作: 退出 Eclipse.打开 Eclipse 目录下的 configuration 下的 org.ecl ...
- Django项目关闭debug模式后,静态文件无法加载的解决办法
开启内置服务器,由于项目中local_settings.py文件中的DEBUG=True,进行开发和调试一直没什么问题. 但是现在需要编写404,500等出错页面,在debug模式下出了错都会出现报错 ...
- 关于Eclipse Debug断点调试出现 Search not found 页面的解决办法
1. 在代码中鼠标右键 Debug AS ---> Debug Configurations... ----> 找到Source选项 ---> 点击add ---> 选择 j ...
- django在关闭debug后,admin界面 及静态文件无法加载的解决办法
当debug为true的时候,ALLOWED_HOSTS是跳过不管用的.所以这里需要将debug关掉,令debug=false,ALLOWED_HOSTS=[ '*' ]表示所有的主机都可以访问 开启 ...
- [转]VS2005 Debug时提示"没有找到MSVCR80D.dll"的解决办法
总结各种解决方法如下: 原因:(不知道在说啥)由于VS.net 2005 采用了一种新的DLL方案,搞成一个exe还要配有一个manifest文件(一般在嵌入文件里了,所以看不到,不过也可以不嵌入,这 ...
- 在debug模式下运行不报错,换到release模式下报找不到某某库或文件的错。。解决办法
我遇到的问题是:把edit secheme调到debug模式运行没有问题,然后调到release模式的时候报目录下没有libTuyoo.a 解决办法 把断开真机设备,用IOS device下relea ...
- Eclipse中debug调试java代码一直报Source not found的解决办法
今天使用eclipse的debug调试代码,一直没法正常调试,一按F6就提示Source not found 根据提示发现可能是另一个项目影响了,所以把另一个项目Close Project,这次直接t ...
- STM32的PA15、PB3、 PB4管脚作普通管脚的解决办法
最近做了一个板子,使用的是SWD方式进行下载程序,仅仅使用到SWDIO(PA13) 和SWCLK(PA14)两个管脚.我将PA15(JTDI)和PB3(JTDO)管脚用于他用(用于点LED使用), ...
- 分享一个android debug模式,出现 waiting for debugger把界面卡住,取巧的解决办法
使用android studio开发程序时,有时会出现 waiting for debugger 卡住界面,软件无法正常debug运行的情况,很多网友分享了一些解决办法,比如: 1 打开cmd进入命令 ...
随机推荐
- ubuntu nginx 安装以及配置文件详解
1.到nginx官网下载源码包.最好下载稳定版本,nginx官网http://www.nginx.org/ 2.安装nginx依赖包运行命令: sudo apt-get install libssl- ...
- jboss性能优化
jboss linux jboss 部署时优化设置: 在/conf/web.xml中通过参数指定: <session-config> <session-ti ...
- Mysql学习笔记(一)
技术的王国太过迷人,我刚从事IT就被各种技术所引诱迷惑,什么都想学.我还算言而有信的那一类人,还好有一丁点毅力,于是各种东西都沾染了一点.但是这种遍地开花的情况实在和我的智商不匹配.我没有那么多的精力 ...
- eclipse配置gradle
1.Grandle官网下载Gradle 2.解压文件,配置到环境变量 3.测试安装成功,$ gradle -v 4.打开eclipse,Help-->Install new software,输 ...
- redis理解
1. Redis是什么 redis是nosql的一种. 这个问题的结果影响了我们怎么用Redis.如果你认为Redis是一个key value store, 那可能会用它来代替MySQL:如果认为它是 ...
- 9.25 DOM作业
一<style type="text/css">*{margin:0px auto; padding:0px; font-family:微软雅黑; font-size: ...
- Unicode 与 UTF 字符标准
Unicode 国际字符标准(UCS)是一个字符编码系统,它被设计用来支持世界各国不同语言书面文体之间的数据交换.处理以及显示. Unicode用两个字节表示一个字符.前127个字符与A ...
- CentOS7安装Nginx并部署
服务器IP是192.168.36.136 1.直接yum install nginx即可 2.主配置文件是/etc/nginx/下的nginx.conf,另外一个是/etc/nginx/conf.d/ ...
- Spring MVC学习笔记——注解式控制器
- MySQL学习笔记——安装及配置环境
1.安装的版本为mysql-5.6.24-win32.1432006610压缩版 查看教程http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345b ...