Skip to content

Support programming Max10 10M50D with .pof - #689

Draft
Feyorsh wants to merge 1 commit into
trabucayre:masterfrom
Feyorsh:master
Draft

Support programming Max10 10M50D with .pof#689
Feyorsh wants to merge 1 commit into
trabucayre:masterfrom
Feyorsh:master

Conversation

@Feyorsh

@Feyorsh Feyorsh commented Jul 8, 2026

Copy link
Copy Markdown

I'm not 100% confident I got all these constants correct, but I sourced DSM/UFM/CFM addresses and sizes from this svf2isc script, and to get done_bit_addr I cross referenced the FLOW_PROGRAM_DONEBIT from different MAX10 BSDL files and found the same address as the 10M25SA (but I don't know how this value was originally obtained---for documentation purposes it would be helpful if someone could comment in this PR about how this value is found).

@Feyorsh

Feyorsh commented Jul 10, 2026

Copy link
Copy Markdown
Author

Actually, I haven't managed to get this working yet, but I'm pretty sure all the values in max10_memory_map are correct strictly from static analysis (I have not snooped what USB-BlasterII is doing using Wireshark yet).

  • .check_addr0: unused
  • dsm_addr, dsm_len: dsm_addr is presumably always 0, and the svf2isc script explicitly states "Set DSM size to 512 as SVF only output 512 (Orignal 2048)"
  • ufm_addr, ufm_len: ufm_addr is presumably just dsm_addr + dsm_len, and ufm_len is taken from the same TCL script mentioned above
  • cfm_addr, cfm_len: Same analysis as ufm
  • sectors_erase_addr: Didn't really understand this one, just copied from the other boards
  • done_bit_addr, pgm_success_addr: I generated an .svf in Quartus and noticed there are two sections labeled "Max 10 DSM Verify"; each mentions the magic number 0x6C48A50F, and one has 0x440000 and the other has 0x540000 in some command. Doing the opposite of max10_addr_shift yields 0x11 and 0x15 as expected hex(int('{:08b}'.format(0x540000 << 9)[::-1], 2)) == 0x15

Is there anything else that might need to be changed to get this working? I noticed the 10M50/40 are explicitly differentiated in the Altera docs, so I wonder if an assumption that holds for 08/16/25 doesn't hold for more powerful MAX10s.

@Feyorsh
Feyorsh marked this pull request as draft July 11, 2026 01:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant