- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have a bootloader in CFM0 sector. I feed a rpd file through serial, after uploading the file to the FPGA flash it reports success. But when I switch to CFM1 it fails and goes back to CFM0.
I suspect my rpd file not good
I check Big endian - so I shouldn't swap bytes in the code.
But do I need to check this option - Use secondary image ISP data as default setting when available ?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
May I know if you are using dual boot in your Quartus design? Do you program dual image the 1st time you program the flash before you update the CFM1?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have two projects. Boot project and Main project. Both configured as dual boot. So in the Boot project I choose the first SOF Page of the Boot project and the second SOF page of the Main project.
I burn generated POF and it works - I can switch between CFM0 (Boot) and CFM1 (Main) with BOOT_SEL pin.
Now I prepare the rpd file - in the Main project I choose both SOF Pages of the Main project and get - ''output_file_main_cfm0_auto.rpd'' and ''output_file_main_cfm1_auto.rpd''.
Now I feed the ''output_file_main_cfm0_auto.rpd'' to the Boot located in CFM0 - it burns but the Main project no good - it switches to CFM0 when I choose CFM1 with BOOT_SEL pin.
As I see in the Flash Update module
SECTOR3_START_ADDR => 16384,
SECTOR3_END_ADDR => 114687,
SECTOR4_START_ADDR => 114688,
SECTOR4_END_ADDR => 188415,
So I start at 16384 address and end at 188415 address.
I burned an rpd file and did dump back - only first 100 addresses
Looks like the same content. So I think my rpd file not good.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I see two potential problems;
1) Endian swapping. After configuring four bytes to write a 32 bit word into CFM1, you need to do a 32-bit "endian swap". Just checking the "Big Endian" box when you make the rpd doesn't cut it.
2) You should be feeding "output_file_main_cfm1_auto.rpd" to the Boot loader located in CFM0. After all, you want it to end up in CFM1, right?
I lost a lot of hair trying to make all of this work, but finally got there.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks a lot! Indeed I should feed - output_file_boot_cfm1_auto.rpd - this is the actual main project image.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
You will need to always check on the "On Chip Flash" IP to make sure that the sector you are programming is the correct CFM location.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Another question. A cfm1.rpd file has 672 kilo byte size. But the actual program much smaller. How can I know the actual program size? I don't want to stuff the CFM1 page with dummy FF's.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
There is no way to determine the full compress file as it will depending on your Quartus design and how much it can be compress.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
But why Quartus can not tell the actual size after the rpd file creation - it's all known parameters to the environment.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Please refer to https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/max-10/m10_datasheet.pdf Table 52 for the binary size.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page