1. はじめに
この記事では Ashling* の RiscFree* IDE を使用した Nios® V プロセッサー(以降、Nios® V と表記)を実装したシステムの開発手順をご紹介します。
Nios® V は Quartus® Prime Pro Edition ソフトウェア・バージョン 21.3 (以降、Quartus® Prime Pro v21.3 と表記)から使用することができますが、この バージョンを使用する場合は Command Line ベースで開発を行う必要があります。
RiscFree* IDE への対応は Quartus® Prime Pro v22.2 からの対応であり、このバージョンより前の Quartus® Prime では使用できません。
Command Line ベースでの開発手順については以下の記事も併せてご確認ください。
参考資料:Nios® V Processor Quick Start Guide の手順を確認してみた
ポイント: 新規で Nios® V を試す際には、最新バージョンの開発ツールの使用をお勧めします。RiscFree* IDE に対応したバージョン 22.2 以降もバージョンリリース毎に使い勝手の改善が行われています。
Nios® V の関連資料についても以下にリンクを記載しますので併せてご確認ください。
参考資料:Nios®V Embedded Processor Design Handbook
参考資料:Nios®V Processor Reference Manual
参考資料:RiscFree* Integrated Development Environment (IDE) for FPGAs User Guide
2. システム要件
2-1. 対応デバイス、対応ツールバージョン
RiscFree* IDE のインストールについては Quartus® Prime の Complete Download もしくは Multiple Download をご利用いただくことで、インストーラーが含まれた状態でのダウンロードが可能です。Individual Files で Quartus® Prime をダウンロードする場合は、Additional Software から個別にインストーラーをダウンロードしてください。
Quartus® Prime Pro v22.2 以降では、Quartus® Prime Pro v21.3 で必要だった、外部サイトでのコンパイラーなどのインストールの必要がなくなり、追加の設定なしで使用することができます。
対応デバイスについては【表1】をご参照ください。
Nios® V Processor |
Quartus® Prime Standard Edition |
Quartus® Prime Pro Edition |
Processor core |
Nios® V/c processor |
Nios® V/c processor |
Device support |
MAX® 10 |
Cyclone® 10 GX |
2-2. ライセンス
Nios® V 、RiscFree* IDE 共に無償でご使用いただけますが、ライセンスは必要となっています。
詳細は以下の記事でご紹介していますのでご参照ください。
参考資料:Nios® V プロセッサー IP のライセンスファイルを取得する方法
3. サンプルデザインのご紹介
3‐1. ブロック図
この記事ではサンプルデザインとして「Nios® V/m Processor Intel FPGA IP」(以降、Nios® V/m と表記)の「Arria® 10 FPGA - Nios® V/m Processor based Hello World」を使用します。
このサンプルデザインは Nios® V/m のサンプルデザインとして提供されており、下記よりダウンロードが可能となっています。
参考資料:Arria® 10 FPGA - Nios® V/m Processor based Hello World
上記サンプルデザインのブロック図を以下に示します。
このサンプルデザインは Nios® V/m を含み、コンソールを利用した動作確認が行える最小の構成で作成されています。
【図1】サンプルデザインのブロック図
3‐2. Platform Designer の構成
Platform Designer のシステムは『3-1. ブロック図』で紹介したサンプルデザインから "create_qsys.tcl" ファイルを使用して作成します。
.tcl ファイルを使用しての Platform Designer のシステムの作成については、Platform Designer の View メニュー ⇒ System Scripting ⇒ Project Scripts に "create_qsys.tcl" を登録 ⇒ Run Script の手順で行えます。
【図2】.tcl ファイルの実行方法
Platform Designer の構成を下図に示します。
【図3】サンプルデザインのシステム構成図
4. RiscFree* IDE での Nios® V 開発
4-1. 事前準備
『3. サンプルデザインのご紹介』でご紹介した通りハードウェアの編集は今回のサンプルデザインでは必要がないため、この章からはソフトウェアの開発と RiscFree* IDE の操作方法を併せてご紹介します。
まず RiscFree* IDE にはプロジェクトを作成するためのツールが備わっていないため、空のプロジェクトを作成する必要があります。
この記事では RiscFree* IDE のユーザーガイドに従い app フォルダー名を「 app 」、bsp フォルダー名を「 bsp 」に設定します。
2 つのフォルダーを下記のディレクトリーに作成してください。
<Quartus® Prime Project フォルダー > \software\app
<Quartus® Prime Project フォルダー > \software\bsp
注記:
"software" フォルダーは RiscFree* IDE の Workspace として使用します。
フォルダーを作成した後は app フォルダー内に空のファイルで問題ないので、Main のアプリケーション・コードを記述する予定のファイルを格納してください。
以上でプロジェクトの作成の事前準備は完了です(このサンプルでは app フォルダーが既に作成されており、フォルダー内に hello.c が格納されています)。
4-2. bsp プロジェクトの作成
この項では『4-1. 事前準備』で作成した空の bsp フォルダー内に、BSP Editor で作成した .bsp ファイルを参照して各種ファイルを格納し bsp プロジェクトを作成します。
Quartus® Prime Pro と Quartus® Prime Standard では、一部フローが違う箇所がありますのでそれぞれご紹介します。
4-2-1. Quartus® Prime Pro の場合
Quartus® Prime Pro では Platform Designer にて bsp プロジェクトを作成します。
以下に手順を示します。
① Platform Designer を起動した時に開かれる Open System の GUI より BSP Editor のタブを選択します。
【図4】Create New BSP の GUI
② BSP setteing file の右赤枠の Create ボタンをクリックし、New Platform Designer BSP より『4-1. 事前準備』で作成した空の bsp フォルダー内に、新規で .bsp ファイルを作成します。
【図5】Create New BSP の .bsp 作成画面
③ System file (qsys or sopcinfo) 列の右赤枠のブラウズボタン [...] をクリックし、『3-2. Platform Designer の 構成』で .tcl ファイルを使用し作成した .qsys ファイルを選択し、Select ボタンをクリックします。
【図6】Create New BSP の .qsys ファイルの選択画面
④ bsp ファイルと .qsys ファイルを設定した後、Revision 、CPU name 、Operating system に .qsys ファイルを基にしたデータが入力されます。
Revision 、CPU name が正しいことを確認した後、Operating system に Altera HAL を選択していることを確認し Create ボタンをクリックします。
【図7】Create New BSP の Operating system の選択画面
⑤ Create を押下した後 BSP Editor が表示されるので、stdin 、stdout 、stderr に "jtag_uart" が設定されていることを確認し Generate BSP ボタンをクリックします。
【図8】BSP Editor の設定画面
以上が Quartus® Prime Pro での bsp プロジェクトの作成手順です。
4-2-2. Quartus® Prime Standard の場合
Quartus® Prime Standard では Nios® V command shell から、bsp プロジェクトを作成します。
以下に手順を示します。
① Nios® V command shell を下記ディレクトリーより起動します。
<Quartus® インストール・ディレクトリー>\<Quartus® Version>\Niosv\bin\Niosv-shell.exe
② Nios® V command shell から 下記のコマンドを実行します。
niosv-bsp-editor.exe
【図9】Nios® V command shell でのコマンド入力画面
③ Bsp Editor 起動後、File メニュー ⇒ New BSP を選択し New BSP のウィンドウを 起動した後、SOPC Information File name のブラウズボタン [...] をクリックし、.sopcinfo ファイルを選択します。
【図10】sopcinfo ファイルの選択画面
④ sopcinfo ファイルを入力後、CPU name 、Operating system 、Version が選択できるようになるため、所望の設定になっているか確認してください。 BSP target directory 、BSP Settings File name を変更したい場合は、Use default locations のチェックを外し、BSP target directory のブラウズボタン [...] から設定することが可能です。
【図11】New BSP ウィンドウの各種設定画面
⑤ 各設定を確認して問題が無いようでしたら、OK ボタンをクリックします 。
【図12】New BSP ウィンドウの設定完了画面
⑥ BSP Editor が立ち上がるので、所望の設定を行い完了したら Generate ボタンをクリックします。
【図13】BSP Editor の設定画面
4-3. app プロジェクトの作成
この項では app プロジェクトの作成方法をご紹介します。
app プロジェクトはコマンドを利用してのみ作成可能ですが、RiscFree* IDE にコマンドを登録することで GUI からのコマンドを実行することも可能です。
RiscFree* IDE にコマンドを登録する方法は『5. RiscFree* IDE からの外部ツールの起動』でご紹介するため、この項では Nios® V Command shell を使用した方法をご紹介します。
Nios® V command shell は下記ディレクトリーより起動してください。
<Quartus® インストール・ディレクトリー>\<Quartus® Version>\Niosv\bin\Niosv-shell.exe
使用するコマンドは下記の2つです。
このコマンドを実行することで app プロジェクトの作成と Cmakelist.txt が生成されます。
niosv-app --bsp-dir= <bsp プロジェクトのディレクトリー > --app-dir= <app プロジェクトのディレクトリー > --srcs= < ソースコードのディレクトリー > --elf-name= < 作成予定の ELF ファイル の名前 >
cmake.exe -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -B < ビルド実行フォルダーのディレクトリー > -S < ソースコードのディレクトリー >
このサンプルデザインではカレント・ディレクトリーをサンプル・プロジェクトがあるディレクトリーに指定して、以下の通りにコマンドを実行してください。
実行例
niosv-app --bsp-dir=software/bsp --app-dir=software/app --srcs=software/app/hello.c --elf-name=hello.elf
cmake.exe -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -B software/app/build/Debug -S software/app
以上が RiscFree* IDE の起動前に実施していただく内容です。
4-4. RiscFree* IDE の起動
この項から RiscFree* IDE を使用してのデバッグ方法についてご紹介します。
まず RiscFree* IDE を起動します。
『4-3. app プロジェクトの作成』でご紹介した方法で Nios® V command shell を起動してください。
Nios® V command shell を起動した後 RiscFree.exe を実行してください。
【図14】Nios® V command shell からの RiscFree.exe 実行画面
RiscFree.exe を実行した後は Workspace の選択画面が表示されます。
この GUI では『4‐1. 事前準備』で作成した software フォルダーを指定し Launch ボタンをクリックしてください。
【図15】Workspace の選択画面
RiscFree* IDE を起動した直後は下図のような画面が表示されます。
【図16】RiscFree* IDE の起動画面
4-5. プロジェクトのインポート
『4-4. RiscFree* IDE の起動』の【図16】では RiscFree* IDE にプロジェクトが紐づいていないため、まず初めにプロジェクトのインポートを行います。
4-5-1. Quartus® Prime Pro / Standard Ver 23.x 以前の場合
下図の File メニューから New ⇒ Project を選択した後、GUI が表示されますので下記の手順でプロジェクトをインポートしてください。
【図17】v23.x 以前のプロジェクトのインポート方法(その 1)
New Project の ウィンドウが表示されるので、C/C++ ⇒ C/C++ Project を選択し Next ボタンをクリックします。
【図18】v23.x 以前のプロジェクトのインポート方法(その 2)
New C/C++ Project のウィンドウより C++ Managed Build を選択し、Next ボタンをクリックします。
【図19】v23.x 以前のプロジェクトのインポート方法(その 3)
C++ Project のウィンドウより Project name 欄に作成したプロジェクトの名前を入力し、画面中央の Project Type 欄より Cmake driven ⇒ Empty Project 、Toolchains 欄より CMake driven を選択し、 Finish ボタンをクリックします。
【図20】v23.x 以前のプロジェクトのインポート方法(その 4)
4-5-2. Quartus® Prime Pro Ver 24.1 以降の場合
下図の File メニューから Import Nios V Cmake project... を選択した後、GUI が表示されますので下記の手順でプロジェクトをインポートしてください。
【図21】v24.1 以降のプロジェクトのインポート方法(その 1)
下図の Import ウィンドウが表示されますので、Browse ボタンよりインポートするプロジェクトを選択し、Finish ボタンをクリックしてください。
【図22】v24.1 以降のプロジェクトのインポート方法(その 2)
以上がプロジェクトのインポート方法です。
インポートが完了した後は下図のように app 、bsp プロジェクトが Project Explorer 内に表示されます。
【図23】プロジェクトをインポートした後の Project Explorer
注記:
この記事では app 、bsp プロジェクトをどちらもインポートしていますが、app プロジェクトのみインポートした場合でもデバッグは可能なため、bsp プロジェクトは状況に応じてインポートしてください。
4-6. プロジェクトのビルド
プロジェクトのインポートが完了したらビルドを実施します。
app プロジェクトを右クリックし下図のメニューから Build project を選択してください。
【図24】プロジェクトのビルド
ビルドが完了した後は下図のように、ELF ファイルが生成されていることをご確認ください。
【図25】プロジェクトのビルドが完了した後のフォルダー構成
注記:
Windows のアイコンから RiscFree* IDE を起動した場合は、ビルド時に niosv-stack-report return error が発生します。ですが ELF ファイルが生成されている場合は、このエラーを無視していただいて問題ありません。
参考 KDB:Why does niosv-stack-report return error during Nios® V build flow in RiscFree* IDE for FPGAs?
4-7. プロジェクトの Run
ビルドが完了した後は ELF ファイルをダウンロードしてソフトウェアを実行します。
あらかじめ Quartus® Prime の Programmer より .sof ファイルをダウンロードし、FPGA のコンフィグレーションを完了してから次の工程に進んでください。
このサンプルでは Nios® V への Reset 入力を ISSP(In system source and probe)で制御しているため、Quartus® Prime より Reset 信号を toggle する必要があります。
Quartus® Prime の Tools メニューより、In-System Source and probes Editor を開いてください。
【図26】In-System Source and probes Editor の起動
下図のような ウィンドウが表示されますので、赤枠の数字を 2 回クリックして Reset 入力を toggle してください。
【図27】In-System Source and probes Editor での Reset 信号の toggle
RiscFree* IDE のウィンドウに戻り、app プロジェクトを右クリックして Run As ⇒ Run Configurations を選択してください。
【図28】Run Configurations の起動
表示された Run Configurations ウィンドウから Ashling RISC-V(auto-detect)Hardware Debugging をダブルクリックすると、下図の設定画面が表示されます。Main タブでは Project に app プロジェクト名が記載されていることの確認と、C/C++ Application に生成した .elf ファイルを選択してください。
【図29】Run Configurations の起動
Main タブでの設定が完了した後は Debugger タブを開いてください。下図のような GUI が表示されますので画面赤枠の Debug Probe Configuration の設定を確認し、正しい場合は画面中央の
Auto-Detect Scan Chain をクリックします。Device/Tap selection に期待のデバイス、Core selection に期待の Core が入力されていることを確認した後、Apply ボタンをクリックし、Run ボタンをクリックして実行してください。
注記:
RiscFree* IDE は JTAG のコンソールを持たないため、別途 JTAG コンソールにつなげることで出力を確認することができます。 RiscFree* IDE で JTAG コンソールを接続する方法については『5. RiscFree* IDE からの外部ツールの起動』の章で紹介していますのでそちらをご参照ください。
【図30】Run Configurations の設定
【図31】JTAG コンソールの出力画面
4-8. プロジェクトの Debug Run
この項ではソフトウェアの Debug Run についてご紹介します。
Debug Run は専用の GUI を使用して行うため、まず Debug Run 用の GUI を起動します。
Run As と同様に app プロジェクトを右クリックし Debug As ⇒ Debug Configurations を選択します。
【図32】Debug Configurations の起動手順
選択した後 Run configuration の GUI と同じ形式の GUI が表示されますので、GUI 左側の "Ashling RISC-V (auto-detect) Hardware Debugging" を押下した後、【図29】に従って設定を行い Apply と Debug をクリックしてください。
下図の Confirm Perspective Switch ウィンドウが表示されたら Switch をクリックして閉じてください。
【図33】Debug Perspective の選択画面
下図はデバッグウィンドウを立ち上げた直後の状態です。main 関数内の最初の命令で Break しています。
【図34】デバッグウィンドウ起動画面
上図で大きく分けて 3 つのウィンドウについて概要を簡単に記載していますが、デバッグ時にはこの 3 つのウィンドウとコンソールを確認しながらデバッグすることができます。
また Window メニューの Show View から、デバッグウィンドウにデフォルトで表示されている以外のウィンドウも表示することが可能です。
【図35】ウィンドウの追加方法
現在どこで Break しているかはソースコード表示内の、背景が緑色にハイライトされている命令を確認して下さい。
その他の命令で Break したい場合は、Break したい命令の左側をダブルクリックすることで、下図の赤枠部分のように Break point を追加することができます。
【図36】Break point の追加方法
デバッグ時の操作については画面上部のデバッグ用ツールバーから操作することができます。
それぞれの使用方法は下記の図と表をご参照ください。
【図37】デバッグ用ツールバーのボタンの説明
番号 | ボタン名 | 機能 |
1 | Resume | 次の Break point もしくは、デバッグプロセスが終了するまで再開します。 |
2 | Suspend | デバッグ実行中のコードを一時停止します。 |
3 | Terminate | デバッグ実行中のコードを終了します。 |
4 | Step into | 現在実行中のコードの次のメソッドにステップインします。 |
5 | Step Over | 現在実行中のコードの次のメソッドをステップオーバーします。 |
6 | Step Return | ステップインしたメソッドから戻ります。 |
5. RiscFree* IDE からの外部ツールの起動
5-1. 概要
RiscFree* IDE では External Tools Configuration を使用することで、実行ファイル形式のファイルを GUI 上で引数を指定して実行することができます。
RiscFree* IDE ではデフォルトで JTAG コンソールをもたないため、JTAG UART を使用したコンソール出力を使用する場合はこの設定を使用します。
5-2. 外部ツールの登録
この項では外部ツールの登録方法をご紹介します。
① RiscFree* IDE の Run メニュー ⇒ External Tools ⇒ External Tools Configuration を選択します。
【図38】External Tool の登録方法(その 1)
② External Tools Configurations のウィンドウが表示されるので、下図の赤枠から New launch configuration を選択します。
【図39】External Tools の登録方法(その 2)
③ 外部ツール登録用の画面が表示されるので、下図に従って値を入力し Apply ボタンをクリックして登録を完了します。
【図40】External Tools の登録方法(その 3)
*1 : Browse Workspace を選択することで app 、bsp のディレクトリーを簡単に入力することができます。
*2 : Show Command Line を押下することで、実際に実行されるコマンドを下図のように確認することができます。
【図41】External Tools の登録方法(その 4)
5-3. 登録推奨コマンド
この項では RiscFree* IDE にて Nios® V を実装したシステムを開発する際に、業務を効率化するうえで登録しておくと便利な実行ファイルをご紹介します。
実行ファイル名 | 所在 | 引数 | 概要 |
juart-terminal.exe | <Quartus® インストール・ディレクトリー>\ <Quaruts® Version>\Quartus\bin64 |
-c 1 -d 0 -i 0 | Jtag コンソールの表示 |
niosv-app.exe | <Quartus® インストール・ディレクトリー>\ <Quaruts® Version>\Niosv\bin |
『4-3. app プロジェクトの作成』を参照 | |
cmake.exe |
<Quartus® インストール・ディレクトリー>\ |
6. おわりに
この記事では Ashling* の RiscFree* IDE を使用した Nios® V 実装システムの開発手順についてご紹介しました。
Nios® V プロセッサーに関する情報については、下記メーカーのページより詳細をご確認いただけますので併せてご参照ください。
また、弊社では Nios® V に関する情報をまとめた「Nios® V まとめページ」をご用意しております。本記事以外にも有用な情報がありますので、こちらも併せてご確認ください。