LoginSignup
22
13

More than 3 years have passed since last update.

Ubuntu上でのRISC-Vの環境構築

Last updated at Posted at 2019-07-20

記事の概要

Ubuntu上にRISC-Vの開発環境を構築する手順を説明します。
Chiselを使用することを前提にしていますが、Verilogを使用される方は「vivadoのインストール」と「RISC-Vクロスコンパイラのビルド」のみご参照ください。

また、本記事でのインストールは2019年7月20日時点のバージョンなどになります。

使用したPC

本記事においては以下のPCを使用しています。

  • Ubuntu 16.04LTS
    • メモリ 3.7GB
    • プロセッサ 2.67GHz x 4
    • OS 64ビット

2017年8月に発刊されたFPGAマガジンの記事において、RISC-V用コンパイラはWindowsマシンやWindows上の仮想環境では正常にビルドできないと書かれていました。
現在では改善されているかは調べていませんが、Ubuntuを使用することにしました。

私はUbuntu PCを所有していなかったので、型落ちのPCを初期化してUbuntuをインストールしました。
Yahooオークションなどでは中古PCにUbuntuをインストールしたものが安く売られているので、それらを利用するのもいいかもしれません。

Scala開発環境構築

Chiselを用いてRISC-Vを開発する場合はScalaが必要です。
Verilogで開発する場合、この作業は不要になります。

以下の手順は、sbt公式サイトの「Linux への sbt のインストール」を参照しています。

OpenJDKのインストール

Scalaを使用する場合、ScalaはJava仮想マシン上で動作するのでJDKをインストールします。
必要になるのはバージョン8になります

sudo apt install openjdk-8-jdk

sbt インストール

以下のコマンドを実行してください。

echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt-get update
sudo apt-get install sbt

インストールが正常に完了されているか、sbtシェルを起動して確認します。

sbt

正常に完了していれば、以下のように起動します。シェルを閉じるには、exitと入力するか、Ctrl+D を押してください。

[info] Loading project definition from /home/kosukematsui/project
[info] Set current project to kosukematsui (in build file:/home/kosukematsui/)
[info] sbt server started at local:///home/kosukematsui/.sbt/1.0/server/XXXXXXXXX/sock
sbt:kosukematsui> 

Scalaを対話シェルで試したい場合は以下を入力します。

sbt console

起動後にプログラムを入力すれば応答します。

scala> println("Hello, World!")
Hello, World!

Verilatorのインストール

ChiselのシミュレーションをするためのC++コードを出力するツールになります
以下はhttps://www.veripool.org/projects/verilator/wiki/Installingを参照しています。

Verilator依存パッケージをインストールします。

sudo apt-get install git make autoconf g++ flex bison

gitリポジトリからcloneを行い、Verilatorのビルドとインストールを実行します。

git clone http://git.veripool.org/git/verilator
unset VERILATOR_ROOT
cd verilator
git pull
autoconf
./configure
make
sudo make install

vivadoのインストール

インストール手順はFPGAの部屋「Ubuntu16.04にVivado 2016.4をインストール」を参照しました。

Xilinx社のダウンロードから「Vivado Design Suite - HLx Edition - 2019.1 Full Product Installation」 の「Vivado HLx 2019.1: Vivado HLx 2017.4: WebPACK および Editions - Linux 用自己解凍型ウェブ インストーラー (BIN - 115.05 MB) 」をダウンロードします。
ダウンロードにはUser IDとPasswardの登録が必要になります。

インストーラを実行します。

cd ~/ダウンロード
chmod +x Xilinx_Vivado_SDK_Web_2019.1_0524_1430_Lin64.bin
sudo ./Xilinx_Vivado_SDK_Web_2019.1_0524_1430_Lin64.bin

インストール画面の起動後、基本的にはNEXTを押していくだけでインストールできますが、以下の設定などが必要になります。

  • Select Install画面では、登録したUser IDとPasswardを入力する
  • Select Ediition to Install 画面では「Vivado Webpack」を選択
  • Vivado HL Webpack の画面では、「Software Development Kit (SDK)」のチェックが入っているかを確認
    • FPGAボードを使用する場合は、対応するFPGAボードにもチェックが入っているかを確認する(私の場合はArtyシリーズに初期状態でチェックが入っていることを確認しました)

インストール完了後は~/.bashrcにパスを追加します。使用しやすいエディタで編集してください。

vi ~/.bashrc

以下を追加します。
Pathはvivadoをインストールした場所に合わせて適宜変更ください。
私の場合は/toolsにvivadoをインストールしましたが、参照した幾つかのサイトでは/optにインストールする例が多いようでした

# Xilinx vivado
source /tools/Xilinx/Vivado/2019.1/settings64.sh
alias xsdk='env SWT_GTK3=0 xsdk'
alias vivado='env SWT_GTK3=0 vivado'

FPGAボードを使用する場合

FPGAボードを使用する場合は、FPGAボードファイルとボードに対応する制約ファイルが必要になります

私が使用しているARTY S7のFPGAボードは最初からインストールされていました。
そうでない場合は、FPGAボードファイルを入手して、例えばXilinx/Vivado/2019.1フォルダ以下のdata/boards/board_files に格納ください。

ARTY S7の制約ファイルはhttps://github.com/Digilent/digilent-xdc/から入手しました。
これはvivadoで論理合成する際に使用します。

QEMUのインストール

現時点での最新版のqemu-4.0.0をインストールします。
以下のコマンドのバージョンは適宜変更してください。

wget https://download.qemu.org/qemu-4.0.0.tar.xz
tar xf qemu-4.0.0.tar.xz
cd qemu-4.0.0/
mkdir build
cd build/
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev
../configure --target-list=riscv32-softmmu,riscv64-softmmu,riscv64-linux-user,riscv32-linux-user --prefix=/opt/qemu-riscv
make
sudo make install

インストール完了後は~/.bashrcにパスを追加します。使用しやすいエディタで編集してください。

vi ~/.bashrc

以下を追加します。

# QEMU
export PATH=${PATH}:/opt/qemu-riscv/bin

インストール完了後、正常に完了しているかは、バージョン番号が表示できるかを見ることで確認できます。
新しい端末を開くか、

source ~/.bashrc

を実行後に、以下のコマンドでご確認ください。

qemu-system-riscv32 --version
qemu-system-riscv64 --version
qemu-riscv64 --version

RISC-Vクロスコンパイラのビルド

RISC-V用のクロス開発環境を構築します。
ビルド手順はhttps://github.com/riscv/riscv-gnu-toolchainおよびソフトウェアプラットフォーム屋のメモ帳「RISC-V 32bit版gnu-toolchainのビルド&インストール方法」を参照しました。

toolchainをインストールします。

git clone --recursive https://github.com/riscv/riscv-gnu-toolchain

依存パッケージをインストールします。

sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev

ビルド作業は環境や目的に合わせて、後述する4通りから選択します。
私はNewlib cross-compilerとLinux cross-compiler 32-bit and 64-bit両対応版をビルドしました。
ビルドには数時間を要します。

以下のコマンドでフォルダ内に移動後、各コマンドを実行ください。

cd riscv-gnu-toolchain/

Newlib cross-compilerをビルドする場合

./configure --prefix=/opt/riscv
sudo make

Linux cross-compiler RV64GC (64-bit)対応版をビルドする場合

./configure --prefix=/opt/riscv
sudo make linux

Linux cross-compiler RV32IM (32-bit)対応版をビルドする場合

./configure --prefix=/opt/riscv --with-arch=rv32gc --with-abi=ilp32d
sudo make linux

Linux cross-compiler 32-bit and 64-bit両対応版をビルドする場合

./configure --prefix=/opt/riscv --enable-multilib
sudo make linux

パスを通す

ビルド完了後は~/.bashrcにパスを追加します。使用しやすいエディタで編集してください。

vi ~/.bashrc

以下を追加します。
Pathはインストールした場所に合わせて適宜変更ください。

# RISC-V toolchain
export PATH=${PATH}:/opt/riscv/bin

インストール完了後、正常に完了しているかは、バージョン番号が表示できるかを見ることで確認できます。
新しい端末を開くか、

source ~/.bashrc

を実行後に、以下のコマンドでご確認ください。

Newlib cross-compiler

riscv64-unknown-elf-gcc -v

Linux cross-compiler RV64GC (64-bit)対応版

riscv64-unknown-linux-gnu-gcc -v

Linux cross-compiler RV32IM (32-bit)対応版

riscv32-unknown-linux-gnu-gcc -v

Linux cross-compiler 32-bit and 64-bit両対応版

riscv64-unknown-linux-gnu-gcc -v

最後に

上記手順でうまくインストールできない場合はお気軽にご質問ください。
また、手順に誤りや不足があれば、ご指摘いただけると助かります。

その他参照サイト

変更履歴

  • 2019年10月3日

QEMUのインストールコマンドで64bit版のriscv64-softmmuが抜けていたので修正

(誤)

../configure --target-list=riscv32-softmmu,riscv32-softmmu,riscv64-linux-user,riscv32-linux-user --prefix=/opt/qemu-riscv

(正)

../configure --target-list=riscv32-softmmu,riscv64-softmmu,riscv64-linux-user,riscv32-linux-user --prefix=/opt/qemu-riscv
22
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
13