HALは、UART HAL ドライバーを非ブロックモードで動作するように設定する 2 つの方法を提供します。
UNIX スタイル
UNIX スタイルの IO 関数呼び出しを使用する場合、open() 関数を使用して UART を非ブロックに設定できます。これを行うには、次の方法で UART のファイル記述子を開きます。
fd = open("/dev/",O_NONBLOCK | O_RDWR);
このファイル記述子は、UART を読み取り / 書き込みおよび非ブロックモードで動作するように設定します。次に、ファイル記述子を read() および write() 関数と一緒に使用できます。
ANSI C
ANSI C IO ファンクション呼び出しを使用している場合は、uART HALドライバーを fcntl() を使用して非ブロックモードで動作するように設定できます。これを行うには、ソースコードで fcntl.h と unistd.h を参照する必要があります。その後、fcntl() を使用して UART を非ブロックモードに設定できます。以下は、STMODE IO チャネルを非ブロックモードで動作させる例です。
fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK);
詳細については、Nios® II ソフトウェア開発者ハンドブック (英語) のHAL API リファレンスを参照してください。このドキュメントは次の場所にあります。
Nios II・インストール - インストール・ディレクトリー>/ドキュメント/n2sw_nii5v2.pdf
ウェブサイト®Altera - http://www.altera.com/literature/lit-nio2.jsp