查看: 40331|回复: 8

[已解决] 如何在IAR 上实现Printf 打印调试信息(已解决)

[复制链接]

该用户从未签到

1

主题

8

帖子

0

新手上路

Rank: 1

积分
16
最后登录
1970-1-1
发表于 2014-5-13 11:14:23 | 显示全部楼层 |阅读模式
 最近一直在研究如何在IAR开发环境下实现所谓的半主机模式打印调试信息,一直未果。本人使用的是IAR 6.5 IDE,平台是K10,在网上搜了一些资料,在IAR 选项卡内General Options /Library Configuration/下Library 选项Full, Stdout/stderr 选项 via SWO,仿真模式下设定SWO选项卡 勾选Enable Ports To Terminal I/o Window Bit 0,打开View下的Terminal IO 窗口无任何显示。不知是何原因,求助各位搞过的大神指点迷津。
我知道答案 目前已有8人回答
新建位图图像.png
回复

使用道具 举报

该用户从未签到

11

主题

354

帖子

0

高级会员

Rank: 4

积分
693
最后登录
1970-1-1
发表于 2014-5-14 09:34:15 | 显示全部楼层

回复:如何在IAR 上实现Printf 打印调试信息

回复 支持 反对

使用道具 举报

该用户从未签到

10

主题

459

帖子

0

中级会员

Rank: 3Rank: 3

积分
303
最后登录
2024-10-24
发表于 2014-5-14 10:02:30 | 显示全部楼层

回复:如何在IAR 上实现Printf 打印调试信息

这可能是因为程序中printf函数定向的输出为串口函数的输出,而不是默认的stdio的输出,如下面代码,你需要关注out_char函数的实现是stdio的函数还是串口的函数,例程代码中outchar都是输出到串口的!你所要做的是注释掉printf的实现函数,然后再使用到printf的函数前加入#include ,那么程序就会自动使用stdio标准输入输出的printf函数来完成打印工作!
int
printf (const char *fmt, ...)
{
    va_list ap;
    int rvalue;
    PRINTK_INFO info;

    info.dest = DEST_CONSOLE;
    info.func = &out_char;
    /*
     * Initialize the pointer to the variable length argument list.
     */
    va_start(ap, fmt);
    rvalue = printk(&info, fmt, ap);
    /*
     * Cleanup the variable length argument list.
     */
    va_end(ap);
    return rvalue;
}
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

8

帖子

0

新手上路

Rank: 1

积分
16
最后登录
1970-1-1
 楼主| 发表于 2014-5-14 13:02:19 | 显示全部楼层

回复:如何在IAR 上实现Printf 打印调试信息

回复第 3 楼 于2014-05-14 10:02:30发表:
这可能是因为程序中printf函数定向的输出为串口函数的输出,而不是默认的stdio的输出,如下面代码,你需要关注out_char函数的实现是stdio的函数还是串口的函数,例程代码中outchar都是输出到串口的!你所要做的是注释掉printf的实现函数,然后再使用到printf的函数前加入#include ,那么程序就会自动使用stdio标准输入输出的printf函数来完成打印工作!
int
printf (const char *fmt, ...)
{
va_list ap;
int rvalue;
PRINTK_INFO info;

info.dest = DEST_CONSOLE;
info.func = &out_char;
/*
* Initialize the pointer to the variable length argument list.
*/
va_start(ap, fmt);
rvalue = printk(&info, fmt, ap);
/*
* Cleanup the variable length argument list.
*/
va_end(ap);
return rvalue;
}
谢谢楼上两位大神的帮助,目前问题已解决。查了一下程序发现Printf在原工程中是被重定向到串口,导致Terminal I/O始终无数据输出。按照上面的方法,Termianl I/O 已能正常输出。再次对两位热心的帮助表示感谢!

 
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

354

帖子

0

高级会员

Rank: 4

积分
693
最后登录
1970-1-1
发表于 2014-5-16 14:49:15 | 显示全部楼层

回复:如何在IAR 上实现Printf 打印调试信息(已解决)

其实我在参加【召集】问题解决王,第一期活动呢。
回答网友问题可以拿到亚马逊礼品卡,  所以楼主不用客气
 
 
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

7

帖子

0

新手上路

Rank: 1

积分
28
最后登录
2015-5-6
发表于 2015-3-29 17:17:57 | 显示全部楼层
为使用IAR而来打酱油的呢,感谢楼主,感谢各位!
回复 支持 反对

使用道具 举报

该用户从未签到

9

主题

219

帖子

0

高级会员

Rank: 4

积分
653
最后登录
2017-11-19
发表于 2015-4-27 12:26:56 | 显示全部楼层
FSL_FAE_ConstYu 发表于 2014-5-14 10:02
这可能是因为程序中printf函数定向的输出为串口函数的输出,而不是默认的stdio的输出,如下面代码,你需要 ...

还能使用printk?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    擦汗
    2021-9-9 22:51
  • 签到天数: 415 天

    连续签到: 1 天

    [LV.9]以坛为家II

    79

    主题

    3088

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    5181
    最后登录
    2022-5-23
    发表于 2015-6-11 23:21:29 | 显示全部楼层
    忽然发现这里有这么多好贴子,持续学习
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-4-12 10:22
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    15

    主题

    386

    帖子

    0

    高级会员

    Rank: 4

    积分
    541
    最后登录
    2018-6-28
    发表于 2015-6-12 08:32:59 | 显示全部楼层
    学习了
    falajf
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-21 21:32 , Processed in 0.113622 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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