FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
All support for Intel NUC 7 - 13 systems has transitioned to ASUS. Read latest update.
5844 Discussions

Write Internal UFM Flas Memory of MAX10 Using Nios Command Shell


hi everyone,,

I have to implement a way to write Flash data of a max 10 without opening Quartus. In particular I need to overwrite only the ufm part of the internal flash (UFM) of MAX10 through JTAG using USB Blaster.

I can already do this by first creating sof file and hex data file and then using the Quartus 'Convert Programming Files' feature. This way I can create the final pof file.

Then through 'Programmer' I write only the UFM part. What I would like to do is generate the pof file without opening Quartus. I thought I was using Nios Command Shell, but I can't find the right commands, can anyone tell me if it's possible and how to do it?

Thanks for your help.

0 Kudos
2 Replies

Use this executable quartus_cpf in command line which equivalent to "Convert Programming Files" in GUI. Refer to https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug-qps-scripting.pdf, 1.8.7 pg14


=> quartus_cpf --convert --device=EPCS64 <file name>.sof <file name>.pof

0 Kudos

thanks Cng,

but that was not what I meant.

However I have the answer, I hope it is useful to everyone.

To generate the pof file you need to use the command:

quartus_cpf -c file.cof


the cof file is an xml file that is generated by Quartus Programmer.

Report below the contents of the cof file:


<? xml version = "1.0" encoding = "US-ASCII" standalone = "yes"?> <Cof> <Output_filename> C: / ____ _________ filepath. Pof </ output_filename> <N_pages> 1 </ n_pages> <Width> 1 </ width> <Mode> 14 </ mode> <Sof_data> <User_name> PAGE_0 </ user_name> <Page_flags> 1 </ page_flags> <Bit 0> <Sof_filename> C: / ____ _________ filepath. Sof <compress_bitstream> 1 </ compress_bitstream> </ sof_filename> </ Bit0> </ Sof_data> <Version> 10 </ version> <Create_cvp_file> 0 </ create_cvp_file> <Create_hps_iocsr> 0 </ create_hps_iocsr> <Auto_create_rpd> 0 </ auto_create_rpd> <Rpd_little_endian> 1 </ rpd_little_endian> <Options> <Map_file> 0 </ map_file> </ Option> <MAX10_device_options> <Por> 0 </ por> <Io_pullup> 1 </ io_pullup> <Config_from_cfm0_only> 0 </ config_from_cfm0_only> <Isp_source> 0 </ isp_source> <Verify_protect> 0 </ verify_protect> <Epof> 0 </ epof> <Ufm_source> 2 </ ufm_source> <Ufm_filepath> C: / ____ _________ filepath. HEX </ ufm_filepath> </ MAX10_device_options> <Advanced_options> <Ignore_epcs_id_check> 2 </ ignore_epcs_id_check> <Ignore_condone_check> 2 </ ignore_condone_check> <Plc_adjustment> 0 </ plc_adjustment> <Post_chain_bitstream_pad_bytes> -1 </ post_chain_bitstream_pad_bytes> <Post_device_bitstream_pad_bytes> -1 </ post_device_bitstream_pad_bytes> <Bitslice_pre_padding> 1 </ bitslice_pre_padding> </ Advanced_options> </ Cof>


Once the pof file has been generated, it is possible to program the device with the command:

quartus_pgm -c


0 Kudos