首页 > 其他 > 详细

运用keil的ULINK2下的ITM机制打印调试信息

时间:2014-02-12 22:20:28      阅读:1244      评论:0      收藏:0      [点我收藏+]



     我手头上用的keil 5.0的开发环境,仿真调试器工具用的山寨ulink2。想利用仿真器打印printf的调试信息在开发环境的debug(printf) view窗口上。

#define ITM_Port8(n)    (*((volatile unsigned char *)(0xE0000000+4*n)))
#define ITM_Port16(n)   (*((volatile unsigned short*)(0xE0000000+4*n)))
#define ITM_Port32(n)   (*((volatile unsigned long *)(0xE0000000+4*n)))


#define DEMCR           (*((volatile unsigned long *)(0xE000EDFC)))
#define TRCENA          0x01000000


struct __FILE { int handle; /* Add whatever needed */ };
FILE __stdout;
FILE __stdin;


int fputc(int ch, FILE *f) {
  if (DEMCR & TRCENA) {
    while (ITM_Port32(0) == 0);
    ITM_Port8(0) = ch;
  }
  return(ch);
}

     打开keil\arm\startup\stm32dbg.ini文件,DBGMCU_CR的TRACE_IOEN位,需要在调试文件STM32DBG.INI中配置,默认是0,选为1即可。否则程序就会在while (ITM->PORT[0].u32 == 0);处死循环。

    按照上述要求进行修改了,还是出现死循环的现象,暂时搁置到这里了,下次接着调吧


    参考资料:

STM32用JLINK V8 SWD输出调试信息到ITM Viewer的问题(转)

运用keil的ULINK2下的ITM机制打印调试信息

原文:http://blog.csdn.net/yongyooh/article/details/19112013

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!