1

我已经安装了具有以下设置的 riscv-gnu-toolchain,它按预期工作:

./configure --prefix=/opt/riscv --enable-multilib --with-arch=rv32i --with-abi=ilp32

现在我正在尝试构建一个能够运行使用此工具链编译的可执行文件的尖峰版本。

  • riscv-fesvr 似乎没有任何特定于 ISA 的设置。我用它编译了../configure --prefix=/opt/riscv

  • riscv-isa-sim 提供--with-isa,所以我设置为:../configure --prefix=/opt/riscv --with-isa=RV32I除了缺少包含到 fesvr 的路径的一些问题之外,我必须在 makefile 中手动修复这些问题。

  • 我用 riscv-pk 构建的../configure --prefix=/opt/riscv --host=riscv32-unknown-elf,编译也没有问题。

不幸的是,如果我尝试运行生成的尖峰可执行文件,则会出现分段错误。如果我不提出任何论据,我会得到“使用”打印,但没有其他工作。

$ echo -e '#include <stdio.h>\n int main(void) { printf("Hello world!\\n"); return 0; }' > hello.c
$ riscv32-unknown-elf-gcc -o hello hello.c
$ spike pk hello
$ Segmentation fault (core dumped)
$ spike pk
$ Segmentation fault (core dumped)
$ spike hello
$ Segmentation fault (core dumped)
$ spike --isa=RV32 pk hello
$ Segmentation fault (core dumped)
$ spike --isa=RV32 pk
$ Segmentation fault (core dumped)
$ spike --isa=RV32 hello
$ Segmentation fault (core dumped)

我不知道从哪里开始调试这个。

4

1 回答 1

0

我猜是 riscv-isa-sim failed 导致显示消息“core dumped”。因为我添加了一条我自己的指令并且它的格式错误,所以当我使用这条指令时,出现了“core dumped”的消息。我建议你不需要一一安装。您可以通过从https://github.com/riscv/riscv-tools克隆来安装整个工具链

于 2018-06-04T11:07:46.127 回答