Chapter 5
Boot Process
This chapter describes the operation of FE310-G000 during the boot process.
5.1
Non-volatile Code Options
There are four possible sources of non-volatile memory from which code can be initially fetched
on a FE310-G000 system: Gate ROM, Mask ROM, OTP, and off-chip SPI flash.
5.1.1
Gate ROM (GROM)
The debug ROM is built from gate ROM and contains code for the debug interrupt handler that
jumps to debug RAM, as well as code to wait for a debug interrupt.
The default value of
mtvec
, the trap vector base address, is set to
0x0
. Fetches from address
0x0
are hardwired to return 0, which is an illegal instruction, causing another trap, hence caus-
ing the processor to spin in a trap loop on any fetch to address 0.
The trap loop is used to hold the processor when waiting for the debugger to download code to
be executed. The debugger can issue a debug interrupt, which causes the processor to jump to
the debug interrupt handler in debug ROM, which in turn jumps to the code written to the debug
RAM. The debug RAM code can be used to bootstrap download of further code.
5.1.2
Mask ROM (MROM)
MROM is fixed at design time, and is located on the peripheral bus on FE310-G000, but instruc-
tions fetched from MROM are cached by the core’s I-cache. The MROM contains an instruction
at address
0x1000
which jumps to the OTP start address at
0x2_0000
.
SiFive FE310-G000 Manual: v3p2
© SiFive, Inc.
Page 20