Artikel-ID: 000083437 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 11.09.2012

Warum wird die printf-Ausgabe bei Verwendung von JTAG UART oder UART für stdout abgeschnitten, wenn sie unmittelbar vor der Beendigung des Programms erfolgt?

Umgebung

  • Intel® Nios® II Prozessor
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Beschreibung Der Ausgabepuffer der JTAG UART und UART Treiber wird möglicherweise nicht vollständig übertragen, wenn die printf-Anweisung unmittelbar vor dem Ende des Programms erfolgt. Wenn es sich bei der letzten Aussage Ihres Programms um eine printf handelt, können Sie möglicherweise nicht die gesamte Nachricht aus der printf-Anweisung beobachten. Um sicherzustellen, dass die gesamte Nachricht gedruckt wird, setzen Sie eine usleep() Anweisung nach der printf() Anweisung, damit der JTAG UART oder UART Treiber-Ausgabepuffer vollständig an die JTAG UART oder UART Hardware übertragen werden kann. Hinzufügen von "usleep(200000);" (Warten Sie auf 200000 uns) ist in der Regel ausreichend.

    Beachten Sie, dass dieses Verhalten nur auftritt, wenn JTAG UART oder UART interrupt-gesteuert ist, was der Standard ist. Wenn Sie die abgefragten Versionen der Treiber verwenden, wartet der Treiber auf die JTAG UART oder UART Hardware, bevor Zeichen gesendet und empfangen werden. Die gesamte Printf-Nachricht wird vor der Ausführung der nächsten Prozessoranweisung gedruckt. Im Quartus II Handbuch, Volume 5: Altera Embedded Peripherals finden Sie Informationen zu den schnellen (Interrupt-gesteuerten) im Vergleich zu kleinen (abgefragten) Treibern für die Peripheriegeräte JTAG UART und UART.

    Zugehörige Produkte

    Dieser Artikel bezieht sich auf 1 Produkte

    Intel® programmierbare Geräte

    Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.