第5回 Nios IIで遊ぼう パソコンからNiosへのコマンド送信編

FPGA

関連記事 FPGAの記事一覧

スポンサーリンク

前回までのおさらい

第1回 Nios IIで遊ぼう 目標機能編
第2回 Nios IIで遊ぼう Quartus Platform Designer編
第3回 Nios IIで遊ぼう Nios II Software Build Tools for Eclipse編
第4回 Nios IIで遊ぼう Nios II Command Shell編

前回はEclipseで設計したソフトウェアをFPGAに書き込み、Push SWでのLED点灯確認と、”Nios II Command Shell”で”Hello World !!”が表示されるかを確認しました。

今回はEclipseのコンソールウインドウからデータを送信して、DE0-NanoボードのLEDを点灯させてみたいと思います。

Terasic DE0-NANO開発ボード 【P0082】

新品価格
¥14,520から
(2020/5/19 00:12時点)

目標機能

目標の機能としては、

・コンソールウインドウから”0″を送信したらLED0が点灯(LED1~LED7は消灯)して、コンソールウインドウに”LED0 ON”と表示させる。

・コンソールウインドウから”1″を送信したらLED1が点灯(LED0とLED2~LED7は消灯)して、コンソールウインドウに”LED1 ON”と表示させる。

~~~~~~~

・コンソールウインドウから”7″を送信したらLED7が点灯(LED0~LED6は消灯)して、コンソールウインドウに”LED7 ON”と表示させる。

・コンソールウインドウから”0″から”7″以外を送信したらLED0~LED7が点灯して、コンソールウインドウに”LED ON”と表示させる。

・コンソールウインドウから”q”を送信したら通信切断させる。

という感じにしました。

ソースコード

作成したソースコードは以下です。

#include "sys/alt_stdio.h"
#include "system.h"
#include <stdio.h>
#include <string.h>

int main()
{
	unsigned char ucLED = 0;
	FILE* fp;
	char prompt = 0;

	fp = fopen ("/dev/jtag_uart", "r+");	//ファイルオープン

	alt_printf("Hello World !!\n");

	if (fp){

		alt_printf("File Open.");

		while(prompt != 'q'){	//"q"が入力されるまでループ

			prompt = getc(fp);	//受信

			switch(prompt){
			case '0':
				fwrite ("LED0 ON", 7, 1, fp);
				ucLED = 0x01;
				break;
			case '1':
				fwrite ("LED1 ON", 7, 1, fp);
				ucLED = 0x02;
				break;
			case '2':
				fwrite ("LED2 ON", 7, 1, fp);
				ucLED = 0x08;
				break;
			case '3':
				fwrite ("LED3 ON", 7, 1, fp);
				ucLED = 0x08;
				break;
			case '4':
				fwrite ("LED4 ON", 7, 1, fp);
				ucLED = 0x10;
				break;
			case '5':
				fwrite ("LED5 ON", 7, 1, fp);
				ucLED = 0x20;
				break;
			case '6':
				fwrite ("LED6 ON", 7, 1, fp);
				ucLED = 0x40;
				break;
			case '7':
				fwrite ("LED7 ON", 7, 1, fp);
				ucLED = 0x80;
				break;
			default:
				if(prompt != 'q'){
					fwrite ("LED ON", 6, 1, fp);
					ucLED = 0xFF;
				}
			}

			//LED control
			*(volatile unsigned char *) LED_OUTPUT_BASE = ucLED;

		}

		alt_printf("File Close.\n");
		fclose (fp);

	}

	return (0);
}

Build Project

次はプロジェクトのビルドですが、設定は前回までの設定を引き継いでいます。

設定の詳細は、こちらを参照ください。

ビルドは、”soft_test”を右クリックして、”Build Project”を選択します。

ビルドに成功したら完了です。

Run

ビルドに成功したら実行させてみます。

実行は、”soft_test”を右クリックして、Run As -> Nios II Hardwareを選択します。

実行すると、EclipseのNios II Consoleウインドウに以下の表示がでます。

データ送信

そしたらNios II Consoleウインドウからデータを送信してみます。

データは、”5″ -> “a” -> “q”の順に送ってみました。

以下はコンソールウインドウに表示された結果です。

コンソールウインドウには目標通りの結果が表示されました。

次はDE0-NanoのLEDの状態です。

上が”5″を送信後、下が”a”を送信後です。

LEDも期待通りに点灯してくれました。

簡単ですが、JTAG UARTを使った通信チェックができました。

第1回 Nios IIで遊ぼう 目標機能編
第2回 Nios IIで遊ぼう Quartus Platform Designer編
第3回 Nios IIで遊ぼう Nios II Software Build Tools for Eclipse編
第4回 Nios IIで遊ぼう Nios II Command Shell編

関連記事 FPGAの記事一覧

Terasic DE0-NANO開発ボード 【P0082】

新品価格
¥14,520から
(2020/5/19 00:12時点)

タイトルとURLをコピーしました