Forum Discussion
Loading FPGA from Flash
- 4 years ago
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
Something else that I noticed and thought it might be worth sharing:
Whenever I generate a JIC file, I can also generate a rpd file. After programming the the JIC and power cycling the fpga, I can read the flash memory and see that the values loaded into the flash memory seem to match the rpd. The rpd is raw data and does not include the same record type information that the hexout file contains (which makes it difficult to compare the two). However the data contained in the .rpd and the .hexout appear to be similar with a few differences (some bytes are different, and the rpd appears to have ff's shifted into the first 30ish bytes).
Just adding to the above discussion.