将printf重定向到IAR Embedded Workbench上的控制台I / O.

时间:2014-04-30 12:53:46

标签: c windows embedded printf microcontroller

我已在软件IAR Embedded Workbench IDE的Windows机器上用C编写了我的项目。该项目编译并运行良好。我的代码中有几个printf函数。但问题是该项目是针对微控制器AT91SAM7X256的。我已成功构建我的应用程序以在微控制器的sram上运行,并且应用程序已成功加载。但是printf函数被定向到控制器的USART端口(我只能假设),所以我想重定向printf以显示终端I / O上的文本。有没有人知道如何做到这一点?

3 个答案:

答案 0 :(得分:4)

我使用IAR工具链的ARM,AVR32和MSP430处理器版本。在每个中,您必须实现自己的低级功能来处理stdin和stdout流。 ARM编译器手册有一个关于输入和输出的标准流的部分"这表示您需要编写自己的__write()函数版本,它提供了一个示例版本,其中数据被写入内存映射的LED显示。

了解IAR我希望他们的处理器/工具链组合会有类似的例子。

答案 1 :(得分:2)

我不知道为什么你的printf被重定向但是做你想做的事我做了以下事情: 首先显示控制台窗口。 (运行调试时,转到菜单View-> Terminal I / O. 然后停止应用程序,转到Project-> Options和Linker->库检查包括C-SPY调试支持

请注意,这会使程序的运行速度大大低于应有的速度。完成调试后,注释掉所有printfs

答案 2 :(得分:1)

标准答案是在库选项 1 下选择“半主机”和“通过半主机”(或通过 SWO——但我一直在使用另一个。)和“缓冲终端输出”以提高速度。

然而,我在这里闲聊是因为我有一个来自 ST 的演示程序,它不会将 printf 打印到控制台,我不知道为什么 - 有很多应用程序可以工作。因此,如果有人记得标准信息中遗漏的一些细节,请随意说点什么...