Forum Discussion

raulp's avatar
raulp
Icon for New Member rankNew Member
50 minutes ago

MAX 10: Can an ASx1 RBF be written directly to internal CFM via on-chip flash Avalon-MM?

Hi,

I am implementing an in-system self-update mechanism for an Intel MAX 10 FPGA (10M16SAU169I7G) and I would like to confirm the correct configuration image format for programming the internal CFM through logic running inside the FPGA.

My setup

  • Device: MAX 10 10M16SAU169I7G
  • Current design already boots normally from internal flash
  • Inside the running design, I receive a new FPGA image over UART
  • I split the image into blocks, verify CRC, and then write the data into the internal CFM using the on-chip flash IP Avalon-MM data interface
  • After the transfer is complete, I plan to power-cycle the board so the FPGA boots from the newly written image

What I am currently doing

I generate the update file using quartus_cpf from the .sof:

~.bat
'''
quartus_cpf ^
--option=bitstream_compression=off ^
--configuration_mode=ASx1 ^
-c ^
input.sof ^
output_file_active_serial.rbf
'''

Then I send this .rbf file to the FPGA and write it word-by-word into the internal CFM.

My question

Can a Raw Binary File (.rbf) generated from a MAX 10 .sof with --configuration_mode=ASx1 be written directly into the MAX 10 internal CFM through the on-chip flash Avalon-MM interface, and then be used successfully as a bootable configuration image after power cycle?

Or, stated differently:

  • Is the ASx1 RBF byte layout identical to the internal CFM configuration image layout expected by MAX 10?
  • If not, what is the correct file format / conversion flow for self-updating the internal CFM from user logic?
  • Should I be using RBFPOF, or another file/image format for this purpose?
  • Is there any official Intel example or application note showing the correct way to write a new configuration image into MAX 10 CFM from inside the running FPGA design?

Additional context

I already reviewed:

  • MAX 10 FPGA Configuration User Guide
  • Remote System Upgrade in Intel MAX 10 Devices
  • Using the MAX 10 User Flash Memory

From the documentation, I understand that MAX 10 supports configuration from JTAG and internal flash, and that remote/dual configuration is supported. However, I could not find a clear statement confirming whether an ASx1-generated RBF is the correct binary image to write directly into CFM via Avalon-MM.

My main concern is avoiding a situation where:

  • the UART transfer is correct,
  • the CFM write completes,
  • but the FPGA does not boot afterwards because the file format/layout written into CFM is not the expected one.

If anyone from Intel or anyone who has implemented MAX 10 self-update / remote update can clarify the correct image format and recommended flow, I would appreciate it.

Thank you.

No RepliesBe the first to reply