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$が入り込むが、レジストリエディタを使ってこの設定を無効化する。
以下のエラーメッセージで落ちた。このエラーメッセージで検索すると、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のアカウントでも未サポートとのことらしい。