如何为RV32I指令集构建尖峰?

时间:2018-03-13 06:30:58

标签: riscv spike

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

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

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

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

  • 编译了它
  • riscv-isa-sim提供--with-isa,所以我设置:../configure --prefix=/opt/riscv --with-isa=RV32I这个构建正常,除了缺少包含fesvr路径的一些问题,我必须手动修复生成文件。

  • 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)

我不确定从哪里开始调试。

1 个答案:

答案 0 :(得分:0)

我想这是riscv-isa-sim失败导致显示消息“核心倾销”。因为我添加了一条我自己的指令并且其格式错误,所以当我使用此指令时,会发生消息“core dumped”。 我建议您不需要逐个安装它们。您可以通过从https://github.com/riscv/riscv-tools

克隆来安装整个工具链