Установка Spike и QEMU » History » Version 5
Egor Zheliba, 02/18/2025 05:51 PM
1 | 1 | Egor Zheliba | h1. Установка Spike и QEMU для RISC‑V |
---|---|---|---|
2 | |||
3 | В этом примере для работы с тестовым будут использоваться два RISC‑V симулятора: Spike и QEMU. |
||
4 | Ниже описано, как установить оба инструмента в Ubuntu/Debian (включая WSL). |
||
5 | |||
6 | h3. Установка QEMU с поддержкой RISC‑V |
||
7 | |||
8 | 1. Убедитесь, что ваша система обновлена: |
||
9 | <pre> |
||
10 | sudo apt update |
||
11 | </pre> |
||
12 | |||
13 | 2. Установите пакет QEMU (обычно включает поддержку RISC‑V): |
||
14 | <pre> |
||
15 | sudo apt install qemu-system qemu-system-riscv64 |
||
16 | </pre> |
||
17 | Проверьте, что бинарный файл доступен: |
||
18 | <pre> |
||
19 | which qemu-system-riscv64 |
||
20 | </pre> |
||
21 | |||
22 | Если команда возвращает путь вида */usr/bin/qemu-system-riscv64* , значит QEMU для RISC‑V установлен успешно. |
||
23 | |||
24 | h3. Установка Spike (RISC‑V ISA Simulator) |
||
25 | |||
26 | Spike может отсутствовать в пакетных репозиториях, поэтому его обычно собирают из исходного кода: |
||
27 | |||
28 | 1. Установите зависимости: |
||
29 | <pre> |
||
30 | sudo apt update |
||
31 | sudo apt install autoconf automake autotools-dev libtool pkg-config libglib2.0-dev device-tree-compiler |
||
32 | </pre> |
||
33 | |||
34 | 2. Склонируйте репозиторий Spike: |
||
35 | <pre> |
||
36 | git clone https://github.com/riscv/riscv-isa-sim.git |
||
37 | </pre> |
||
38 | |||
39 | 3. Перейдите в директорию проекта и создайте папку сборки: |
||
40 | <pre> |
||
41 | cd riscv-isa-sim |
||
42 | mkdir build && cd build |
||
43 | </pre> |
||
44 | |||
45 | 4. Запустите конфигурацию с указанием префикса установки: |
||
46 | <pre> |
||
47 | ../configure --prefix=/usr/local |
||
48 | </pre> |
||
49 | При успехе не будет ошибок об отсутствии необходимых пакетов. |
||
50 | |||
51 | 5. Скомпилируйте и установите Spike: |
||
52 | <pre> |
||
53 | make -j$(nproc) |
||
54 | sudo make install |
||
55 | </pre> |
||
56 | |||
57 | 6. Проверьте, что Spike доступен: |
||
58 | <pre> |
||
59 | which spike |
||
60 | </pre> |
||
61 | Если в выводе указан путь вроде */usr/local/bin/spike* , значит сборка выполнена успешно. |
||
62 | |||
63 | 2 | Egor Zheliba | h2. Получение и сравнение трасс от Spike и QEMU на тестовом наборе. |
64 | 3 | Egor Zheliba | |
65 | В корневой директории *fuzzrv* необходимо выполнить следующие скрипты: |
||
66 | 4 | Egor Zheliba | |
67 | 1. Получение трасс для Spike и QEMU |
||
68 | <pre> |
||
69 | 5 | Egor Zheliba | python3 projects/spike/scripts/get_traces.py |
70 | 1 | Egor Zheliba | </pre> |
71 | 5 | Egor Zheliba | Скрипт сгенерирует две директории и положит в них трассы — qemu_traces и spike_traces, сами директории будут располагаться в *fuzzrv/build/out/spike/new_coverage* |
72 | |||
73 | 2. Сравнение трасс Spike и QEMU |
||
74 | <pre> |
||
75 | python3 projects/spike/scripts/compare_traces.py |
||
76 | </pre> |
||
77 | Скрипт выведет лог сравнения каждой трассы, в случае расхождений, строка и файл где возникла ошибка будут подсвечены красным |