Backgournd
Существует много документации об использовании QEMU для моделирования системы определенной архитектуры («платформы»). Например, система x86, ARM или RISCV. Первый шаг - настроить QEMU target-list, , например ./configure --target-list=riscv32-softmmu
. Также возможно указать несколько целей в списке целей, но очевидно, что это создает независимую симуляцию для каждой указанной платформы.
Моя цель, однако, состоит в том, чтобы смоделировать систему с смешанными целями : машина x86, на которой также размещен встроенный процессор RISCV через PCI.
Очевидно, мне нужно реализовать устройство QEMU PCI, которое будет размещать устройство RISCV на платформе x86, и у меня есть хорошая идея, как реализовать generi c PCI-устройство . Однако я не уверен в лучшем подходе к симуляции x86 и RISCV вместе в одной симуляции QEMU .
Один из подходов - запустить два экземпляра QEMU (как два отдельных процесса ) и использовать какой-то IP C для связи между x86 и симуляцией RISCV. Другой возможный (?) Подход мог бы заключаться в создании RISCV QEMU как загружаемой библиотеки и загрузке ее из x86 QEMU. Возможно, даже возможно иметь одно приложение QEMU, которое имитирует как x86, так и RISCV? Еще один подход - не использовать QEMU для моделирования устройства RISCV. Я мог бы реализовать устройство QEMU PCI, которое полностью инкапсулирует симуляцию RISCV, такую как tiny-emu , но я бы предпочел использовать QEMU как для x86, так и для RISCV.
Мои вопросы:
- Есть ли какие-нибудь рекомендации или примеры для проекта QEMU со смешанными целями? Я искал примеры, но нашел только ссылки на использование QEMU в качестве моделирования одной платформы, где сначала вы выбираете, какую платформу вы хотите запустить.
- Каким будет лучший подход для моделирования смешанной платформы в QEMU ? Разделить процессы QEMU с IP C? Или есть способ настроить QEMU таким образом, чтобы он мог имитировать смешанную платформу?