Установка 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