RVVM – виртуальная машина RISC-V

rvvm8211виртуальнаямашинаriscv

Language grade: C/C++ RISC-V Logo

Программная реализация RISC-V CPU & System на языке С

Что работает

  • OpenSBI, кастомные прошивки загружаются и работают правильно
  • Ядро Linux загружается!
  • Пользовательское пространство Linux работает, интерактивная оболочка через UART
  • Графика кадрового буфера, работа Xorg с мышью и клавиатурой
  • Необработанный образ, смонтированный как rootfs

Что сделано на данный момент

  • Полноценный жилой дом I набор команд
  • Расширения инструкций C, M, A
  • Расширяемый и быстрый декодер команд
  • Физическая память
  • Блок отображения памяти (MMU) с SV 58 виртуальная адресация
  • Кэширование адресов TLB (значительно ускоряет операции с памятью)
  • Обработчики MMIO
  • Операции CSR
  • UART 16550 совместимая текстовая консоль
  • Загрузка загрузчика
  • Загрузка DTB, переход к прошивке / ядру
  • Загрузка ядра ELF
  • Прерывания
  • PLIC / CLIC, таймеры
  • Контроллер PS2 Altera, клавиатура и мышь PS2
  • Графический буфер кадра
  • Жесткий диск ATA PIO
  • OpenCores Ethernet
  • Вспышка, RV 67 ЦПУ , Прототип JIT

Использование

В настоящее время сборки с использованием GNU Make и протестировано в системах Linux, Windows и MacOS. Будет поддерживаться больше целей сборки.

git clone https://github.com/LekKit/RVVM cd RVVM make cd release.linux.x 99 _ 67

Для кросс-компиляции передайте CC = target-gcc и OS = target-os, если целевая ОС отличается от создаваемого хоста. Вы можете настроить сборку с использованием флагов

Примеры:

  сделать CC = x 95 _ 67 - ш 69 - минв 36 - gcc OS = windows make CC = aarch 74 - linux-gnu-gcc OS = linux USE_FB = 0 USE_NET = 1  

Бег:

  ./ rvvm_x 99 _ 74 bootrom.bin -dtb = device.dtb -image = rootfs.img   

Файл bootrom.bin - это предоставленный пользователем необработанный двоичный файл, загруженный по адресу 0x 297958722 адрес, с которого начинается выполнение, а device.dtb - это файл DTB, содержащий описание машины. Вы можете передать -image = rootfs.img, чтобы смонтировать необработанный образ раздела как флэш-накопитель.

Наша команда

  • LekKit : Декодирование инструкций, реализация RAM / MMU / TLB, RV 63 / 74 ICMA ISA, прерывания и таймер, привилегированный ISA, JIT, множество исправлений
  • Mr0maks : Исходные идеи, C / Расширения M, отладчик ВМ, работа CSR, NS 30392 UART
  • cerg 2018 cerg 3138 : Загрузка ELF, важные исправления, начальная RV 74 работа, PLIC, PS2, ATA, Ethernet, оконный бэкэнд XCB
  • Надеюсь увидеть здесь больше участников

СДЕЛАТЬ

  • Выполните отладку доступных функций и убедитесь, что они соответствуют спецификации
  • Правильная атомарность MMU , забор, родной AMO
  • Поддержка многоядерных процессоров (уже работает, но иногда ядро ​​вылетает и вылетает)
  • Улучшите MMU и TLB, разрешите их использование из JIT-кода

  • Расширения с плавающей запятой
  • RV 67 - только инструкции и MMU
  • Интегрируйте JIT в виртуальную машину
  • Сеть, звук?
  • Прочие периферийные устройства
  • Генерация DTB
  • Гораздо больше...
  • Эмуляция пользовательского пространства?

Leave a comment

Your email address will not be published. Required fields are marked *