IPコアで"ラクラク"FPGA設計 <Altera編> ―― SOPC Builderを活用した基本I/O&SDRAM制御回路の設計

井倉 将実

4.ソフトウェアの開発

 Nios IIはプロセッサであるため,ソフトウェアの開発が必要です.Nios IIの開発キットには「Nios II Software Build Tools for Eclipse」という,Eclipseベースのソフトウェア開発パッケージが用意されています.Nios II Embedded Design Suiteに含まれており,SOPC Builderから使うことができます.

●Nios IIのソフトウェア開発は独特

 Nios IIでもC/C++言語を使ってソフトウェアを開発します.この点は,ほかのマイコン開発と同じです.特徴的な点は,自由に周辺機能を構成できるために,メモリの配置やI/Oアドレスなどが決まっていない点です.

 そのため,Nios IIのソフトウェア開発ツールには,ライブラリ群の生成を自動的に行う機能があります.includeにより,メモリのベース・アドレスやライブラリ関数などを使えるようになります.これを「BSP」といいます.BSPは,Eclipseでソフトウェアの開発を行う際に一緒に作ることができます.

●新規のテンプレートを作成する

 SOPC Builderの「Nios II」→「Nios II Software Build Tools for Eclipse」を実行すると,Eclipse Platformが起動します(図14).


図14 Eclipse Platform
SOPC Builderの「Nios II」→「Nios II Software Build Tools for Eclipse」で起動する.


 「File」→「New」→「Nios II Application and BSP form Template」を選択して,新しいテンプレートを作成します(図15).


図15 新規テンプレートの作成
「File」→「New」→「Nios II Application and BSP form Template」で設定画面が開く.


 Target Hardware InformationにはBSPの生成元であるターゲットのハードウェア設定を登録します.SOPC Information File nameとして,「NIOS2core.sopcinfo」を選択します.CPU nameには「cpu_0」が自動的に設定されます.

 Application ProjectにはBSPを使ったソフトウェアのプロジェクトを設定します.Project nameは「HelloWld1」とします.Project templateは「Hello World」を選択します.

 [Finish]ボタンを押すと,BSPとソフトウェア・プロジェクトの生成を行います.

●BSPをカスタマイズする

 SOPC Builderで設定したAGX20_testというプロジェクト情報から,使用されたI/O群,メモリ・マップ,I/Oアクセス・ドライバ類のヘッダ・ファイルやincludeファイル,各種ソース・コードが自動的に作業ディレクトリにコピーされます.その結果,「HelloWld1_bsp」というBSPプロジェクトと,「HelloWld1」というHello Worldサンプル・コードのビルド・プロジェクトがメニュー上に表示されます.

 ところで,ハードウェアの構成によっては,標準で生成されたBSPがすぐに使えるとは限りません.今回の例では,命令メモリはSRAMで32Kバイトを設定していますが,標準のBSP設定コードは約70Kバイト必要なため収まりません.また,Hello Worldを出力するために,mainルーチンの中で使われているprintf関数の出力先(コンソール)をJTAG UARTに設定する必要もあります.

 命令コードの圧縮フラグを設定します.Project Explorerの「HelloWld1_bsp」を右クリックして表示されるメニューから「Nios II」→「BSP Editor...」を選択してBSPの設定メニューを開きます(図16).enable_reduce_device_driversとenable_small_c_libraryをチェックします.また,stderr,stdin,stdoutをいずれも「jtag_uart_0」に設定します.「File」→「Save」を選んで設定を保存し,[Generate]ボタンを押下してBSPの再生成を行います.


図16 BSPの設定

命令コードを圧縮する設定を示す.


●ビルドする

 BSP設定メニューを閉じて,「Project」→「Build All...」を選択すると,HelloWorld.cのビルドが始まります.設定が正しければ,32Kバイトの命令コード内に格納されるJTAG UARTにprintf関数の内容を表示するだけのプログラムが生成され,ビルドが正常に終了するはずです.

●デバッグする

 「Run」→「Debug Configurations...」を選択して,デバッグの設定メニューを表示させます.

 Project nameのプルダウンで,デバッグを行うプログラムを選択します.ここでは,Hello Worldを表示する「HelloWld1」とします(図17).この選択により,ビルド後のデバッグ情報を含むコードであるHelloWld1.elfがデバッガに受け渡されます.


図17 デバッグの設定

「Run」→「Debug Configurations...」で表示される画面で設定する.


 [Debug]ボタンを押下すると,Eclipse上でデバッガが起動し,命令コードがFPGAボードに転送され,デバッグ・ウィンドウが開きます.デバッグ・ウィンドウ上に,ソース・コードやログを表示するコンソール画面が現れ,デバッグ開始の準備が整います.

 デバッグ開始ボタンを押し,プログラムを実行します.

 「Hello from Nios II!」というメッセージがコンソール画面に表示されれば,プロセッサはプログラム通りに動作していることが分かります(図18).


図18 デバックの様子
printif関数により「Hello from Nios II!」と表示されている.

 

●参考・引用*文献

(1) 浅井剛;ソフト・マクロのCPUを使おう!――FPGAによるシステムLSI設計の意味,組み込みネット, http://www.kumikomi.net/archives/2003/08/15cpum.php?page=1
(2) 浅井剛;Cyclone IIから組み込みシステム開発評価キットを制御する――ソフトCPUコアNios II搭載システムの実装事例,Interface,2008年4月号.

いくら・まさみ
来栖川電工(有)
東海大学 組込み技術修士(専門職)
 

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日