Как построить шип для набора команд 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