我正在为Cortex-M3构建一个小型裸机测试程序(在SmartFusion2中)。我正在使用GCC ARM嵌入式工具链(5-2016-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);
}
任何关于从哪里开始调试的线索都将不胜感激。