FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Ubuntu on Windows Subsystem for LinuxでRISC-V環境のビルド試行

f:id:msyksphinz:20181113014541p:plain

Ubuntu on Windows Subsystem for Linux上でRISC-Vのツールチェインとデザインが使えるのかどうか試行した。

なんでこんなことをしているのかというと、自宅で使っているUbuntu on Virtual Boxがクラッシュして自宅のRISC-V環境を全部失ったから。 折角なので、Windows Subsystem for Linux上でRISC-Vのツールが動作するか確かめておきたい。

時間がかかるので後で追記する。

riscv-tools

64-bit版は正常にビルド完了した。 32-bit版も正常にビルド完了した。

Rocket-Chip (とchisel)

Chiselは通常のUbuntuと同様にインストールできた。

Rocket-Chipのビルドも完了し、RTLシミュレーションは実行できた。

$ make output/dhrystone.riscv.out
mkdir -p ./output
ln -fs /home/msyksphinz/riscv64//riscv64-unknown-elf/share/riscv-tests/benchmarks/dhrystone.riscv output/dhrystone.riscv
./emulator-freechips.rocketchip.system-DefaultConfig +max-cycles=100000000 +verbose output/dhrystone.riscv 3>&1 1>&2 2>&3 | /home/msyksphinz/riscv64/bin/spike-dasm  > output/dhrystone.riscv.out && [ $PIPESTATUS -eq 0 ]
Microseconds for one run through Dhrystone: 496
Dhrystones per Second:                      2013
mcycle = 248426
minstret = 198768

Freedom-u-sdk

UbuntuのPATHが悪さをしているようだ。デフォルトだとLinuxのPATHにはWindowsの$PATH$が入り込むが、レジストリエディタを使ってこの設定を無効化する。

qiita.com

以下のエラーメッセージで落ちた。このエラーメッセージで検索すると、WSLではサポートされていないようだ。残念。

PATH="/home/msyksphinz/work/riscv/freedom-u-sdk/work/buildroot_initramfs/host/bin:/home/msyksphinz/work/riscv/freedom-u-sdk/work/buildroot_initramfs/host/sbin:/home/msyksphinz/work/riscv/freedom-u-sdk/work/buildroot_initramfs/host/usr/bin:/home/msyksphinz/work/riscv/freedom-u-sdk/work/buildroot_initramfs/host/usr/sbin:/home/msyksphinz/work/riscv/freedom-u-sdk/toolchain/bin:/home/msyksphinz/.cargo/bin:/home/msyksphinz/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/home/msyksphinz/software/sbt/bin/:/usr/lib/jvm/java-8-oracle/bin:/usr/lib/jvm/java-8-oracle/db/bin:/usr/lib/jvm/java-8-oracle/jre/bin:/home/msyksphinz/software/sbt/bin/" /home/msyksphinz/work/riscv/freedom-u-sdk/work/buildroot_initramfs/host/usr/bin/fakeroot -- /home/msyksphinz/work/riscv/freedom-u-sdk/work/buildroot_initramfs/build/_fakeroot.fs
fakeroot, while creating message channels: Function not implemented
This may be due to a lack of SYSV IPC support.
fakeroot: error while starting the `faked' daemon.
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
fs/tar/tar.mk:13: recipe for target '/home/msyksphinz/work/riscv/freedom-u-sdk/work/buildroot_initramfs/images/rootfs.tar' failed
make[2]: *** [/home/msyksphinz/work/riscv/freedom-u-sdk/work/buildroot_initramfs/images/rootfs.tar] Error 1
Makefile:36: recipe for target '_all' failed
make[1]: *** [_all] Error 2
make[1]: Leaving directory '/home/msyksphinz/work/riscv/freedom-u-sdk/buildroot'
Makefile:90: recipe for target '/home/msyksphinz/work/riscv/freedom-u-sdk/work/buildroot_initramfs/images/rootfs.tar' failed
make: *** [/home/msyksphinz/work/riscv/freedom-u-sdk/work/buildroot_initramfs/images/rootfs.tar] Error 2

Freedom-e-sdk

ダウンロードとビルド自体はできる。しかしサンプルコードをアップロードしようとすると失敗した。 デバイスドライバがまだWSLでサポートされていないらしい。 SiFiveのアカウントでも未サポートとのことらしい。

forums.sifive.com