組み込み

RISC-VをArty A7 FPGA用にビルドする方法

見習いタロー
見習いタロー
RISC-Vが気になるんで、ちょっと動かしたいんだけど…
見習いタロー
見習いタロー
RISC-Vが気になるあなたに、RISC-VをArty A7ボードで動かす方法をシリーズで解説します。今回はビルド編です!

オープンソースのISAとして注目を集め始めているRISC-V、ハードでLinuxのような革命が起こせるのかと期待されています。

RISC-Vはオープンソースでコードも公開されているため、誰でもFPGAにRISC-Vコアをビルドして動作させることができます。

今回は、Xilinx Artix FPGAを搭載したDigilentのArty A7ボード用にRISC-Vとその上で動作するプログラムをビルドしたいと思います。

 

今回の記事でビルドしたファイルをFPGAへ書き込む方法は別の記事で解説しています。

RISC-VをArty A7 FPGAに実際に書き込む オープンソースのISAとして注目を集め始めているRISC-V、ハードでLinuxのような革命が起こせるのかと期待されてい...

 

準備

必要なもの

Digilent Arty A7

Xilinx Artix A7を搭載したDigilentの開発ボードです。

 

Olimex

ARM-USB-TINY-H JTAGアダプタです。デバッグで必要となります。

 

動作環境

ホストOS:Ubuntu 18.04

Ubuntu18.04はVirtualbox上で動作させずに、Windows10 PCにマルチブートでインストールしました。

Vivadoはかなりのメモリを食うので、Virtualboxで動かすとメモリが足りなくなります。

 

ちなみに、私はRufusを使用して外付けハードディスクにUbuntuをインストールしました。

以下のような利点があります。

・Vivadoの容量が大きいため

・複数メンバーで開発環境を共有できるため

Windowsと同じハードディスクにマルチブートでも全然問題ありません。

今回はUbuntuのインストールが既に終わっている前提で始めます。

 

RISC-V FPGAビルド

RISC-VをArty A7 FPGAボード用にビルドする手順を説明します。

環境構築は、Digikey Digilent Arty A7 with Xilinx Artix-7 Implementing SiFive FE310 RISC-V(英文)を参考にしています。

 

Vivadoのインストール

VivadoのWebPackは無料で使用可能なFPGA開発ツールです。

 

インストーラーは「Vivadoのダウンロードページ」でダウンロードしてください。

ダウンロードには、Xilinxの登録が必要です。

下記コマンドでインストーラを実行します。

実行権限を付与して実行しています。

インストール後、インストーラは削除して構いません。

sudo chmod +x Xilinx_Vivado_SDK_2019.1_0524_1430_Lin64.bin
./Xilinx_Vivado_SDK_2019.1_0524_1430_Lin64.bin

 

無料で使えるWebPACKを選択します。

 

今回はArty A7で動作させるため、必要なものだけインストールします。

フルインストールすると、数十GBの容量が必要になります。

必要なものだけインストールするようにしましょう。

インストール先を/home/user/riscv/tool/Xilinxにしました。

userは、ユーザー名です。

アクセス権のあるhomeディレクトリ配下などの任意のディレクトリにインストールします。

かなり時間がかかると思います。気長に待ちましょう。

 

VivadoのDigilent開発ボードファイルのインストール

Gitから最新を取得したDigilent Arty A7の開発ボードファイルをVivadoのディレクトリにコピーします。

cd /home/user/riscv/tool
git clone https://github.com/Digilent/vivado-boards
cp -rv ./vivado-boards/new/board_files/* ./Xilinx/Vivado/2019.1/data/boards/board_files/

gitがインストールされていない場合は、sudo apt install gitでインストールできます。

 

RISC-V ツールチェーンのインストール

RISC-Vのツールチェーンをインストールします。

コンパイルに必要なGCCとデバッグに必要なOpenOCDをインストールします。

インストール後は、tar.gzは削除して構いません。

cd /home/user/riscv/tool
wget -c https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14.tar.gz
wget -c https://static.dev.sifive.com/dev-tools/riscv-openocd-0.10.0-2018.12.0-x86_64-linux-ubuntu14.tar.gz
tar xf riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14.tar.gz
tar xf riscv-openocd-0.10.0-2018.12.0-x86_64-linux-ubuntu14.tar.gz

 

ツールチェーンがインストールできているか確認

GCC

GCCがインストールできたか以下のコマンドで確認できます。

バージョンは異なってもエラーが出ていなければOKです。

/home/user/riscv/tool/riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14/bin/riscv64-unknown-elf-gcc --version

riscv64-unknown-elf-gcc (GCC) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

 

OpenOCD

下記エラーが起きるため、事前にインストールしておきます。

error while loading shared libraries: libftdi1.so.2: cannot open shared object file: No such file or directory

sudo apt install libftdi1-dev

 

OpenOCDがインストールできたか以下のコマンドで確認できます。

/home/user/riscv/tool/riscv-openocd-0.10.0-2018.12.0-x86_64-linux-ubuntu14/bin/openocd --version

Open On-Chip Debugger 0.10.0+dev-gcd32bd4 (2018-12-19-01:15)
Licensed under GNU GPL v2
For bug reports, read
    http://openocd.org/doc/doxygen/bugs.html

 

Download the SiFive Freedom repository

FreedomのコードをGitで取得してきます。

FreedomはSiFive社が公開しているFPGAコード

cd /home/user/riscv
git clone --recursive https://github.com/sifive/freedom

 

Artix-7 35T / Artix-7 100T のビルド

Freedomをビルドする前に、ビルドで使用する変数を定義しておきます。

.bashrcに記載しておくことで次回起動時も変数が保存されます

cd /home/user
nano .bashrc

# Add for building freedom -->
export RISCV=/home/user/riscv/riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14
export PATH=/home/user/riscv/Xilinx/Vivado/2019.1/bin:$PATH
# Add from building freedom <--
source .bashrc

 

念の為、確認しておきましょう。

echo $RISCV
/home/user/riscv/riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14

 

ビルド時にエラーとなるため、事前にインストールが必要です。

sudo apt install make
sudo apt install default-jre
sudo apt install maven
sudo apt install device-tree-compiler
sudo apt install python

 

Artix-7 35Tをビルドする場合

Artix-7 35Tをビルドする場合は、以下のコマンドを実行してください。

cd /home/user/riscv/freedom
make BOARD=arty -f Makefile.e300artydevkit clean
make BOARD=arty -f Makefile.e300artydevkit verilog
make BOARD=arty -f Makefile.e300artydevkit mcs

 

Artix-7 100Tをビルドする場合

Artix-7 100Tをビルドする場合は、以下のコマンドを実行してください。

cd /home/user/riscv/freedom
make BOARD=arty_a7_100 -f Makefile.e300artydevkit clean
make BOARD=arty_a7_100 -f Makefile.e300artydevkit verilog
make BOARD=arty_a7_100 -f Makefile.e300artydevkit mcs

参照

SiFive E31 Manualv19.05

Digilent Arty A7 with Xilinx Artix-7 Implementing SiFive FE310 RISC-V

Freedom Studio User Manual

SiFive Core IP FPGA Eval Kit User Guidev3p0

まとめ

RISC-Vをビルドする方法をまとめました。

実機を使わなくても、ビルドした結果を見てコンフィグレーションでビルド結果が変わるかなど確認することはできます。

次はArty A7 FPGAボードに実際に書き込む方法を解説していきます。

RISC-VをArty A7 FPGAに実際に書き込む オープンソースのISAとして注目を集め始めているRISC-V、ハードでLinuxのような革命が起こせるのかと期待されてい...

 

RISC-Vについて興味がある方は、次の本が参考になると思います。

著者は、RISC-Vに実際に参画しているCPUアーキテクチャの権威 パターソン先生です。

ABOUT ME
律野桜哉
RPAコンサルタントのプロコアラです。長年のエンジニア経験を活かしてして外資系コンサルファームでRPAコンサルしてます。 転職ノウハウ、プログラミング、英語の勉強方法など分かりやすいように解説していきます。