文章 ID: 000083437 内容类型: 故障排除 上次审核日期: 2021 年 08 月 28 日

当将 JTAG UART 或 UART 用于 stdout 时,为什么在程序立即终止之前,printf 输出会被截断?

环境

  • 英特尔® Nios® II 处理器
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    说明 当 printf 声明在程序终止之前立即被终止时,JTAG UART 和 UART 驱动程序的输出缓冲区可能无法完全传输。因此, 如果您的程序的最后一项声明是 printf, 您可能无法观察 printf 声明的整个消息。为了确保打印整个消息,在 printf() 声明后放入一个 usleep() 声明,以允许将 JTAG UART 或 UART 驱动程序输出缓冲区完全传输到 JTAG UART 或 UART 硬件。 添加"usleep(200000);"(等待 200000 我们)通常足够了。

    请注意,此行为仅在 JTAG UART 或 UART 中断驱动(默认)时才会发生。 使用驱动程序的调查版本时,驱动程序会等待 JTAG UART 或 UART 硬件的发送和接收字符。 在执行下一个处理器指令之前,将打印整个 printf 消息。 请参阅 Quartus® II 手册,第 5 卷:Altera嵌入式外设 ,了解 JTAG UART 和 UART 外设的快速(中断驱动)与小型(已咨询)驱动程序的信息。

    相关产品

    本文适用于 1 产品

    英特尔® 可编程设备

    本页面上的内容是原始英文内容的人工翻译与计算机翻译的组合。我们提供此内容是为了您的便利并且仅供参考,未必完整或准确。如果本页面的英文版与翻译版之间存在任何冲突,应以英文版为准。 查看此页面的英语版本。