RISC-Vでのハードウェア・ソフトウェア開発をするにあたり、まず必要になるのがツール群だ。
RISC-Vのソフトウェアツール群は、riscv-toolsというリポジトリにまとめられており、まずはこのリポジトリをダウンロードしてコンパイラなどを構築する必要がある。 しかし、このリポジトリはサブリポジトリを含めコンパイラのソースコードをすべてダウンロードするなど、すべてダウンロードすると数GBになってしまうためディスク容量を食ったり、ネットワーク要領を食ったりして非常に不便なものだった。
ところがここ最近、このriscv-toolsがアップデートされ、コンパイラなどの重たいツール群が除去された。 リポジトリが軽くなったのは良いことなのだが、ではコンパイラはどこから持ってくるのか?READMEを参照すると、crosstool-ngを使用する、と書いてある。 なるほど、crosstool-ngはもうRISC-Vに対応しているのか。ならば、crosstool-ngとriscv-toolsでRISC-Vの開発環境を構築できるはずだ。やってみよう。
crosstool-ngのインストール
crosstool-ngは以下のページからダウンロードする。
cd /tmp curl -L http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.24.0.tar.xz | tar Jx cd crosstool-ng-1.24.0 ./configure make -j$(nproc) sudo make install
これでct-ng
コマンドが使えるようになった。
ct-ng
コマンドで、サンプルターゲットを確認しよう。
ct-ng update-samples
ct-ng list-samples | grep riscv
$ ct-ng list-samples | grep riscv [G..X] riscv32-hifive1-elf [G..X] riscv32-unknown-elf [G..X] riscv64-unknown-elf [G..X] riscv64-unknown-linux-gnu
そこで、riscv64-unknown-elf
をインストールしてみる。
$ ct-ng riscv64-unknown-elf
CONF riscv64-unknown-elf # # configuration written to .config # *********************************************************** Initially reported by: Paul Walmsley <paul.walmsley@sifive.com> URL: https://www.sifive.com/ *********************************************************** WARNING! This sample may enable experimental features. Please be sure to review the configuration prior to building and using your toolchain! Now, you have been warned! *********************************************************** Now configured for "riscv64-unknown-elf"
ct-ng menuconfig
で、PREFIXを設定してインストールする先を指定する。
ビルドする。
ct-ng build
[INFO ] Performing some trivial sanity checks [WARN ] Number of open files 1024 may not be sufficient to build the toolchain; increasing to 2048 [INFO ] Build started 20190509.232202 [INFO ] Building environment variables [WARN ] Directory '/home/msyksphinz/src' does not exist. [WARN ] Will not save downloaded tarballs to local storage. [EXTRA] Preparing working directories [EXTRA] Installing user-supplied crosstool-NG configuration [EXTRA] ================================================================= [EXTRA] Dumping internal crosstool-NG configuration [EXTRA] Building a toolchain for: ... [INFO ] Stripping all toolchain executables [EXTRA] Creating toolchain aliases [EXTRA] Removing installed documentation [EXTRA] Collect license information from: /tmp/riscv64/.build/riscv64-unknown-elf/src [EXTRA] Put the license information to: /home/msyksphinz/riscv64-ctng/share/licenses [INFO ] Finalizing the toolchain's directory: done in 40.42s (at 87:59) [INFO ] Build completed at 20190510.004957 [INFO ] (elapsed: 87:55.45) [INFO ] Finishing installation (may take a few seconds)... [87:59] / %
ここまでで、インストール先を確認する。PREFIX=/home/msyksphinz/riscv64-ctng
にインストールした。
$ ls -l riscv64-ctng total 764 dr-xr-xr-x 1 msyksphinz msyksphinz 4096 5月 10 00:49 bin -r--r--r-- 1 msyksphinz msyksphinz 782011 5月 10 00:49 build.log.bz2 dr-xr-xr-x 1 msyksphinz msyksphinz 4096 5月 10 00:38 include dr-xr-xr-x 1 msyksphinz msyksphinz 4096 5月 10 00:38 lib dr-xr-xr-x 1 msyksphinz msyksphinz 4096 5月 10 00:38 libexec dr-xr-xr-x 1 msyksphinz msyksphinz 4096 5月 10 00:26 riscv64-unknown-elf dr-xr-xr-x 1 msyksphinz msyksphinz 4096 5月 10 00:49 share
このツール群は、PATH
とLD_LIBRARY_PATH
を通しておく。次にriscv-toolsをダウンロードして、ビルドする。
cd riscv-tools export PATH=${HOME}/riscv64-ctng-tools MAKEFLAGS="-j$(nproc)" ./build.sh
これでしばらく待っているとビルドが完了する。これで、crosstool-ngを使ったRISC-Vコンパイラの構成とriscv-toolsのツール群の構築が完了した。