Difference between revisions of "Board:emulation/spike-riscv"

From coreboot
Jump to navigation Jump to search
Line 20: Line 20:
==Building coreboot without a payload==
==Building coreboot without a payload==

* TODO: patch patch patch
* You need the following patches:
** [https://review.coreboot.org/#/c/15290/| 15290: change all eret instructions to mret]
** [https://review.coreboot.org/#/c/15289/| 15289: Remove HTIF and SBI related code]
** [https://review.coreboot.org/#/c/15288/| 15288: Provide a tohost symbol so Spike doesn't hang]
** [https://review.coreboot.org/#/c/15284/| 15284: Move CBMEM into RAM]
* run <code>make menuconfig</code> and select <tt>Emulation</tt>/<tt>SPIKE ucb riscv</tt> from the Mainboard menu
* run <code>make menuconfig</code> and select <tt>Emulation</tt>/<tt>SPIKE ucb riscv</tt> from the Mainboard menu
* run <code>make</code>
* run <code>make</code>

Revision as of 01:08, 30 June 2016

SPIKE is RISC-V's primary emulator. The Spike support in coreboot is mostly being developed by jn as part of his GSoC 2016.

Build instructions

These instructions may easily become out of date as coreboot or RISC-V moves forward. If that happens, please complain on the discussion page or IRC (or just fix it).

Building the toolchain

  • clone the coreboot git repository
  • download and apply this patch and this patch.
  • run make crossgcc-riscv and a have a cup of $BEVERAGE

Building spike

Building coreboot without a payload

For general spike usage, look at its GitHub page.

Building Linux

  • git clone https://github.com/riscv/riscv-linux
  • download linux 4.6.x from kernel.org
  • cd linux-4.6.x/arch; ln -s ../../riscv-linux/arch/riscv .
  • make ARCH=riscv defconfig
  • make ARCH=riscv menuconfig, configure General setup/Cross-compiler tool prefix
  • make ARCH=riscv

Building bbl

  • TODO: libc stuff
  • TODO: payload linker script foo
  • TODO: patching the console output handler
  • mkdir build
  • cd build; ../configure --with-payload=path/to/vmlinux CC=path/to/riscv64-unknown-elf-gcc LD=path/to/riscv64-unknown-elf-ld
  • make

Building coreboot with bbl

  • apply the same coreboot patches as above, and select Emulation/Spike ucb riscv
  • in the Payload menu of menuconfig, select "ELF Payload" and enter the path to the bbl binary
  • run make and the make-spike-elf.sh script as described above

boot log