查看: 2234|回复: 1

[原创] SWO实现Printf功能

[复制链接]

该用户从未签到

34

主题

110

帖子

0

中级会员

Rank: 3Rank: 3

积分
338
最后登录
2018-3-31
发表于 2016-3-7 21:21:15 | 显示全部楼层 |阅读模式
Cortex-M3/M4内核提供了一个ITM(Instrumentation TraceMacrocell)接口,通过SWV(Serial Wire Viewer)可调试由SWO引脚接收到的ITM数据。ITM实现了32个通用的数据通道,基于这样的实现,CMSIS规定用通道0作为终端来输出调试信息,通道31用于操作系统的输出调试(特权模式访问)。在core_cm3.h/core_cm4.h中定义了ITM_SendChar()函数,因此可通过调用该函数来重写fputc,以在应用程序中通过printf打印调试信息,并可通过ITM Viewer查看这些调试信息。ITM_SendChar()函数代码如下
Unnamed QQ Screenshot20160307211026.jpg
printf重定向:
int fputc(int ch,FILE *f)
{
    return (int)ITM_SendChar ((uint32_t) ch);
}
硬件上将SWO引脚连接到J-Link调试口上,按JTAG接线的话,默认已经接上了。

打开Keilprintf-view窗口,通过 View -> Serial Windows -> Debug(printf) View,即可查看打印的数据。
回复

使用道具 举报

  • TA的每日心情
    开心
    2018-1-5 14:38
  • 签到天数: 48 天

    连续签到: 1 天

    [LV.5]常住居民I

    4

    主题

    197

    帖子

    0

    高级会员

    Rank: 4

    积分
    938
    最后登录
    2021-9-6
    发表于 2016-3-8 09:18:11 | 显示全部楼层
    还没用过,先MARK
    回来签到
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-22 06:44 , Processed in 0.078855 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表