mirror of
				https://github.com/riscv-software-src/opensbi
				synced 2025-11-04 05:50:22 +00:00 
			
		
		
		
	This patch adds documentation to build and run OpenSBI on Spike simulator and QEMU Spike machine. Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
		
			
				
	
	
		
			90 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.0 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=spike* 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=spike
 | 
						|
```
 | 
						|
 | 
						|
Run:
 | 
						|
```
 | 
						|
spike build/platform/spike/firmware/fw_payload.elf
 | 
						|
```
 | 
						|
 | 
						|
**Linux Kernel Payload**
 | 
						|
 | 
						|
Note: We assume that the Linux kernel is compiled using
 | 
						|
*arch/riscv/configs/defconfig*.
 | 
						|
 | 
						|
Build:
 | 
						|
```
 | 
						|
make PLATFORM=spike FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
 | 
						|
```
 | 
						|
 | 
						|
Run:
 | 
						|
```
 | 
						|
spike --initrd <path_to_cpio_ramdisk> build/platform/spike/firmware/fw_payload.elf
 | 
						|
```
 | 
						|
 | 
						|
Execution on QEMU RISC-V 64-bit
 | 
						|
-------------------------------
 | 
						|
 | 
						|
**No Payload Case**
 | 
						|
 | 
						|
Build:
 | 
						|
```
 | 
						|
make PLATFORM=spike
 | 
						|
```
 | 
						|
 | 
						|
Run:
 | 
						|
```
 | 
						|
qemu-system-riscv64 -M spike -m 256M -nographic \
 | 
						|
	-kernel build/platform/spike/firmware/fw_payload.elf
 | 
						|
```
 | 
						|
 | 
						|
**Linux Kernel Payload**
 | 
						|
 | 
						|
Note: We assume that the Linux kernel is compiled using
 | 
						|
*arch/riscv/configs/defconfig*.
 | 
						|
 | 
						|
Build:
 | 
						|
```
 | 
						|
make PLATFORM=spike FW_PAYLOAD_PATH=<linux_build_directory>/arch/riscv/boot/Image
 | 
						|
```
 | 
						|
 | 
						|
Run:
 | 
						|
```
 | 
						|
qemu-system-riscv64 -M spike -m 256M -nographic \
 | 
						|
	-kernel build/platform/spike/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/spike/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"
 | 
						|
```
 |