打印

printf导致BKPT异常!!

[复制链接]
6381|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
runmo420|  楼主 | 2009-7-9 15:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32芯片,在Keil中调试程序的时候,若在程序中使用printf()函数(包含<stdio.h>),当进入调试的时候,第一,不能跳到main函数处,第二,当运行程序时,总会跳到如下图处,停在异常处。_sys_open()函数在realview编译器是用于打开一个文件用的,在此为何会产生一个BKPT的异常呢?各位碰到这样的情况吗?

相关帖子

沙发
古道热肠| | 2009-7-9 15:39 | 只看该作者

串口初始化了吗?

printf()通常与putch()相关联.

使用特权

评论回复
板凳
runmo420|  楼主 | 2009-7-9 15:49 | 只看该作者

已经初始化了

刚才试了一下,好像跟MDK版本有关,我用3.24版本的,就没有这个问题了,而用3.70版本的时候却出现这个问题!真是百思不得其解!

使用特权

评论回复
地板
三块石头| | 2009-7-9 21:02 | 只看该作者

Keil的帮助说BKPT 0xAB在Thumb-2下是半主机申请的软中断

所以我一直怀疑和半主机的实现有关,但是一直没有确认
也不知道ST-LINK-II是不是支持半主机操作。

所以后来我的所有uart操作都不用printf了,都是底层中断+自己写的puchar()和send_string()等等

使用特权

评论回复
5
runmo420|  楼主 | 2009-7-13 10:08 | 只看该作者

MDK不支持semihosting

询问keil的技术人员,说是MDK不支持半主机,所以得 retargeting。

使用特权

评论回复
6
古道热肠| | 2009-7-13 11:40 | 只看该作者

俺在MDK3.2平台上试AT91SAM7S64,也不能用prinft

现象也是进不了main.搞不懂什么原因.

使用特权

评论回复
7
宛城君| | 2009-7-13 16:30 | 只看该作者

选上MicroLib就可以了

否则你要重新实现printf需要的底层接口函数

使用特权

评论回复
8
宛城君| | 2009-7-13 16:32 | 只看该作者

这个是RVCT4.0编译器和RVCT3.1编译器的区别

MDK3.24用的是RVCT3.1的编译器,MDK3.70是用的RVCT4.0的编译器

使用特权

评论回复
9
runmo420|  楼主 | 2009-7-13 17:32 | 只看该作者

真的是这个原因

谢谢指点。这个不看RVCT的指南,真的很难发现。keil不厚道,好像没有pubic这个异同点,但是自己的samples里给出一个演示printf的例子,却没有指出要用microLib。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

142

帖子

0

粉丝