我对 newlib 的 printf 函数有一个奇怪的问题,它被重定向到 uart 端口。
这个问题可以用一个例子很好地解释。
printf(" hi ");
...
...//some other simple code. like a++;
...
printf(" hello ");
现在,当我运行程序时,直到到达/调用下一个 printf 才会出现“hi”。即,当应该打印“hello”时,它会打印“hi”,.. 1 呼叫的延迟总是进行。最后一个 printf 根本没有打印出来。
我的 UART 代码在哪里:
int write(int file, char *ptr, int len) {
unsigned int i;
int de =1;
//initialize_Uart(de);// NOT REQUIRED as UBOOT has already done the job.
/* Transmitting a char from UART */
for (i = 0; i < len; ++i, ++ptr)
{
while (!(IN_8(DUART1_ULSR1)&(0x20))); // wait for the CTS bit is cleared
OUT_8(DUART1_UTHR, *ptr);
}
return len;
}
解决方案是什么?