FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

Environment Modulesを使ってRISC-Vのツール群を整理する環境構築

RISC-Vのツール群、主にコンパイラツールは32bitと64bitのものが存在する。それぞれにライブラリが定義されており、別々にディレクトリを用意してインストールするのが良いと思われる。

ビルドスクリプトも別々に用意されている。

riscv-tools/build.sh # 64bit用 riscv-tools/build-rv32ima.sh # 32bit用

これらのツール群のパスを設定するために、いちいちスクリプトを変更するのは面倒だ。これをかんりするために、Environment Modulesを使ってパスとライブラリを管理しよう。

modules.sourceforge.net

RISC-Vのツール群で設定する必要があるのは、

の設定が必要だ。${HOME}/modules/riscv/ディレクトリに riscv32, riscv64 ファイルを作り、環境変数 MODULEPATH=${HOME}/modules を設定する。

  • ${HOME}/modules/riscv/riscv32
#%Module1.0
##
proc ModulesHelp { } {
    puts stderr "RISC-V 32-bit Toolchain\n"
}

module-whatis   "RISC-V 32-bit Toolchain"

# append pathes
setenv       RISCV           $::env(HOME)/riscv32/
prepend-path PATH            $::env(HOME)/riscv32/bin/
prepend-path LD_LIBRARY_PATH $::env(HOME)/riscv32/lib/
  • ${HOME}/modules/riscv/riscv64
#%Module1.0
##
proc ModulesHelp { } {
    puts stderr "RISC-V 64-bit Toolchain\n"
}

module-whatis   "RISC-V 64-bit Toolchain"

# append pathes
setenv       RISCV           $::env(HOME)/riscv64/
prepend-path PATH            $::env(HOME)/riscv64/bin
prepend-path LD_LIBRARY_PATH $::env(HOME)/riscv64/lib

module avail で、ツール群の存在を確認する。

module avail

------------------------- /home/msyksphinz/modules/ ---------------------------------------
riscv/riscv32 riscv/riscv64

例えば、32bitツール群をロードしてみよう。

$ module load riscv/riscv32
$ printenv RISCV
/home/msyksphinz/riscv32/
$ which riscv32-unknown-elf-gcc
/home/msyksphinz/riscv32/bin//riscv32-unknown-elf-gcc
$ which riscv64-unknown-elf-gcc

次に、64bitツール群をロードしてみる。

$ module load riscv/riscv64
$ printenv RISCV
/home/msyksphinz/riscv64/
$ which riscv32-unknown-elf-gcc
$ which riscv64-unknown-elf-gcc
/home/msyksphinz/riscv64/bin/riscv64-unknown-elf-gcc

ちゃんと設定できた!