printf导致BKPT异常!!

[复制链接]
7345|8
 楼主| runmo420 发表于 2009-7-9 15:17 | 显示全部楼层 |阅读模式
stm32芯片,在Keil中调试程序的时候,若在程序中使用printf()函数(包含&ltstdio.h&gt),当进入调试的时候,第一,不能跳到main函数处,第二,当运行程序时,总会跳到如下图处,停在异常处。_sys_open()函数在realview编译器是用于打开一个文件用的,在此为何会产生一个BKPT的异常呢?各位碰到这样的情况吗?<br />
古道热肠 发表于 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下是半主机申请的软中断

所以我一直怀疑和半主机的实现有关,但是一直没有确认<br />也不知道ST-LINK-II是不是支持半主机操作。<br /><br />所以后来我的所有uart操作都不用printf了,都是底层中断+自己写的puchar()和send_string()等等
 楼主| runmo420 发表于 2009-7-13 10:08 | 显示全部楼层

MDK不支持semihosting

询问keil的技术人员,说是MDK不支持半主机,所以得&nbsp;retargeting。
古道热肠 发表于 2009-7-13 11:40 | 显示全部楼层

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

现象也是进不了main.搞不懂什么原因.
宛城君 发表于 2009-7-13 16:30 | 显示全部楼层

选上MicroLib就可以了

否则你要重新实现printf需要的底层接口函数
宛城君 发表于 2009-7-13 16:32 | 显示全部楼层

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

MDK3.24用的是RVCT3.1的编译器,MDK3.70是用的RVCT4.0的编译器
 楼主| runmo420 发表于 2009-7-13 17:32 | 显示全部楼层

真的是这个原因

谢谢指点。这个不看RVCT的指南,真的很难发现。keil不厚道,好像没有pubic这个异同点,但是自己的samples里给出一个演示printf的例子,却没有指出要用microLib。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

142

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部