FC2カウンター FPGAの部屋 2011年07月11日
FC2ブログ

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

FPGAの部屋

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

AXIバスのEDKチュートリアルを試す6(SDK3)

AXIバスのEDKチュートリアルを試す5(SDK2)”の続き。

SDKのhello_world_0プロジェクトにmemory_test_0プロジェクトを追加してみた。

1.FileメニューからNew -> Xilinx C Projectを選択して、New Xilinx C ProjectからMemory Testsを選択した。(下図はmemory_test_0が追加された後に開いたので、memory_test_1になっている)
SP605_AXI_EDK_52_110710.png

2.SDKを見ると、memory_test_0プロジェクトが追加され、ビルドが終了していた。
SP605_AXI_EDK_53_110710.png

3.前回同様に、SDKでXilinx ToolsメニューからProgram FPGAを選択し、ハードウェアをダウンロードしてから、デバッカを立ち上げて、ソフトウェアを動作させてみた。

4.Tera_termにメモリテストの内容が表示された。MCB_DDR3をテストした。
SP605_AXI_EDK_54_110710.png

5.次にperipheral_test_0プロジェクトを追加して、周辺デバイスのテストを行った。
SP605_AXI_EDK_55_110710.png

6.SysAceのセルフテストだけがパスしなかった。なぜだろうか?設定が悪いのかな?
SP605_AXI_EDK_56_110710.png

7.いろいろサンプルプロジェクトをやってみた。Dhrystoneプロジェクト。
SP605_AXI_EDK_57_110710.png

8.xilkernel_posix_threads_demo_0をやってみた。
SP605_AXI_EDK_58_110710.png

SP605_AXI_EDK_59_110710.png

9.”EDK Concepts, Tools, and Techniques A Hands-On Guide to Effective Embedded System Design EDK 13.1 (UG683 April 13, 2011)”の39ページからの”Take a Test Drive! Working with Multiple Source Files and Projects”をやって見る。testperiph.cは途中で止まってしまうので、memorytest.cのみやってみた。

10.memory_tests_0 のmemory_config_g.c, memory_config.h, memorytest.c をhello_world_0のsrcフォルダへコピーする。コピーすると、main()が2つあるので、エラーとなった。
SP605_AXI_EDK_60_110710.png

11.memorytest.c の53行目のmain()をmemorytest_main()に変更してセーブする。
SP605_AXI_EDK_61_110710.png

12.helloworld.c の"print("Hello World\n\r");" の下に、"memorytest_main();" を追加する。”warning: implicit declaration of function 'memorytest_main'”が出ている。
SP605_AXI_EDK_62_110710.png

13.platform.h に "int memorytest_main();" を追加すると、ワーニングが無くなった。
SP605_AXI_EDK_63_110710.png

14.memorytest.c のmemory_ranges をクリックして、マウスカーソルを上におくと、ウインドウが開いて、memory_ranges の定義が表示された。
SP605_AXI_EDK_64_110710.png

15.F2を押すと、フォーカスがそのウインドウに行くが、そこでは編集できなかった。memory_ranges を選択して、右クリックメニューからOpen Declaration を選択すると、ダイアログが出てくる。hello_world_0にあるmemory_ranges を選択して、OKボタンをクリックする。
SP605_AXI_EDK_65_110710.png

16.memory_ranges を定義しているmemory_config_g.c が開く。3番目のメンバーの"0xc0000000" を"0xc1000000"に変更してセーブする。
SP605_AXI_EDK_66_110710.png

17.SDKでXilinx ToolsメニューからProgram FPGAを選択する。

18.Program FPGAダイアログが開く。Programボタンをクリックする。

19.SDKのProject Explorerで、hello_world_0の下のBinariesの下のhello_world_0.elfで右クリックして、右クリックメニューからDebug As -> Lanunch on Hardware を選択する。

20.リンカー・スクリプトが走って、実行形式プログラム入のビットファイルがボードにダウンロードされる。C/C++ to Debugにパースペクティブを変更するダイアログが開くので、Yesボタンをクリックする。

21.SDKにデバック用のパースペクティブが表示された。

22.Tera Termを起動して、9600bps, 8bit data, 1 stop bitに設定する。(デフォルト値)

23.Step Over アイコンをクリックして、行ごとに進めていく。"print("Hello World\n\r");" を通過したところで、Hello WorldがTera_termに表示された。
SP605_AXI_EDK_67_110710.png

SP605_AXI_EDK_68_110710.png

24.Resumeボタン、またはF8 を押すと、メモリテストも実行された。
SP605_AXI_EDK_69_110710.png

  1. 2011年07月11日 05:00 |
  2. EDK
  3. | トラックバック:0
  4. | コメント:0