Loading FPGA from Flash
Hello,
Thank you for taking time to read my post.
I am working with a Cyclone 10 GX using micron MT25QU01G flash memory. I am able to generate a programming file (.JIC) and load the flash memory. When I power cycle the chassis the fpga loads from the flash and appears to run fine.
I am also generating a hexout file. Using this as my reference on how to interpret the records in the hexout file, I am able to write the hexout contents to the flash memory. When I power cycle the fpga, the fpga hangs (is unresponsive, similar to how it behaves before ever being programmed with a JIC/SOF).
Am I correct that writing the contents of the hexout to the flash should be the same as loading a JIC?
Is there anything special that I need to do (such as add a pointer in the first address in flash)?
I am able to readback the flash memory and compare it to the contents of the hexout file and the checksum values to match so I am fairly confident that I am writing the flash chip correctly.
Again, thank you so much for reading this and helping me.
Best Regards.
Thank you for your help. I certainly will need the 'remote update ip' as this will help me reconfigure the fpga without power cycling the entire board. Thank you for sharing.
It turns out that there is a difference between EPCS and EPCQ flash memories . EPCS can accept the hexout file which is produced during compilation. However, the EPCQ will not work with the hexout directly loaded to flash (bug with quartus?).
The work around is to generate a JIC file, and while doing this, check the box for generating a .RPD file. This .RPD will need to be loaded to flash and will work for EPCQ. The .RPD is not in an 'intel hex' format. Fortunately, there is a python project which allows one to convert from the RPD to what we will call a 'hexout' format (shown below for future readers):
<<< python code >>>
from intelhex import IntelHex
ih = IntelHex()
ih.loadbin(filename)
ih.write_hex_file('test.hex',byte_count=128)<<<end python code>>>
I am not sure why the hexout file varies from the rpd, maybe someone from intel can comment?
Best Regards