FC2カウンター FPGAの部屋 NiosⅡ 9.0 IDE を使ってみる4(インターフェースボードのLEDの点灯テスト)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

NiosⅡ 9.0 IDE を使ってみる4(インターフェースボードのLEDの点灯テスト)

くりさんのご指摘のおかげで、(本当に恥ずかしいバグだった)”NiosⅡ 9.0 IDE を使ってみる3(SDRAMが動作しない原因を追及がわからず...わかりました)”でSDRAMを動作させることができた。
今度はテストできるはず?なのに、うまく行かないインターフェースボードのLEDをテストしてみることにした。
board_diag.h, board_diag.c を見ると、TestLEDs(void)関数があって、これを生かせば、そのままLEDのテストができるはず。だけど、下のようになっていて、LED_PIO_NAME をdefine しないと生きない。

#ifdef LED_PIO_NAME

/*
* static void TestLEDs(void)
*
* This function tests LED functionality.
* It exits when the user types a 'q'.
*/

static void TestLEDs(void)
{


そこで、#define LED_PIO_NAME をboard_diag.h に追加した。これでNios2 9.0 IDE でBuild Project をすると、エラー発生。
LED_PIO_BASEがdefine されていないそうだ。そこでSOPC Builder を起動してexboard_led_pio のベースアドレス0x00000000 を確認した。そのアドレスをLED_PIO_BASEの値としてdefine した。
結局、board_diag.h に追加したdefine は下の2つ。

#define LED_PIO_NAME
#define LED_PIO_BASE 0x00000000


これでNios2 9.0 IDE でBuild Project をするとビルド出来て、Nios2 9.0 IDE の下のコンソールペインにNiosⅡTerminal Windowが表示された。
Nios2_IDE_90_19_090816.png

前回の表示よりも a: Test LEDs の項目が増えている。a を入力するとインターフェースボードのLED 8個がすべて点灯した。
Nios2_LED_test_1_0890816.jpg

ここでq を入力するとLEDテストが終了して8個の LED がすべて消灯した。
Nios2_IDE_90_20_090816.png

これでLEDはOK。
7セグメントLEDやRS-232Cもテストしてみようかな?
  1. 2009年08月16日 20:46 |
  2. NiosⅡ EDS
  3. | トラックバック:0
  4. | コメント:8

コメント

こんばんわ。

>そこでSOPC Builder を起動してexboard_led_pio のベースアドレス0x00000000 を確認した。そのアドレスをLED_PIO_BASEの値としてdefine した。

LED_PIO_BASEなどのベース・アドレスその他の#defineは、SOPC Builderから system.h あたりに自動的に反映されますので、適当にインクルードして見て下さい。
  1. 2009/08/18(火) 01:13:05 |
  2. URL |
  3. くり #mQop/nM.
  4. [ 編集 ]

くりさん、いつもありがとうございます。

system.h ではEXBORAD_LED_PIOになっていました。ボード診断用のデフォルトの名前が決まっているんですね。LEDを自動的に診断するときの名前はLED_PIOにするしかないわけですね。了解しました。ろくにマニュアルも読まずにやっているので、わかりませんでした。ありがとうございました。
  1. 2009/08/18(火) 05:03:07 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

こんにちは。

>system.h ではEXBORAD_LED_PIOになっていました。ボード診断用のデフォルトの名前が決まっているんですね。

 えーと、SOPC Builder で指定した名前が"ABC"で、IPがPIOならば、ベース・アドレスは"ABC_PIO_BASE"などとなるはずですが・・・。一度、IDEからLibraryを再構築するなど、してみて頂けませんか?この辺は、SOPC Builder System File (.ptf)の内容から、自動生成されるハズです。
  1. 2009/08/18(火) 12:32:32 |
  2. URL |
  3. くり #mQop/nM.
  4. [ 編集 ]

くりさん、いつもありがとうございます。

IDEでboard_biag_0 を捨てて作り直したのですが、やはり同じ見たいです。
  1. 2009/08/18(火) 20:26:30 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

こんにちは。

>IDEでboard_biag_0 を捨てて作り直したのですが、やはり同じ見たいです。

 えーと、(もちろんNios IDEを使っておられると思いますが)Target Hardwareに目的のptfファイルが選択されているか、確認して見て下さい。詳しくは

http://www.altera.com/literature/tt/tt_nios2_hardware_tutorial.pdf

の、1-35ページあたり。プロジェクトを作ってしまった後でも、もちろん変更は可能ですが、ハテさて、メニューのどの部分からたどれば良いのか、私は未だに、あっちクリック、こっちクリックしながら探している状態です。SOPC Builderの中でIDEが唯一、鬼門です(ハッキリ言ってク○です。)
  1. 2009/08/19(水) 14:06:39 |
  2. URL |
  3. くり #mQop/nM.
  4. [ 編集 ]

くりさん、たびたびありがとうございます。

board_diag_0 フォルダのREADME.txtにこう書いてあったのでやはりleg_pioにする必要があるのでは?と思います。

* Requirements
* **************
* This program requires the following devices to be configured:
* an LED PIO named 'led_pio',
  1. 2009/08/19(水) 19:20:50 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

こんばんわ。

>board_diag_0 フォルダのREADME.txtにこう書いてあったのでやはりleg_pioにする必要があるのでは?と思います。

 うーん、だんだん、何が問題になっているのか訳が分からなくなって来ましたが^^;)。 SOPC Builder上でLEDのIPのModule名を led_pio とすると、そのベース・アドレスは LED_PIO_BASE と system.h のなかで #define され、Library中で使用されます。通常はHALがハードの詳細(すなわちベース・アドレス等)を覆ってしまうので、ptfファイルに加えられた変更は、リビルトするだけですべて自動的に各部に反映され、ユーザーが気にする必要はありません。が、自動化の範囲は此処までで、ユーザーがそのソース中でベース・アドレスを直接扱ったりすると、Moduleの名前を変更したときには、それに応じてソース中の対応する名前を変更しなければなりません。どういう訳か、PIOには対応するHALがないようなので、直接ベース・アドレスを弄る必要があり、

>* This program requires the following devices to be configured:
* an LED PIO named 'led_pio',

の意味は、ソースで名前としてLED_PIOを使ってしまっているので、「ソースを弄るよりは、SOPC Builder側のModule名変更1発で対応してくれ」の意味だと思います。
  1. 2009/08/19(水) 23:30:55 |
  2. URL |
  3. くり #mQop/nM.
  4. [ 編集 ]

SOPC Builder でモジュールの名前を変更してやってみました。
http://marsee101.blog19.fc2.com/blog-entry-1207.html

くりさん、どうもありがとうございました。
  1. 2009/08/20(木) 05:43:44 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/1205-5c21692b
この記事にトラックバックする(FC2ブログユーザー)