zlib License

项目介绍

BeRo1985/pasriscvemu 是一个托管在 GitHub 上的开源项目,主要使用 Pascal 编写,采用 zlib License 许可证,目前获得 5 个 Star、1 次 Fork。

仓库全名
BeRo1985/pasriscvemu
开源许可证
zlib License
Star 数
5
Fork 数
1

README 摘要

[!IMPORTANT] The primary repository has moved to git.rosseaux.net/BeRo1985/pasriscvemu. This GitHub repository is kept up-to-date via push mirroring. pasriscvemu This is the PasVulkan-based emulator frontend for the PasRISCV RV64GC RISCV-V emulator. Getting Started Prerequisites You need to have the following installed: FreePascal (unstable dev version) + Lazarus or a recent version of Embarcadero Delphi PasVulkan…

完整内容见 GitHub 原始 README 或本页 。

常见问题

pasriscvemu 用什么语言开发?

主要使用 Pascal 编写,采用 zlib License 许可证,目前有 5 个 Star。

pasriscvemu 可以免费商用吗?

仓库标注的许可证为 zlib License,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 pasriscvemu 的源码?

可以直接克隆仓库:git clone https://github.com/BeRo1985/pasriscvemu.git;安装与运行步骤见仓库 README。

pasriscvemu 最近还在维护吗?

仓库最近一次更新为 5月10日,当前没有未关闭的 Issue;Star 数为 5,可作为社区活跃度的参考。

关于

The PasVulkan-based emulator frontend for the PasRISCV RV64GC RISC-V emulator

描述取自 GitHub 官方 API,中文内容由 GitRead 中文社区 编辑团队整理。

README

[!IMPORTANT] The primary repository has moved to git.rosseaux.net/BeRo1985/pasriscvemu. This GitHub repository is kept up-to-date via push mirroring.

pasriscvemu

This is the PasVulkan-based emulator frontend for the PasRISCV RV64GC RISCV-V emulator.

Getting Started

Prerequisites

You need to have the following installed:

  • FreePascal (unstable dev version) + Lazarus or a recent version of Embarcadero Delphi
  • PasVulkan with all its dependencies and submodules (which includes PasRISCV and PasTerm already)

Setup

Clone this pasriscemu repository with all submodules into the projects directory of the PasVulkan repository:

cd /path/to/pasvulkan/projects
git clone --recurse-submodules https://github.com/BeRo1985/pasriscvemu.git

But not other way around, because the pasriscvemu repository is dependent on the PasVulkan repository, because of relative paths in the project files. PasVulkan itself has already submodules for PasRISCV and PasTerm, which are also needed by pasriscvemu, where PasRISCV is the actual RISCV-V emulator core and PasTerm is the terminal emulator for the serial console when the framebuffer isn’t currently active.

Building

Just open the pasriscvemu.lpi in Lazarus or ‘pasriscvemu.dproj’ in Delphi and compile it. The executable will be in the bin directory.

Running

Just run the pasriscvemu executable in the bin directory. Otherwise look below for the command line options.

Command Line Options

Command Line Default Description
-gdb [port] Enable GDB remote debugging on specified port
-debug Enable local debugging
-no-debug Disable local debugging
-smp [cpucores] 2 Number of CPU cores to emulate
-memory [ram] 2GiB Amount of RAM to emulate
-bios [filename] fw_jump.bin Filename of the BIOS firmware image
-kernel [filename] kernel.bin Filename of the kernel image
-no-kernel Do not load a kernel image
-initrd [filename] Filename of the initial ramdisk image
-no-initrd Do not load an initial ramdisk image
-virtioblock [filename] Filename of the VirtIO block device image
-no-virtioblock Do not load a VirtIO block device image
-nvme [filename] Filename of the NVMe block device image
-no-nvme Do not load a NVMe block device image
-bootargs [bootparams] root=/dev/mem rw earlyprintk console=$LINUXUART$ console=tty0 earlycon=sbi Boot arguments for the kernel
-aia Enable Advanced Interrupt Architecture (AIA)
-no-aia Disable Advanced Interrupt Architecture (AIA)
-display [mode] simplefb Display mode: simplefb, virtiogpu, bochsvbe, or cirrus
-rtc [mode] goldfish RTC mode: goldfish, ds1742, ds1307, or virtio
-i2c [mode] designware I2C mode: opencores (or oc), designware (or dw)
-soundmode [mode] virtio Sound mode: virtio, fm801, cmi8738 (also cmipci, cmi), hda
-natnet Use user mode networking backend for VirtIO Net (default, no root/TAP needed). Aliases: -nat, -usernet, -user, -usermodenet, -usermode
-tunnet Use TUN/TAP networking backend for VirtIO Net (requires a TUN/TAP device)
-nonet Use isolated network mode: guest gets DHCP/ARP/ICMP locally, but no external access
-no-ipv6 Disable IPv6 user mode networking (ICMPv6/UDPv6/TCPv6 and router advertisements are suppressed)
-ipv6 Enable IPv6 user mode networking (default)
-hostfwd [spec] Add a user mode networking port forward (requires -usernet/-natnet). Format: tcp|udp::hostport-[guestip]:guestport, e.g. -hostfwd tcp::2222-:22. Can be repeated.
-centered Center the monitor on the screen (default)
-no-centered Do not center the monitor on the screen (default)
-centertonearestpixel Center the monitor to the nearest pixel (no fractional offset)
-no-centertonearestpixel Do not center the monitor to the nearest pixel (default)
-scaled Scale the monitor to fit the window (default)
-no-scaled Do not scale the monitor to fit the window
-scaletonearest Scale the monitor to fit the window in integer steps
-no-scaletonearest Do not scale the monitor to fit the window in integer steps (default)
-strictcompliantfpu Enable strict IEEE 754-compliant software FPU (slower, but fully spec-correct)
-no-strictcompliantfpu Disable strict IEEE 754-compliant software FPU, use host FPU (default)
-virgl Enable VirtIO-GPU 3D/VirGL acceleration (requires libvirglrenderer; needs -display virtiogpu)
-no-virgl Disable VirtIO-GPU 3D/VirGL acceleration (default)
-jit Enable just-in-time compiler (default)
-no-jit Disable just-in-time compiler
-console-output Serial console output
-no-console-output No serial console output
-console-port [port] Serial console TCP port

Keys

CTRL+F12 toggles between the framebuffer and the serial console.

FAQ

Why is the emulator not a part of the PasRISCV repository itself?

Because pasriscvemu is just a PasVulkan-based frontend for the PasRISCV emulator core, which is a standalone library and can be used in other projects as well.

Why is the emulator not a part of the PasVulkan repository itself?

Because pasriscvemu is a separate project and not directly related to Vulkan, but it uses PasVulkan as a frontend for the framebuffer output. But PasVulkan maybe get a dependency on PasRISCV in the future, for example for cross-platform “scripting” purposes and so on, but not the other way around. So PasVulkan has already submodules for PasRISCV and PasTerm, which are also needed by pasriscvemu.

  • PasVulkan - PasVulkan itself
  • PasRISCV - The RISCV-V emulator core
  • PasTerm - The terminal emulator for the serial console
  • PasMP - A parallel-processing/multi-processing library for Object Pascal
  • RNL - RNL - Realtime Network Library - The opensource reliable UDP network library, including cryptography, which is used by PasRISCV for various purposes
  • And more at here

Support

Creating is my passion, and with your support, I can keep it alive. Support my work and help me continue innovating. Every contribution makes a difference: You can donate and support me here. Thank you!

License

This project is licensed under the zlib License - see the LICENSE file for details.

评论

暂无评论