記事 ID: 000083437 コンテンツタイプ: トラブルシューティング 最終改訂日: 2012/09/11

標準出力に JTAG UART または UART を使用する場合、プログラムが終了する直前に printf 出力が解消されるのはなぜですか?

詳細 プログラムが終了する直前に printf ステートメントを実行すると、JTAG UART および UART ドライバーの出力バッファーが完全に送信されない場合があります。したがって、プログラムの最後のステートメントが printf の場合、printf ステートメントからのメッセージ全体が表示されない場合があります。メッセージ全体が印刷されるように、printf() ステートメントの後に usleep() ステートメントを入れて、JTAG UART または UART ドライバー出力バッファーが JTAG UART または UART ハードウェアに完全に送信される時間を確保します。「usleep(200000);」を追加通常は十分です (200000 us を待ちます)。

この動作は、JTAG UART または UART が割り込み駆動型 (デフォルト) の場合にのみ発生します。ポーリング済みバージョンのドライバーを使用する場合、ドライバーは JTAG UART または UART ハードウェアを待機してから文字の送受信を行います。printf メッセージ全体は、次のプロセッサー命令が実行される前に印刷されます。JTAG UART および UART ペリフェラルの高速 (割り込み主導) ドライバーと小型 (ポーリング済み) ドライバーの比較については 、Quartus® II ハンドブック、Vol.5: Altera エンベデッド ・ペリフェラルを参照してください。

関連製品

本記事の適用対象: 1 製品

すべて表示

このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。