連載
» 2016年01月26日 09時00分 公開

MAX 10 FPGAで学ぶFPGA開発入門(6):FPGA上でソフトコアCPUを動かす手引き (4/7)

[大原 雄介,MONOist]

Nios IIで動作するプログラムの記述

 さて、ここまでの作業でMAX 10上にて動作するプロセッサが構築され、さらにメモリとADC(A/D Converter)、GPIOがこのプロセッサから利用可能な状態になっている。ただし、プログラムを何も書き込んでいないので、この時点ではまだ何も動かない。そこでここからはNios II上で動作するプログラムを記述し、Nios IIにロードしてやる必要がある。

 まずQuartus IIの「Tool」→「Nios II Software Build Tools for Eclipse」を選択し、Eclipseを立ち上げる(Photo21)。このEclipseで「New」→「Nios II Application and BSP from Template」を選択してTemplateファイルの選択画面を表示させる(Photo22)。

Photo21:「Nios II Software Build Tools for Eclipse」 Photo21:初回はこんな具合にブランクだが、基本的には直前の作業状態を記憶しているので、次回からは直前の状況から再開できる。正直なトコロ、このバージョンはちょくちょくEclipseそのものが落ちるのだが、再起動すると直前の状況から作業を再開できるので大きなハンディにはならないだろう(ただしSaveは小まめに)。
Photo22:簡単なプログラムのテンプレートも用意されている Photo22:簡単なプログラムのテンプレートも用意されている

 この画面で

  • SOPC Information File name:プロジェクトディレクトリのトップに、nios_setup.sopcinfoというファイルが生成されているので、これを指定する
  • CPU name: nios_gen_2_0(自動的にこれが選択される)
  • Project name:適当に自分でつける
  • Project template:"Hello World Small"を選択

と作業する。

 完了すると、こんな具合になるはずだ(Photo23)。

Photo23:Hello Worldを選ばない理由は、printf()を含むCのライブラリが結構メモリを専有する(40KB以上)ので、SRAMを大容量に設定しないと、そもそも動作しないため Photo23:Hello Worldを選ばない理由は、printf()を含むCのライブラリが結構メモリを専有する(40KB以上)ので、SRAMを大容量に設定しないと、そもそも動作しないため

 設定が終わったら右下の「Finish」ボタンを押すとしばらくの後、今回の例なら「TempSensor」と「TempSensor_bsp」の2つのプロジェクトが自動生成されている(Photo24)。ここでいきなりビルドをする前に、設定が1つ必要である。

Photo24:TempSensorはプログラムそのもの、TempSensor_bspはBSP(Board Support Package)で、要するにランタイムである Photo24:TempSensorはプログラムそのもの、TempSensor_bspはBSP(Board Support Package)で、要するにランタイムである

 左ペインのプロジェクト名(TempSensor)を右クリックし、プロパティを表示させる(Photo25)。ここで「Nios II Application Properties」を選ぶと、標準ではOptimization levelが「Size」になっているので、これを「Off」にする(Photo26)。同様に、TempSensor_bspの方もやはりOptimization levelを「Off」にする。

Photo25:これは最適化の設定のため Photo25:これは最適化の設定のためであるが、なぜか最適化オプションは"Nios II Application Properties"に用意されている
Photo26 Photo26:この目的はAlteraによれば"compiler optimization may cause some problems while running the program."との事。

Copyright © ITmedia, Inc. All Rights Reserved.