I apologize for what is probably a simple question, but I am having trouble understanding the boot process for the E300 board. I assume that when the board is powered up the EEPROM or OTP or SRAM tells the FPGA to get the program data from the SPI Flash, and I read something about the code being located at 0x20004000.
So as I understand it the basic steps are:
Apply power
FPGA configures itself into a E3 Core Complex from the SPI Flash since the FPGA itself is volatile
The E3 Core then goes to 0x20004000 and looks for a program (say, a “Hello World” program for example)
The program then starts to run
Is that even remotely correct? And what are the specific details I am missing from the process?
I think you’ll find that the program start address is the same as the HiFive1, 0x20400000, not 0x20004000. That is, 4 MB after the start of the SPI, not 16 KB.