本記事では、Ashling から提供される Visual Studio Code (以後 VS Code)向けのエクステンションを使用して Nios V のデバッグを実行するための手順について紹介します。
通常 Nios V 向けのデバッグにおいては Ashling より提供される eclipse ベースの統合開発環境である RiscFree IDE を使用しますが、使い慣れた VS Code でデバッグを実施したいご要望もあるかと思います。そこで登場したのが VS Code 向けのエクステンションとなりセットアップは必要なもののユーザの希望に応じて使い分けていただけるようになりました。
本記事の内容は下記ユーザマニュアルの「3. Ashling Visual Studio Code Extension for Altera FPGAs」の章をベースとして記述しています。
- Ashling RiscFree Integrated Development Environment (IDE) for Altera FPGAs User Guide
注釈:本記事の画面キャプチャーは日本語版と英語版のUIの違いのために併記している箇所があります。お使いの環境に合わせてご確認ください。
検証環境
以下のツールバージョンにて検証しています。本記事では Standard Edition をターゲットに記述していますが基本的な操作は同一です。
- Quartus Prime Standard v24.1
- Ashling* RiscFree* IDE for Altera 24.1std.0.1077
- ターゲットボード
- DE10-Nano SoC (Cyclone V SoC)
- Visual Studio Code (バージョン: 1.95.3)
インストール
Quartus Prime のインストール
事前に Quartus Prime および Ashling RiscFree IDE のインストールが必要です。本手順については本記事では割愛します。
Ashling Visual Studio Code Extension for Altera FPGAs のインストール
VSCode を開きます。
左側の拡張機能メニューより VSIX からのインストール を選択します。
Ashling RiscFree IDE のインストールディレクトリ配下に存在する以下のフォルダを選択します。フォルダ内に格納される .vsix ファイルを指定してインストールボタンを押下します。
- C:\intelFPGA_standard\24.1std\riscfree\vscode
インストールが完了すると左側のメニューバーに Ashling メニューが追加されます。
マニュアルの指示に従い以下の追加拡張機能をインストールします。
- C/C++
- CMake
- CMake Tools
- debug-tracker-vscode
- Embedded Tools
- Peripheral Viewer
- Memory View
注記: Ashling VS Code Extention は VS Code の標準エクステンションとしても登録されており、さらに新しいバージョンがインストール可能です。(2025/05/15現在)
バージョンアップいただいても正常動作することは確認しておりますが動作について保証するものではございません。
ツールの初期設定
続いてインストールした VS Code エクステンションの初期設定を実施します。
Ashling メニューより 「Open Plugin Settings」 を選択します。
Installation Path に別途インストール済みの RiscFree IDE のディレクトリを指定します。複数のバージョンの RiscFree IDE をインストールしている場合に特に注意してください。
今回の例では以下のパスを指定します。
- C:\intelFPGA_standard\24.1std\riscfree
ツールのインストール状況と依存関連のチェック
続いて「Verify and Confirure Dependencies」を選択し、ツールが正しくインストールされているかをチェックします。
問題なくインストールされている場合には以下のようなログが出力されます。
[16:01:22] Starting Quartus installation search...
[16:01:24] Checking environment variables:
[16:01:24] QUARTUS_ROOTDIR: C:\intelFPGA_standard\24.1std\quartus
[16:01:24] QUARTUS_ROOT: not set
[16:01:24] ALTERA_ROOT: not set
[16:01:24] ✅ Found Quartus installation(s) at: C:\intelFPGA_standard\24.1std\quartus
[16:01:24] Searching for RiscFree installation...
[16:01:26] Checking for RiscFree at: C:\intelFPGA_standard\24.1std\riscfree
[16:01:26] ✅ Valid RiscFree installation found at: C:\intelFPGA_standard\24.1std\riscfree
[16:01:26] Verifying RiscFree toolchain...
[16:01:28] Setting up VS Code configuration...
[16:01:29] ✅ Setup completed successfully!
[16:01:29]
Checking toolchain components...
[16:01:29] Checking Ashling SDK Installation
================================
[16:01:29] Verifying Build Tools
-------------------------------
Checking CMake........ ✅
Location: C:\intelFPGA_standard\24.1std\riscfree\build_tools\cmake\bin\cmake.exe
Getting version........ 3.31.1
Checking Make........ ✅
Location: C:\intelFPGA_standard\24.1std\riscfree\build_tools\bin\make.exe
Checking Ashling CLI........ ✅
Location: C:\intelFPGA_standard\24.1std\riscfree\cli\ashling-cli.exe
[16:01:31] Verifying Debug Tools
-------------------------------
Checking ARM GDB Server........ ✅
Location: C:\intelFPGA_standard\24.1std\riscfree\debugger\gdbserver-arm\ash-arm-gdb-server.exe
Checking RISC-V GDB Server........ ✅
Location: C:\intelFPGA_standard\24.1std\riscfree\debugger\gdbserver-riscv\ash-riscv-gdb-server.exe
Checking QEMU RISC-V........ ✅
Location: C:\intelFPGA_standard\24.1std\riscfree\qemu\qemu-system-riscv32.exe
Getting version........ 9.0.2
[16:01:35] Verifying RISC-V Toolchain
------------------------------------
Checking RISC-V GCC (32-bit)........ ✅
Location: C:\intelFPGA_standard\24.1std\riscfree\toolchain\riscv32-unknown-elf\bin\riscv32-unknown-elf-gcc.exe
Getting version........ 13.2.0
Checking RISC-V G++ (32-bit)........ ✅
Location: C:\intelFPGA_standard\24.1std\riscfree\toolchain\riscv32-unknown-elf\bin\riscv32-unknown-elf-g++.exe
Checking RISC-V GDB (32-bit)........ ✅
Location: C:\intelFPGA_standard\24.1std\riscfree\toolchain\riscv32-unknown-elf\bin\riscv32-unknown-elf-gdb.exe
Getting version........ Version unknown
[16:01:38] Verifying ARM Toolchain
---------------------------------
Checking ARM GDB (AArch64 ELF)........ ✅
Location: C:\intelFPGA_standard\24.1std\riscfree\toolchain\Arm\aarch64-none-elf\bin\aarch64-none-elf-gdb.exe
Getting version........ Version unknown
[16:01:41] Summary
=======
Components Found: 10/10
✅ All components verified successfully
これでセットアップは完了です。
プロジェクトの生成とデバッグ
ハードウェアデザインの準備
ここから先の手順を実行するためには Nios V を含むハードウェアのデザインの準備が必要です。本記事では DE10-Nano をターゲットに実機確認いたしましたがお使いになるボードに合わせて修正ください。
注釈:Nios V 向けの Hello World のサンプルについては ReadMe にも記載される通り、約 100KB 程メモリを必要としますのでこの点に注意してデザインをご用意ください。
TITLE:
Readme - Hello World Software Example
DESCRIPTION:
Simple program that prints "Hello World" in a loop.
The memory footprint of this hosted application is intended to be small (~100 kbytes) by default
using a standard reference deisgn.
PERIPHERALS USED:
This example exercises the following peripherals:
- STDOUT device (UART or JTAG UART)
使用したデザインの Platform Designer の構成は以下の通りです。
Nios V のコアとしては Nios V/m を選択し、ワークメモリとして On-Chip メモリを 128KB で用意しています。その他、printf の出力先となる JTAG_UART を実装しています。Hello_World を実行するに際しては PIO は必須ではありません。
BSPの生成
用意したハードウェアデザインのディレクトリを VS Code で開きます。
Ashling メニューより「Nios V BSP Generator」を選択します。ポップアップウィンドウが起動するので「Yes」を押下して GUI を起動させます。
BSP Editor が起動します。
ファイルメニューより「New BSP...」を選択します。
ハードウェアデザインに含まれる .sopcinfo ファイルを指定します。この例では niosv_system.sopcinfo を指定しています。
デフォルト設定のまま「Generate」を押下して BSP を生成します。完了したら「Exit」を押下して画面を閉じてください。
生成が完了すると上記 .sopcinfo ファイルを指定するウィンドウに記載されるデフォルトパスに対して BSP が生成されます。今回の例では以下のパスに出力されます。
- C:\vscode_test\software\hal_bsp
アプリケーションの生成
続いてアプリケーション側を生成します。
Ashling メニューより「Nios V App Generator」を選択します。
タブとして専用の GUI が起動します。
BSP のパスの指定には先ほど BSP を生成した以下のパスを指定します。
- C:\vscode_test\software\hal_bsp
Sample selection には hello_world を指定します。「Add applocation to the workspace」にはチェックを入れたままとしてください。CMake で生成する成果物の生成ディレクトリに影響します。
生成が完了すると以下のポップアップが表示されます。
また、Ashling メニューに対して app が追加されます。前述の操作で「Add applocation to the workspace」にはチェックを入れたままとすることでこの状態になります。
アプリケーションのビルド
app 側の「Build」を選択します。
すると、上部のメニューに以下の候補が表示されるので Ashling RISC-V GNU GCC toolchain を指定します。
ビルドに成功すると software/app 配下に build ディレクトリが生成され、その中に app.elf が生成されていることが確認できます。
デバッグの実行
ここからは実機が必要になります。ボードに対してあらかじめハードウェアのデザインを書き込んでおいてください。
デバッグコンフィグレーションの設定
Ashling メニューより Debug Configuration の横に表示される「+」ボタンを選択します。
「Nios V Hardware Debugging」を選択すると設定の名前を入力が促されます。
任意の名前を入力して「Enter」を押下します。ここでは niosv_test という名前としています。
デバッグコンフィグレーションの設定画面が開くのでターゲットのボードに合わせて設定します。「Auto-detect Scan Chain」を押下すると JTAGチェーンのは以下にあるデバイスがリストされるのでターゲットのデバイスを選択します。
注釈: HPS が存在するデバイスの場合には HPS 側の JTAG が表示されているケースがあるので FPGA 側の JTAGデバイスを選択することに注意してください。
右上の「Debug」ボタンを押下してデバッグを開始します。
接続が完了すると main文の先頭でブレークし停止します。
ここまでくれば画面を見ながら直感的に操作いただけるものと思います。デバッグウィンドウの操作方法については冒頭で紹介したマニュアルを参照ください。
- Ashling RiscFree Integrated Development Environment (IDE) for Altera FPGAs User Guide
まとめ
VS Code 向けのエクステンションを活用することで使い慣れた VS Code で Nios V をデバッグする環境を整えることが容易に実現できます。通常コマンドライン操作となる BSP の生成やアプリケーションの生成についても GUI ベースで進めることも可能となります。
参考情報