k0b0's record.

Computer Engineering, Arts and Books

RISC-VのInstruction Set Simulator(ISS)を試す[追記:インストールされるツール群]

開発環境

インストール手順

1, 以下のコマンドから必要なパッケージをインストールする。

$ sudo apt-get install autoconf automake autotools-dev curl device-tree-compiler libmpc-dev libmpfr-dev libgmp-dev libusb-1.0-0-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev device-tree-
compiler pkg-config

2, インストールパスを設定

$ echo  export RISCV=(riscv-toolsのインストールディレクトリパス) >> $HOME/.bash_profile
$ echo export PATH=$PATH:$RISCV/bin >> $HOME/.bash_profile

3, インストール

 Gitよりソースコードをダウンロードしてインストールする。

$ git clone https://github.com/riscv/riscv-tools.git
$ cd ./riscv-tools
$ git submodule update --init --recursive
$ ./build.sh
<インストールされるツール群>
ツール名 説明
riscv-isa-sim RISC-Vの簡易シミュレーター
riscv-fesvr ホスト側で動作する「Front-end server」。Host-Target InterFace (HTIF)を経由してターゲットプロセッサと通信する。
riscv-pk 最低限のシステムコールを処理するProxy Kernel。ホスト上のシミュレーター上で動かすことを想定している。
riscv-opcodes オペコードの定義。
riscv-tests テストツール。
riscv-llvm LLVMRISC-Vのサポートを追加したコード。
riscv-gnu-toolchain GCCglibcqemuなどのGNUツールチェインやエミュレーター
riscv-openocd JTAG-ICEにも対応したデバッガ。

 4, ツールチェインの動作チェック

 インストールが完了したら適当なプログラムをコンパイルしてテストしてみる。

・プログラムの作成

$ echo -e '#include <stdio.h>\n int main(void) { printf("Hello world!\\n"); return 0; }' > hello.c

コンパイル

$ riscv64-unknown-elf-gcc -o hello hello.c

 ・実行

$ spike pk hello 

 プログラム実行時のエラーについて

コンパイルしたプログラムを実行した際に以下のようなエラーがでる場合がある。 

 terminate called after throwing an instance of 'std::runtime_error' what(): couldn't   allocate 2147483648 bytes of target memory

どうやら、メモリのスワップ領域が足りず、メモリ領域を割り当てられないみたい。

スワップ領域のサイズを変更すれば解決できそう。開発環境が仮想マシンである場合はメインメモリの容量を上げれば解決する。ちなみに著者は仮装マシンのメインメモリの容量を1GBから2GBに変更し無事解決した。

 

参考サイト

github.com