调用iprintf会导致图像失败

时间:2016-04-29 09:44:07

标签: c gcc arm newlib

我正在为Cortex-M3构建一个小型裸机测试程序(在SmartFusion2中)。我正在使用GCC ARM嵌入式工具链(5-20​​16-q1-update)。我在main函数中做的第一件事是初始化UART以获得调试输出。然后我将一些字符直接输出到UART以指示启动。此UART也在_write_r中的newlib系统调用中使用。我的main函数中的下一行调用printf。如果我将此作为对printf的调用,因为它没有参数,编译器会将其优化为对puts的调用(即使我指定了-O0)。这工作正常。如果我调用iprintf,编译器不会对它进行优化,现在我看不到任何输出,即使是之前直接调用UART也是如此。这表明在启动过程中出现了问题,但我不知道是什么。

总结:

void main(void)
{
    UART_init();
    UART_printBuffer("Starting...\r\n");
    printf("Working\r\n");
    while(1);
}

正常工作,nm告诉我printf来电已成为puts。我按预期看到两行输出。

但是对于以下代码,我看不到任何输出:

void main(void)
{
    UART_init();
    UART_printBuffer("Starting...\r\n");
    iprintf("Working\r\n");
    while(1);
}

任何关于从哪里开始调试的线索都将不胜感激。

0 个答案:

没有答案