Project

General

Profile

Actions

Установка Spike и QEMU для RISC‑V

В этом примере для работы с тестовым будут использоваться два RISC‑V симулятора: Spike и QEMU.
Ниже описано, как установить оба инструмента в Ubuntu/Debian (включая WSL).

Установка QEMU с поддержкой RISC‑V

1. Убедитесь, что ваша система обновлена:

sudo apt update

2. Установите пакет QEMU (обычно включает поддержку RISC‑V):

sudo apt install qemu-system qemu-system-riscv64

Проверьте, что бинарный файл доступен:
which qemu-system-riscv64

Если команда возвращает путь вида /usr/bin/qemu-system-riscv64 , значит QEMU для RISC‑V установлен успешно.

Установка Spike (RISC‑V ISA Simulator)

Spike может отсутствовать в пакетных репозиториях, поэтому его обычно собирают из исходного кода:

1. Установите зависимости:

sudo apt update
sudo apt install autoconf automake autotools-dev libtool pkg-config libglib2.0-dev device-tree-compiler

2. Склонируйте репозиторий Spike:

git clone https://github.com/riscv/riscv-isa-sim.git

3. Перейдите в директорию проекта и создайте папку сборки:

cd riscv-isa-sim
mkdir build && cd build

4. Запустите конфигурацию с указанием префикса установки:

../configure --prefix=/usr/local

При успехе не будет ошибок об отсутствии необходимых пакетов.

5. Скомпилируйте и установите Spike:

make -j$(nproc)
sudo make install

6. Проверьте, что Spike доступен:

which spike

Если в выводе указан путь вроде /usr/local/bin/spike , значит сборка выполнена успешно.

Получение и сравнение трасс от Spike и QEMU на тестовом наборе.

В корневой директории fuzzrv необходимо выполнить следующие скрипты:

1. Получение трасс для Spike и QEMU

python3 projects/spike/scripts/get_traces.py 

Скрипт сгенерирует две директории и положит в них трассы — qemu_traces и spike_traces, сами директории будут располагаться в fuzzrv/build/out/spike/new_coverage

2. Сравнение трасс Spike и QEMU

python3 projects/spike/scripts/compare_traces.py

Скрипт выведет лог сравнения каждой трассы. В случае расхождений, строка и файл, где возникла ошибка, будут подсвечены красным

Updated by Egor Zheliba about 1 month ago · 6 revisions