Как построить шип для набора команд RV32I?

Я установил 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, которые мне пришлось исправить вручную в make-файле.

  • RISCV-ПК я построил с ../configure --prefix=/opt/riscv --host=riscv32-unknown-elfТакже нет проблем с компиляцией.

К сожалению, если я попытаюсь запустить получившийся в результате исполняемый файл spike, произойдет сбой сегментации. Если я не привожу никаких аргументов, я получаю печать "использование", но больше ничего не работает.

$ 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 ответ

Я полагаю, что из-за сбоя riscv-isa-sim появилось сообщение "core dumped". Поскольку я добавил одну из моих собственных инструкций, и ее формат был неправильным, при использовании этой инструкции появилось сообщение "core dumped". Я полагаю, что вам не нужно устанавливать их один за другим. Вы можете установить всю цепочку инструментов, клонируя с https://github.com/riscv/riscv-tools

Другие вопросы по тегам