~無限の可能性を持つソフトコアCPUの世界へようこそ~

        浅井様のご紹介・連載タイトルはこちらから

  


浅井様へご相談等ありましたら、下記アドレスへ

   


はじめに

前回はソフトウェアの開発ツール、デバッグの方式について解説しました。今回は、CQ出版社刊DesignWave誌でNios® IIに関する執筆実績のある東京計器工業株式会社の福島さんに執筆のご協力を頂き、Nios II 用のソフトウェアの開発方法について解説していきます。


Nios II 用ソフトウェア開発環境

CPUベンダーはハードウェアだけでなくソフトウェアの開発環境も提供しており、誰でも簡単にソフトウェア開発が出来るようになりました。Nios IIでも例外ではなく、Nios II EDSというソフトウェア開発ツールが用意されています。このツールにはNios II IDE(EclipseベースのIDE)、Nios II Command Shell(コマンドシェル)、nios2-elf-gcc(Nios II 用GNUコンパイラ)等が含まれています。


表 1にNios II用のソフトウェアを開発するための手法を示します。アルテラ社が提供しているツールでは大まかに分けて3種類の方法でソフトウェア開発が可能です。設計するシステムに合わせてツールを使い分けることで効率的に開発を進めることが出来ます。以下それぞれの手法について解説します。


表 1 Nios II 用ソフトウェア開発手法

開発方法

柔軟性

高度な制御

必要知識

開発工数※

 Nios II IDE + HAL

Nios II IDE(non-HAL)

Command Shell + nios2-elf-gcc(makefile)

※新規開発の場合


Nios II IDE + HAL

CPU搭載FPGAでは市販マイコンと違い、周辺モジュールを自由に設計できるため、初期化プログラムやデバイスドライバ等をそれぞれにあわせて、作成する必要があると以前に解説しました。(https://www.macnica.co.jp/softcore_cpu_3.html:「ソフトウェア設計」項)

アルテラ社提供のソフトウェア開発ツールであるNios II EDSではSOPC Builder(現:Qsys)に用意されている周辺モジュール用のHAL(Hardware Abstraction Layer)が用意されており、SOPC Builderから出力される設定ファイルからアドレスマップや割り込みなどの情報を自動的に読み込み、必要なヘッダーファイルやデバイスドライバ等を生成します。

Nios II EDSでNios II用のソフトウェアProjectを追加する場合、“Nios II C/C++Application”を選択します。これを選択するとSystem Libraryを新規に生成するか、既存のLibraryを指定する必要があります。System Libraryを新規で作成すると、用意されているHALから必要なドライバや割り込みハンドラ、初期化プログラム等を組み込みます。図 1のようにアプリケーション用のプロジェクトとシステムライブラリ用のプロジェクトが生成されます。


図 1 Nios II C/C++ Application Projectの生成例


このように、CPUユーザはアプリケーション開発に注力することができるため、大幅な工程短縮も可能となります。反面ハードウェアに近い部分のソフトウェアがブラックボックス化してしまうため、より高度な使い方をする場合に対処が難しくなる場合があります。


Nios II IDE(non-HAL)

CPUユーザの中には独自でチューニングしたデバイスドライバを使用したい、既にある設計資産を流用したいということもあると思います。Nios II EDSはHALを使用しないソフトウェアの開発も可能です。アルテラ社発行のドキュメント(Nios II Software Developer’s Handbook)にも、non-HALデバイスドライバに関する解説があります。しかしこの場合はHALに相当するソフトウェアを自前で用意する必要がありますし、ヘッダーファイルやリンカスクリプトファイル等を作るのは骨の折れる作業です。これらの作成に慣れていないがHALは使いたくないという方向けに、ひな形を簡単に作成する方法を後半で解説します。


Command Shell + nios2-elf-gcc

Nios II EDSにはコマンドシェルも用意されています(昔はSDK Shellと呼ばれていました)。このコマンドシェルを使用して、“nios2-elf-gcc”を直接実行する、またはMakefileを用意して“Make”を実行する方法です。IDEが提供される前はこの方法でソフトウェア開発を行っていました。

「せっかくIDEが用意されているのだからいまさらコマンドベースでソフト開発をするなんて」と言われてしまいそうですがソフトウェアプロジェクトをうまくIDEに取り込めない場合や、OSのカーネルビルドのように、デバッグを伴わない実行バイナリの作成作業ではわざわざGUIベースで作業する必要性がない場合もあると思います。実際にLinux等のようにディストリビューションで提供されているようなものでは無理にIDEに組み込むより、コマンドラインで“Make”を実行したほうが楽な場合もあります。


これまでも複数回にわたり、慣れるまではベンダー提供のツールを推奨の方法で使い、ある程度慣れてきて使いこなしたいなら、関連ドキュメントを良く読んでチャレンジしましょうと書いてきました。今回も同様です。


次に定番のHello_worldをサンプルとして、実際の開発手順について解説していきます。



→次のページ

~ソフトウェアの開発手順~



◆浅井様のご紹介・連載タイトルはこちらから