インテルのみ表示可能 — GUID: iga1401317337443
Ixiasoft
インテルのみ表示可能 — GUID: iga1401317337443
Ixiasoft
11.4.1. HALシステム・ライブラリーのサポート
インテルで提供しているドライバーは、HALキャラクター・モードのデバイスドライバーを実装しています。これは、 Nios® IIシステムのHALシステム・ライブラリーに統合されます。HALユーザーは、UARTレジスターにアクセスするのではなく、広く利用されているHAL APIおよびANSI C標準ライブラリーを介してUARTにアクセスします。ioctl() 要求が定義されているため、HALユーザーはUARTのハードウェアに依存する側面を制御することができます。
Nios® IIプロセッサーのユーザーに対して、HALシステム・ライブラリーのAPIはUARTコアの機能への完全なアクセスを提供します。Nios IIのプログラムは、UARTコアをキャラクター・モードのデバイスとして扱い、ANSI C標準ライブラリー関数を使用してデータを送受信します。
ドライバーは、CTS/RTSコントロール信号がプラットフォーム・デザイナーで有効になっている場合は、それらの信号をサポートします。ドライバーのオプション: 高速実装と小型実装のセクションを参照してください。
次のコードは、printf() を使用してstdoutにメッセージを出力する最も簡単な使用法を示しています。この例では、システムにUARTコアが含まれており、HALシステム・ライブラリーはこのデバイスをstdoutに使用するようにコンフィグレーションされています。
例: 文字をstdoutとしてUARTコアに出力
#include <stdio.h> int main () { printf("Hello world.\n"); return 0; }
次のコードでは、C標準ライブラリーを使用してUARTデバイスから文字を読み出し、UARTデバイスにメッセージを送信しています。この例では、システムにuart1と名付けられているUARTコアが含まれています。これは必ずしもstdoutデバイスとしてコンフィグレーションされるわけではありません。この場合、プログラムはデバイスをHALファイルシステム内の他のノードと同様に扱います。
HALシステム・ライブラリーの詳細に関しては、 Nios® II Software Developer's Handbookを参照してください。
例: 文字の送受信
/* A simple program that recognizes the characters 't' and 'v' */ #include <stdio.h> #include <string.h> int main () { char* msg = "Detected the character 't'.\n"; FILE* fp; char prompt = 0; fp = fopen ("/dev/uart1", "r+"); //Open file for reading and writing if (fp) { while (prompt != 'v') { // Loop until we receive a 'v'. prompt = getc(fp); // Get a character from the UART. if (prompt == 't') { // Print a message if character is 't'. fwrite (msg, strlen (msg), 1, fp); } } fprintf(fp, "Closing the UART file.\n"); fclose (fp); } return 0; }