mirror of
				https://github.com/riscv-software-src/opensbi
				synced 2025-10-30 19:48:23 +00:00 
			
		
		
		
	This commit makes Spike usable as QEMU (in fact, those are based on QEMU examples). Signed-off-by: Tsukasa OI <research_trasio@irq.a4lg.com> Reviewed-by: Anup Patel <anup.patel@wdc.com>
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| Spike Simulator Platform
 | |
| ========================
 | |
| 
 | |
| The **Spike** is a RISC-V ISA simulator which implements a functional model
 | |
| of one or more RISC-V harts. The **Spike** compatible virtual platform is
 | |
| also available on QEMU. In fact, we can use same OpenSBI firmware binaries
 | |
| on **Spike** simulator and QEMU Spike machine.
 | |
| 
 | |
| For more details, refer [Spike on GitHub](https://github.com/riscv/riscv-isa-sim)
 | |
| 
 | |
| To build the platform-specific library and firmware images, provide the
 | |
| *PLATFORM=generic* parameter to the top level `make` command.
 | |
| 
 | |
| Platform Options
 | |
| ----------------
 | |
| 
 | |
| The *Spike* platform does not have any platform-specific options.
 | |
| 
 | |
| Execution on Spike Simulator
 | |
| ----------------------------
 | |
| 
 | |
| **No Payload Case**
 | |
| 
 | |
| Build:
 | |
| ```
 | |
| make PLATFORM=generic
 | |
| ```
 | |
| 
 | |
| Run:
 | |
| ```
 | |
| spike build/platform/generic/firmware/fw_payload.elf
 | |
| ```
 | |
| 
 | |
| **Linux Kernel Payload**
 | |
| 
 | |
| Note: We assume that the Linux kernel is compiled using
 | |
| *arch/riscv/configs/defconfig*.
 | |
| 
 | |
| Build:
 | |
| ```
 | |
| make PLATFORM=generic FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
 | |
| ```
 | |
| 
 | |
| Run:
 | |
| ```
 | |
| spike -m256 \
 | |
| 	--initrd <path_to_cpio_ramdisk> \
 | |
| 	--bootargs 'root=/dev/ram rw console=hvc0 earlycon=sbi' \
 | |
| 	build/platform/generic/firmware/fw_payload.elf
 | |
| ```
 | |
| or
 | |
| ```
 | |
| spike -m256 \
 | |
| 	--kernel <linux_build_directory>/arch/riscv/boot/Image \
 | |
| 	--initrd <path_to_cpio_ramdisk> \
 | |
| 	--bootargs 'root=/dev/ram rw console=hvc0 earlycon=sbi' \
 | |
| 	build/platform/generic/firmware/fw_jump.elf
 | |
| ```
 | |
| 
 | |
| Execution on QEMU RISC-V 64-bit
 | |
| -------------------------------
 | |
| 
 | |
| **No Payload Case**
 | |
| 
 | |
| Build:
 | |
| ```
 | |
| make PLATFORM=generic
 | |
| ```
 | |
| 
 | |
| Run:
 | |
| ```
 | |
| qemu-system-riscv64 -M spike -m 256M -nographic \
 | |
| 	-bios build/platform/generic/firmware/fw_payload.elf
 | |
| ```
 | |
| 
 | |
| **Linux Kernel Payload**
 | |
| 
 | |
| Note: We assume that the Linux kernel is compiled using
 | |
| *arch/riscv/configs/defconfig*.
 | |
| 
 | |
| Build:
 | |
| ```
 | |
| make PLATFORM=generic FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
 | |
| ```
 | |
| 
 | |
| Run:
 | |
| ```
 | |
| qemu-system-riscv64 -M spike -m 256M -nographic \
 | |
| 	-bios build/platform/generic/firmware/fw_payload.elf \
 | |
| 	-initrd <path_to_cpio_ramdisk> \
 | |
| 	-append "root=/dev/ram rw console=hvc0 earlycon=sbi"
 | |
| ```
 | |
| or
 | |
| ```
 | |
| qemu-system-riscv64 -M spike -m 256M -nographic \
 | |
| 	-bios build/platform/generic/firmware/fw_jump.elf \
 | |
| 	-kernel <linux_build_directory>/arch/riscv/boot/Image \
 | |
| 	-initrd <path_to_cpio_ramdisk> \
 | |
| 	-append "root=/dev/ram rw console=hvc0 earlycon=sbi"
 | |
| ```
 |