FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
The Intel sign-in experience has changed to support enhanced security controls. If you sign in, click here for more information.
5539 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


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