質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
FPGA

FPGAは、製造後でも設計者によって書き換えができる論理回路です。即時に書き換えが可能なため、開発期間を短縮することが可能。何度でも書き換えられるといった柔軟性があるため、製造や開発における費用も削減できるといったメリットがあります。

Q&A

解決済

1回答

560閲覧

[riscv isa simulator spikeの使い方について] 標準出力が表示されずレジスタ一覧が表示されてしまう

nohahanon

総合スコア27

FPGA

FPGAは、製造後でも設計者によって書き換えができる論理回路です。即時に書き換えが可能なため、開発期間を短縮することが可能。何度でも書き換えられるといった柔軟性があるため、製造や開発における費用も削減できるといったメリットがあります。

0グッド

0クリップ

投稿2023/08/30 10:15

編集2023/08/30 23:23

デバッグモードを見ると謎の無限ループが発生しているようでした。ビルドがうまくいっていなかったようなのでもう一度やり直します。ビルド方法について何かご存じの方がいれば教えていただきたいです。
表示されるレジスタ一覧について、int main(){return 0;}も#include<stdio.n>\nint main(){printf("Hello World!\n");}も同じものが表示されます。
コンパイルの際-staticをつけても結果は変わりませんでした。

以下の内容は一応残しておきます。

実現したいこと

https://zenn.dev/ohno418/articles/5f6d5e01dc4981
以上の記事に従ってriscvにクロスコンパイルしたプログラムを実行した際標準出力が得られるようにしたいです。

前提

クロスコンパイラとproxy kernel, spikeのインストールを終え、エラーなくspikeを実行させることができました。

発生している問題・エラーメッセージ

しかし記事にあるような結果ではなく、以下のような出力が表示されます。

$ spike ./riscv64-unknown-linux-gnu/bin/pk hello_world bbl loader z 0000000000000000 ra ffffffc000004220 sp ffffffc00041ed30 gp 0000000000000000 tp 0000000000000000 t0 0000000000000025 t1 ffffffc00041ed6f t2 0000000000000000 s0 ffffffc00041ed31 s1 ffffffc00001a0c8 a0 000000000000002e a1 0000000000000100 a2 ffffffc00000d574 a3 0000000010000000 a4 0000000010000005 a5 0000000000000000 a6 000000000000003f a7 000000000000003f s2 ffffffc00001a0d8 s3 ffffffc00001a0e0 s4 ffffffc00000f018 s5 0000000000000001 s6 ffffffc000010478 s7 ffffffc00001a040 s8 ffffffc000010480 s9 ffffffc000010488 sA 0000000000000001 sB 0000000000000000 t3 fffffffffffffffc t4 ffffffc00000d320 t5 0000000000000009 t6 0000000000000015 pc ffffffc00000532c va/inst 0000000010000005 sr 8000000200006100 Kernel load segfault @ 0x0000000010000005

試したこと

helpで確認できるオプションを一通り試しましたが記事のような結果にはなりませんでした。

補足情報(FW/ツールのバージョンなど)

export RISCV=/opt/riscvのようにしてから、

riscv-gnu-toolchainは
./configure --prefix=$RISCV --enable-llvm --with-sim=spike --with-arch=rv64g
make -j$(nproc) linux

riscv-pkは
../configure --prefix=$RISCV--host=riscv64-unknown-linux-gnu --with-arch=rv64g
make
sudo make install

のようなパラメータでビルドしました。
riscv-pkのmakeでgnu/stubs-lp64.hがない!というエラーが起こった人は
https://github.com/riscv-software-src/riscv-pk/issues/125
が役に立つと思います。
加えて、-mcmodel=medanyなんでオプションはない!というエラーが起こった人は--with-archの指定がそろっていないのが問題みたいなので揃えてみると直るかもしれません。
gccでエラーが出たときはMakefile内のコンパイラをriscv-gnu-toolchainでインストールした$RISCV/bin下のファイルたちをgcc, objcopy, readelfに指定してあげるといいです。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

https://teratail.com/questions/lfr5b2pph85wmg
昔の捕捉に書いたままのオプションで成功しました。何が悪かったのかはわかりませんでした。パソコン初期化して全部最初からしたのが効いた??

投稿2023/09/05 06:52

nohahanon

総合スコア27

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問