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
I'm not sure what you're trying to do, but a .hex file is normally used to initialize the contents of RAMs or ROMs in the design, not as an overall programming file for the device. It gets pointed to by a parameter or a synthesis attribute and then gets included in the programming file generated by the Assembler at the end of the compilation process (.sof or .jic in your case). What are you trying to accomplish?
- jlats24 years ago
Occasional Contributor
Thank you so much for your reply.
Perhaps I have some of my terminology incorrect, but the overall goal is to remotely update the fpga configuration data over the network. When I generate a JIC file and program my C10GX with a byteblaster, I understand that this is actually loading the 'configuration data' to a flash chip. Whenever I power cycle my fpga, the 'configuration data' from this flash chip will configure the fpga. My goal is to be able to update the 'configuration data' on this flash chip over the network (not with a byte blaster). This will allow me to 'remotely update' the firmware. My assumption was that the generated hexout is the 'configuration data.'
Is my goal clearly described above?
Assuming that the records in the hexout file are correctly written to the flash memory, should this be sufficient in updating the configuration data so that during the next power cycle the new contents of the flash will configure the fpga?
Again, thank you for all of your help.